CoachQualRecordController.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use Slowlyo\OwlAdmin\Admin;
  4. use Illuminate\Http\Request;
  5. use App\Services\CoachQualRecordService;
  6. use Slowlyo\OwlAdmin\Controllers\AdminController;
  7. /**
  8. * 技师资质认证记录
  9. *
  10. * @property CoachQualRecordService $service
  11. */
  12. class CoachQualRecordController extends AdminController
  13. {
  14. protected string $serviceName = CoachQualRecordService::class;
  15. public function list()
  16. {
  17. $crud = $this->baseCRUD()
  18. ->filterTogglable(false)
  19. ->headerToolbar([
  20. $this->createButton('dialog'),
  21. ...$this->baseHeaderToolBar()
  22. ])
  23. ->columns([
  24. amis()->TableColumn('id', 'ID')->sortable(),
  25. amis()->TableColumn('coach_id', '技师编号'),
  26. amis()->TableColumn('qual_type', '资质类型'),
  27. amis()->TableColumn('qual_no', '资质证书编号'),
  28. amis()->TableColumn('qual_photo', '资质证书照片'),
  29. amis()->TableColumn('valid_start', '有效期开始日期'),
  30. amis()->TableColumn('valid_end', '有效期结束日期'),
  31. amis()->TableColumn('auditor', '审核人'),
  32. amis()->TableColumn('audit_time', '审核时间'),
  33. amis()->TableColumn('audit_remark', '审核回执'),
  34. amis()->TableColumn('state', '状态'),
  35. amis()->TableColumn('created_at', admin_trans('admin.created_at'))->type('datetime')->sortable(),
  36. amis()->TableColumn('updated_at', admin_trans('admin.updated_at'))->type('datetime')->sortable(),
  37. $this->rowActions('dialog')
  38. ]);
  39. return $this->baseList($crud);
  40. }
  41. public function form($isEdit = false)
  42. {
  43. return $this->baseForm()->body([
  44. amis()->TextControl('coach_id', '技师编号'),
  45. amis()->TextControl('qual_type', '资质类型'),
  46. amis()->TextControl('qual_no', '资质证书编号'),
  47. amis()->TextControl('qual_photo', '资质证书照片'),
  48. amis()->TextControl('valid_start', '有效期开始日期'),
  49. amis()->TextControl('valid_end', '有效期结束日期'),
  50. amis()->TextControl('auditor', '审核人'),
  51. amis()->TextControl('audit_time', '审核时间'),
  52. amis()->TextControl('audit_remark', '审核回执'),
  53. amis()->TextControl('state', '状态'),
  54. ]);
  55. }
  56. public function detail()
  57. {
  58. return $this->baseDetail()->body([
  59. amis()->TextControl('id', 'ID')->static(),
  60. amis()->TextControl('coach_id', '技师编号')->static(),
  61. amis()->TextControl('qual_type', '资质类型')->static(),
  62. amis()->TextControl('qual_no', '资质证书编号')->static(),
  63. amis()->TextControl('qual_photo', '资质证书照片')->static(),
  64. amis()->TextControl('valid_start', '有效期开始日期')->static(),
  65. amis()->TextControl('valid_end', '有效期结束日期')->static(),
  66. amis()->TextControl('auditor', '审核人')->static(),
  67. amis()->TextControl('audit_time', '审核时间')->static(),
  68. amis()->TextControl('audit_remark', '审核回执')->static(),
  69. amis()->TextControl('state', '状态')->static(),
  70. amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
  71. amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
  72. ]);
  73. }
  74. /**
  75. * [审核]审核技师资质认证
  76. *
  77. * @description 审核技师的资质认证记录,可通过或驳回
  78. *
  79. * @header x-xsrf-token required CSRF令牌 Example: your_csrf_token
  80. *
  81. * @bodyParam qualification_record_id integer required 资质认证记录ID Example: 1
  82. * @bodyParam qualification_record_state integer required 审核状态(2:通过 3:驳回) Example: 2
  83. * @bodyParam audit_remark string required 审核意见 Example: 资质证书有效,审核通过
  84. *
  85. * @response scenario=success {
  86. * "code": 200,
  87. * "message": "操作成功"
  88. * }
  89. *
  90. * @response status=400 scenario="已审核" {
  91. * "message": "该认证已审核"
  92. * }
  93. *
  94. * @response status=404 scenario="不存在" {
  95. * "message": "认证记录不存在"
  96. * }
  97. */
  98. public function audit(Request $request)
  99. {
  100. $validated = $request->validate([
  101. 'id' => 'required|integer|exists:coach_qual_records,id',
  102. 'qualification_record_state' => 'required|integer|in:2,3', // 2:通过 3:驳回
  103. 'audit_remark' => 'nullable|string|max:255',
  104. ]);
  105. $result = $this->service->audit(
  106. $validated['id'],
  107. $validated['qualification_record_state'],
  108. $validated['audit_remark'] ?? '',
  109. Admin::user()->id
  110. );
  111. return $this->autoResponse($result);
  112. }
  113. }