JobRunController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace App\Module\System\AdminControllers;
  3. use App\Module\System\Models\JobRun;
  4. use Dcat\Admin\Grid;
  5. use Dcat\Admin\Show;
  6. use Spatie\RouteAttributes\Attributes\Resource;
  7. use UCore\DcatAdmin\AdminController;
  8. use UCore\DcatAdmin\FilterHelper;
  9. use UCore\DcatAdmin\GridHelper;
  10. use UCore\DcatAdmin\ShowHelper;
  11. /**
  12. * 队列运行记录管理控制器
  13. */
  14. #[Resource('job-runs', names: 'dcat.admin.job-runs')]
  15. class JobRunController 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 JobRun(), function (Grid $grid) {
  31. $helper = new GridHelper($grid, $this);
  32. $helper->columnId();
  33. $grid->column('queue', '队列名称')->label('primary');
  34. $grid->column('run_class_name', '运行类')->limit(30);
  35. $grid->column('attempts', '尝试次数')->label('info');
  36. $grid->column('status_label', '状态')->using([
  37. '已完成' => '已完成',
  38. '失败' => '失败',
  39. '运行中' => '运行中',
  40. '待处理' => '待处理',
  41. '未知' => '未知'
  42. ])->label([
  43. '已完成' => 'success',
  44. '失败' => 'danger',
  45. '运行中' => 'warning',
  46. '待处理' => 'info',
  47. '未知' => 'secondary'
  48. ]);
  49. $grid->column('runtime_formatted', '运行时间');
  50. $grid->column('job_parameters_short', '任务参数')->limit(50);
  51. $grid->column('desc_short', '描述')->limit(50);
  52. $grid->column('created_at_formatted', '创建时间')->sortable();
  53. // 筛选器
  54. $grid->filter(function (Grid\Filter $filter) {
  55. $helper = new FilterHelper($filter, $this);
  56. $filter->like('queue', '队列名称');
  57. $filter->like('runclass', '运行类');
  58. $filter->equal('status', '状态')->select([
  59. 'run-end' => '已完成',
  60. 'run' => '运行中',
  61. 'wait' => '待处理',
  62. 'error' => '失败'
  63. ]);
  64. $filter->between('runtime', '运行时间(秒)');
  65. $filter->between('created_at', '创建时间')->datetime();
  66. $filter->like('desc', '描述');
  67. });
  68. // 禁用新增、编辑、删除
  69. $grid->disableCreateButton();
  70. $grid->disableEditButton();
  71. $grid->disableDeleteButton();
  72. $grid->disableBatchDelete();
  73. // 排序
  74. $grid->model()->orderBy('id', 'desc');
  75. // 分页
  76. $grid->paginate(20);
  77. });
  78. }
  79. /**
  80. * 详情页面
  81. *
  82. * @param mixed $id
  83. * @return Show
  84. */
  85. protected function detail($id)
  86. {
  87. return Show::make($id, new JobRun(), function (Show $show) {
  88. new ShowHelper($show, $this);
  89. $show->field('id', 'ID');
  90. $show->field('queue', '队列名称');
  91. $show->field('runclass', '运行类');
  92. $show->field('job_class', '任务类');
  93. $show->field('attempts', '尝试次数');
  94. $show->field('status_label', '状态');
  95. $show->field('runtime_formatted', '运行时间');
  96. $show->field('job_parameters', '任务参数');
  97. $show->field('desc', '描述信息');
  98. $show->field('created_at_formatted', '创建时间');
  99. $show->field('available_at_formatted', '可用时间');
  100. $show->field('reserved_at_formatted', '保留时间');
  101. $show->field('payload', '任务载荷')->json();
  102. // 禁用编辑和删除
  103. $show->disableEditButton();
  104. $show->disableDeleteButton();
  105. });
  106. }
  107. }