SystemLogController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace App\Module\System\AdminControllers;
  3. use App\Module\System\AdminControllers\Helper\FilterHelper;
  4. use App\Module\System\AdminControllers\Helper\GridHelper;
  5. use App\Module\System\AdminControllers\Helper\ShowHelper;
  6. use App\Module\System\Models\SystemLog;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use Spatie\RouteAttributes\Attributes\Resource;
  10. use UCore\DcatAdmin\AdminController;
  11. /**
  12. * 系统日志管理控制器
  13. */
  14. #[Resource('system-logs', names: 'dcat.admin.system-logs')]
  15. class SystemLogController extends AdminController
  16. {
  17. /**
  18. * 页面标题
  19. *
  20. * @var string
  21. */
  22. protected $title = '系统日志管理';
  23. /**
  24. * 列表页面
  25. *
  26. * @return Grid
  27. */
  28. protected function grid()
  29. {
  30. return Grid::make(new SystemLog(), function (Grid $grid) {
  31. $helper = new GridHelper($grid, $this);
  32. $helper->columnId();
  33. $grid->column('type', '日志类型');
  34. $grid->column('level', '日志级别')->using([
  35. 'debug' => '调试',
  36. 'info' => '信息',
  37. 'notice' => '通知',
  38. 'warning' => '警告',
  39. 'error' => '错误',
  40. 'critical' => '严重',
  41. 'alert' => '警报',
  42. 'emergency' => '紧急',
  43. ])->label([
  44. 'debug' => 'default',
  45. 'info' => 'info',
  46. 'notice' => 'primary',
  47. 'warning' => 'warning',
  48. 'error' => 'danger',
  49. 'critical' => 'danger',
  50. 'alert' => 'danger',
  51. 'emergency' => 'danger',
  52. ]);
  53. $grid->column('message', '日志消息')->limit(50);
  54. $grid->column('context', '上下文')->display(function ($value) {
  55. return is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;
  56. })->limit(30);
  57. $grid->column('user_id', '用户ID');
  58. $grid->column('ip', 'IP地址');
  59. $grid->column('user_agent', '用户代理')->limit(30);
  60. $helper->columnCreatedAt();
  61. // 禁用创建按钮
  62. $grid->disableCreateButton();
  63. // 禁用编辑和删除按钮
  64. $grid->actions(function (Grid\Displayers\Actions $actions) {
  65. $actions->disableEdit();
  66. $actions->disableDelete();
  67. });
  68. // 筛选器
  69. $grid->filter(function (Grid\Filter $filter) {
  70. $helper = new FilterHelper($filter, $this);
  71. $helper->equalId();
  72. $filter->equal('type', '日志类型');
  73. $filter->equal('level', '日志级别')->select([
  74. 'debug' => '调试',
  75. 'info' => '信息',
  76. 'notice' => '通知',
  77. 'warning' => '警告',
  78. 'error' => '错误',
  79. 'critical' => '严重',
  80. 'alert' => '警报',
  81. 'emergency' => '紧急',
  82. ]);
  83. $filter->like('message', '日志消息');
  84. $filter->equal('user_id', '用户ID');
  85. $filter->like('ip', 'IP地址');
  86. $helper->betweenCreatedAt();
  87. });
  88. });
  89. }
  90. /**
  91. * 详情页面
  92. *
  93. * @param mixed $id
  94. * @return Show
  95. */
  96. protected function detail($id)
  97. {
  98. return Show::make($id, new SystemLog(), function (Show $show) {
  99. $helper = new ShowHelper($show, $this);
  100. $helper->fieldId();
  101. $show->field('type', '日志类型');
  102. $show->field('level', '日志级别')->as(function ($value) {
  103. $levels = [
  104. 'debug' => '调试',
  105. 'info' => '信息',
  106. 'notice' => '通知',
  107. 'warning' => '警告',
  108. 'error' => '错误',
  109. 'critical' => '严重',
  110. 'alert' => '警报',
  111. 'emergency' => '紧急',
  112. ];
  113. return $levels[$value] ?? $value;
  114. });
  115. $show->field('message', '日志消息');
  116. $show->field('context', '上下文')->json();
  117. $show->field('user_id', '用户ID');
  118. $show->field('ip', 'IP地址');
  119. $show->field('user_agent', '用户代理');
  120. $helper->fieldCreatedAt();
  121. $helper->fieldUpdatedAt();
  122. $helper->fieldDeletedAt();
  123. });
  124. }
  125. }