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. 10
      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'
);
}
}

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

@ -70,5 +70,15 @@ return [
],
'parking_space' => [
'create' => '创建车位',
],
'parking_pattern' => [
'create' => '创建活动模式',
'update' => '更新活动模式',
'delete' => '删除活动模式'
],
'parking_pattern_space' => [
'create' => '创建活动模式关联车位',
'update' => '更新活动模式关联车位',
'delete' => '删除活动模式关联车位'
]
];

Loading…
Cancel
Save