Browse Source

系统日志导出

master
wanghongjun 2 days ago
parent
commit
7cf31030e1
  1. 81
      app/Exports/OperationLogExport.php
  2. 14
      app/Http/Controllers/Admin/OperationLogController.php
  3. 40
      resources/lang/zh-CN/log.php

81
app/Exports/OperationLogExport.php

@ -0,0 +1,81 @@
<?php
namespace App\Exports;
use App\Models\AdminMenu;
use App\Models\AdminOperationLog;
use App\Models\AdminUsers;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithHeadings;
class OperationLogExport implements FromArray, WithHeadings
{
public function array(): array
{
$data = [];
$index = 1;
$columns = [
'id',
'user_id',
'action',
'description',
'sub_directory',
'created_at'
];
$actionArr = AdminOperationLog::getActionArr();
AdminOperationLog::all($columns)->each(
function ($item) use (&$data, &$index, $actionArr) {
$username = AdminUsers::getUsername($item['user_id']);
$item['operation_name'] = $username ?? '';
$item['action_str'] = $actionArr[$item['action']] ??
$item['action'];
$description = __('log.' . $item['description']);
if (strpos($description, 'log.') === false) {
$item['description'] = $description;
}
$item['main_directory'] = '';
if ($item['sub_directory']) {
$item['main_directory']
= AdminMenu::getLastParentTitle(
$item['sub_directory']
);
$item['sub_directory'] = AdminMenu::getParentTitle(
$item['sub_directory']
);
} else {
$item['sub_directory'] = '';
}
$data[] = [
'id' => $index,
'created_at' => $item['created_at'],
'operation_name' => $item['operation_name'],
'main_directory' => $item['main_directory'],
'sub_directory' => $item['sub_directory'],
'action' => $item['action'],
'action_str' => $item['action_str'],
'description' => $item['description'],
];
$index += 1;
}
);
return $data;
}
/**
* @return array
*/
public function headings(): array
{
return [
__('exports.global.index'),
__('exports.operation_log.created_at'),
__('exports.operation_log.operation_name'),
__('exports.operation_log.main_directory'),
__('exports.operation_log.sub_directory'),
__('exports.operation_log.action'),
__('exports.operation_log.action_str'),
__('exports.operation_log.description')
];
}
}

14
app/Http/Controllers/Admin/OperationLogController.php

@ -2,6 +2,7 @@
namespace App\Http\Controllers\Admin;
use App\Exports\OperationLogExport;
use App\Http\Controllers\Controller;
use App\Models\AdminMenu;
use App\Models\AdminOperationLog;
@ -12,6 +13,8 @@ use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class OperationLogController extends Controller
{
@ -186,4 +189,15 @@ class OperationLogController extends Controller
);
}
}
/**
* @return BinaryFileResponse
*/
public function export(): BinaryFileResponse
{
return Excel::download(
new OperationLogExport(),
__('exports.operation_log.list') . time() . '.xlsx'
);
}
}

40
resources/lang/zh-CN/log.php

@ -1,31 +1,31 @@
<?php
return [
'login' => '登录平台',
'logout' => '注销',
'config' => [
'login' => '登录平台',
'logout' => '注销',
'config' => [
'update' => '系统配置更新'
],
'admin_floor' => [
'admin_floor' => [
'create' => '创建楼层',
'update' => '更新楼层',
'delete' => '删除楼层',
'region_create' => '创建楼层关联区域',
'region_delete' => '删除角色关联菜单',
],
'role' => [
'role' => [
'create' => '创建角色',
'update' => '更新角色',
'delete' => '删除角色',
'menu_delete' => '删除角色关联菜单',
'menu_create' => '创建角色关联菜单'
],
'translation' => [
'translation' => [
'create' => '创建翻译',
'update' => '更新翻译',
'delete' => '删除翻译'
],
'admin_user' => [
'admin_user' => [
'create' => '创建用户',
'update' => '更新用户',
'delete' => '更新用户',
@ -33,42 +33,52 @@ return [
'role_update' => '更新用户关联角色',
'role_delete' => '删除用户关联角色'
],
'license_plate' => [
'license_plate' => [
'create' => '创建车牌号码',
'update' => '更新车牌号码',
'delete' => '删除车牌号码'
],
'space_attributes' => [
'space_attributes' => [
'create' => '创建车位属性',
'update' => '更新车位属性',
'delete' => '删除车位属性'
],
'space_type' => [
'space_type' => [
'create' => '创建车位类型',
'update' => '更新车位类型',
'delete' => '删除车位类型'
],
'vip_list' => [
'vip_list' => [
'create' => '创建VIP名单',
'update' => '更新VIP名单',
'delete' => '删除VIP名单'
],
'map' => [
'map' => [
'save' => '绘制电子地图保存'
],
'parking_information' => [
'parking_information' => [
'create' => '创建车位资讯',
'delete' => '更新车位资讯',
'clear' => '清除车位资讯'
],
'parking_camera' => [
'parking_camera' => [
'create' => '创建车位相机',
'update' => '更新车位相机',
'delete' => '删除车位相机',
'create_space_camera' => '创建车位控灯相机',
'delete_space_camera' => '删除车位控灯相机'
],
'parking_space' => [
'parking_space' => [
'create' => '创建车位',
],
'parking_pattern' => [
'create' => '创建活动模式',
'update' => '更新活动模式',
'delete' => '删除活动模式'
],
'parking_pattern_space' => [
'create' => '创建活动模式关联车位',
'update' => '更新活动模式关联车位',
'delete' => '删除活动模式关联车位'
]
];

Loading…
Cancel
Save