Task.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace app\controller\api;
  3. use app\extra\basic\Base;
  4. use app\extra\service\blue\TaskService;
  5. use app\middleware\WxMiddleware;
  6. use app\model\blue\BlueExpertPlatform;
  7. use app\model\blue\BlueTask;
  8. use app\model\blue\BlueTaskUser;
  9. use DI\Attribute\Inject;
  10. use LinFly\Annotation\Route\Controller;
  11. use LinFly\Annotation\Route\Middleware;
  12. use LinFly\Annotation\Route\Route;
  13. use support\Request;
  14. use support\Response;
  15. #[Controller(prefix: "/wx_api/task"),Middleware(WxMiddleware::class)]
  16. class Task extends Base
  17. {
  18. protected array $noNeedLogin = ["getTaskDetail"];
  19. #[Inject]
  20. protected TaskService $service;
  21. #[Inject]
  22. protected BlueTask $model;
  23. /**
  24. * 任务列表
  25. * @param Request $request
  26. * @return Response
  27. */
  28. #[Route(path: "portal",methods: "get")]
  29. public function getTaskList(Request $request): Response
  30. {
  31. try {
  32. } catch (\Throwable $throwable) {
  33. return error($throwable->getMessage());
  34. }
  35. }
  36. /**
  37. * 任务详情
  38. * @param Request $request
  39. * @return Response
  40. */
  41. #[Route(path: "detail",methods: "get")]
  42. public function getTaskDetail(Request $request): Response
  43. {
  44. try {
  45. $param = $this->_valid([
  46. "task_sn.require" => trans("empty.require"),
  47. "id.require" => trans("empty.require"),
  48. ],$request->method());
  49. if (!is_array($param)) return error($param);
  50. $data = $this->service->getTaskDetail($param);
  51. if (empty($data)) return errorTrans("empty.data");
  52. $data['content'] = strip_img_attributes($data['content']);
  53. return success("ok",$data->toArray());
  54. } catch (\Throwable $throwable) {
  55. return error($throwable->getMessage());
  56. }
  57. }
  58. /**
  59. * 任务报名
  60. * @param Request $request
  61. * @return Response
  62. */
  63. #[Route(path: "sign",methods: "post")]
  64. public function taskUserReg(Request $request): Response
  65. {
  66. try {
  67. $param = $this->_valid([
  68. "task_sn.require" => trans("empty.require"),
  69. "task_id.require" => trans("empty.require"),
  70. ],$request->method());
  71. if (!is_array($param)) return error($param);
  72. $task = $this->model->where(['task_sn' => $param['task_sn'],'id' => $param['task_id']])->findOrEmpty();
  73. if ($task->isEmpty()) return errorTrans("empty.data");
  74. $taskUser = (new BlueTaskUser)->where(['openid' => $request->user['openid'],'task_sn' => $param['task_sn'],'task_id' => $param['task_id']])->findOrEmpty();
  75. if (!$taskUser->isEmpty()) return error("请勿重复报名");
  76. $state = $taskUser->insertGetId([
  77. "openid" => $request->user['openid'],
  78. "task_id" => $param['task_id'],
  79. "task_sn" => $param['task_sn'],
  80. "source" => $task['category'],
  81. "status" => 0 // 0待提交 1审核中 2审核通过 3已拒绝
  82. ]);
  83. if (!$state) return errorTrans("error.data");
  84. return successTrans("success.data",['task_user_id' => $state]);
  85. } catch (\Throwable $throwable) {
  86. return error($throwable->getMessage());
  87. }
  88. }
  89. }