123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace App\Admin\Controllers\System;
- use App\Models\System\AdminOperationLog;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Http\JsonResponse;
- use Dcat\Admin\Layout\Content;
- use Dcat\Admin\Support\Helper;
- use Illuminate\Support\Arr;
- use Dcat\Admin\Widgets\Metrics\Card;
- class AdminLogController
- {
- public function index(Content $content)
- {
- return $content
- ->title('操作日志记录')
- ->description()
- ->body($this->grid());
- }
- protected function grid()
- {
- return new Grid(AdminOperationLog::with('user'), function (Grid $grid) {
- $grid->column('id', 'ID')->sortable();
- $grid->column('user', trans('admin.user'))
- ->display(function ($user) {
- if (! $user) {
- return;
- }
- $user = Helper::array($user);
- return $user['name'] ?? ($user['username'] ?? $user['id']);
- })
- ->link(function () {
- if ($this->user) {
- return admin_url('auth/users/'.$this->user['id']);
- }
- });
- $grid->column('method', trans('admin.method'))
- ->label(AdminOperationLog::$methodColors)
- ->filterByValue();
- $grid->column('path', trans('admin.uri'))->display(function ($v) {
- return "<code>$v</code>";
- })->filterByValue();
- $grid->column('ip', 'IP')->filterByValue();
- $grid->column('input')->display('查看') // 设置按钮名称
- ->expand(function ($v) {
- $input = json_decode($this->input ?? '[]', true);
- if (empty($input)) {
- return;
- }
- $input = Arr::except($input, ['_pjax', '_token', '_method', '_previous_']);
- if (empty($input)) {
- return;
- }
- $input = json_encode($input, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
- // 只填充内容,不需要标题
- $card = Card::make(view('admin/system/log', compact('input')));
- return $card;
- });
- $grid->column('created_at', trans('admin.created_at'));
- $grid->model()->orderBy('id', 'DESC');
- $grid->disableCreateButton();
- $grid->disableQuickEditButton();
- $grid->disableEditButton();
- $grid->disableViewButton();
- $grid->showColumnSelector();
- $grid->setActionClass(Grid\Displayers\Actions::class);
- $grid->filter(function (Grid\Filter $filter) {
- $userModel = config('admin.database.users_model');
- $filter->in('user_id', trans('admin.user'))
- ->multipleSelect($userModel::pluck('name', 'id'));
- $filter->equal('method', trans('admin.method'))
- ->select(
- array_combine(AdminOperationLog::$methods, AdminOperationLog::$methods)
- );
- $filter->like('path', trans('admin.uri'));
- $filter->equal('ip', 'IP');
- $filter->between('created_at')->datetime();
- });
- });
- }
- public function destroy($id)
- {
- $ids = explode(',', $id);
- AdminOperationLog::destroy(array_filter($ids));
- return JsonResponse::make()
- ->success(trans('admin.delete_succeeded'))
- ->refresh()
- ->send();
- }
- }
|