SystemExceptionController.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Services\SystemExceptionService;
  4. use Slowlyo\OwlAdmin\Controllers\AdminController;
  5. /**
  6. * 系统异常管理
  7. */
  8. class SystemExceptionController extends AdminController
  9. {
  10. protected string $serviceName = SystemExceptionService::class;
  11. public function list()
  12. {
  13. $crud = $this->baseCRUD()
  14. ->filterTogglable(false)
  15. ->headerToolbar([
  16. amis()->Button()->label('批量AI分析')->actionType('ajax')->api('POST:/admin-api/system-exceptions/batch-analyze'),
  17. ...$this->baseHeaderToolBar()
  18. ])
  19. ->columns([
  20. amis()->TableColumn('id', 'ID')->sortable(),
  21. amis()->TableColumn('type', '异常类型'),
  22. amis()->TableColumn('message', '异常信息')->type('text'),
  23. amis()->TableColumn('file', '文件路径'),
  24. amis()->TableColumn('line', '行号'),
  25. amis()->TableColumn('status', '状态')
  26. ->type('status')
  27. ->labels([
  28. '未处理' => 'danger',
  29. '处理中' => 'warning',
  30. '已处理' => 'success',
  31. '忽略' => 'default'
  32. ]),
  33. amis()->TableColumn('solution', 'AI解决方案')->type('text'),
  34. amis()->TableColumn('handler', '处理人'),
  35. amis()->TableColumn('handled_at', '处理时间')->type('datetime'),
  36. amis()->TableColumn('created_at', '创建时间')->type('datetime')->sortable(),
  37. amis()->Operation()->label('操作')->buttons([
  38. amis()->Button()
  39. ->label('AI分析')
  40. ->level('primary')
  41. ->actionType('ajax')
  42. ->api('POST:/admin-api/system-exceptions/${id}/analyze'),
  43. amis()->Button()
  44. ->label('标记处理')
  45. ->level('success')
  46. ->actionType('ajax')
  47. ->api('POST:/admin-api/system-exceptions/${id}/mark-handled'),
  48. amis()->Button()
  49. ->label('忽略')
  50. ->level('default')
  51. ->actionType('ajax')
  52. ->api('POST:/admin-api/system-exceptions/${id}/ignore'),
  53. ])
  54. ]);
  55. return $this->baseList($crud);
  56. }
  57. public function detail()
  58. {
  59. return $this->baseDetail()->body([
  60. amis()->TextControl('id', 'ID')->static(),
  61. amis()->TextControl('type', '异常类型')->static(),
  62. amis()->TextareaControl('message', '异常信息')->static(),
  63. amis()->TextControl('file', '文件路径')->static(),
  64. amis()->TextControl('line', '行号')->static(),
  65. amis()->TextareaControl('trace', '堆栈信息')->static(),
  66. amis()->JsonControl('request_data', '请求数据')->static(),
  67. amis()->TextControl('status', '状态')->static(),
  68. amis()->TextareaControl('solution', 'AI解决方案')->static(),
  69. amis()->TextControl('handler', '处理人')->static(),
  70. amis()->TextControl('handled_at', '处理时间')->static(),
  71. amis()->TextControl('created_at', '创建时间')->static(),
  72. ]);
  73. }
  74. }