TaskUser.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace app\controller\api;
  3. use app\extra\basic\Base;
  4. use app\extra\service\blue\BlueTaskUserService;
  5. use app\middleware\WxMiddleware;
  6. use app\model\blue\BlueExpertPlatform;
  7. use app\model\blue\BlueTaskUser;
  8. use DI\Attribute\Inject;
  9. use LinFly\Annotation\Route\Controller;
  10. use LinFly\Annotation\Route\Middleware;
  11. use LinFly\Annotation\Route\Route;
  12. use support\Request;
  13. use support\Response;
  14. #[Controller(prefix: "/wx_api/task/user"),Middleware(WxMiddleware::class)]
  15. class TaskUser extends Base
  16. {
  17. protected array $noNeedLogin = [];
  18. #[Inject]
  19. protected BlueTaskUser $model;
  20. #[Inject]
  21. protected BlueTaskUserService $service;
  22. /**
  23. * 已接任务列表
  24. * @param Request $request
  25. * @return Response
  26. */
  27. #[Route(path: "list",methods: "get")]
  28. public function getTaskUserList(Request $request): Response
  29. {
  30. try {
  31. $param = $this->_valid([
  32. "status.default" => 0,
  33. "size.default" => 10,
  34. "page.default" => 1,
  35. ],$request->method());
  36. $list = $this->service->getHomeList(['openid' => $request->user['openid'],'status' => $param['status'],'pageSize' => $param['size'],'page' => $param['page']]);
  37. return success("ok",pageFormat($list));
  38. } catch (\Throwable $throwable) {
  39. return error($throwable->getMessage());
  40. }
  41. }
  42. /**
  43. * 提交任务资料
  44. * @param Request $request
  45. * @return Response
  46. */
  47. #[Route(path: "submit",methods: "post")]
  48. public function updateTaskUser(Request $request): Response
  49. {
  50. try {
  51. $param = $this->_valid([
  52. "id.require" => trans("empty.require"),
  53. "task_sn.require" => trans("empty.require"),
  54. "star_id.require" => trans("empty.require"),
  55. ],$request->method());
  56. if (!is_array($param)) return error($param);
  57. $task = $this->model->where(['id' => $param['id'],'task_sn' => $param['task_sn'],'openid' => $request->user['openid'] ])->findOrEmpty();
  58. if ($task->isEmpty()) return errorTrans("empty.data");
  59. $platformUser = (new BlueExpertPlatform)->where(['openid' => $request->user['openid'],"source" => $task['source'],"status" => 1])->findOrEmpty();
  60. if ($platformUser->isEmpty()) return error("请先完成平台绑定");
  61. if (empty($platformUser['star_id'])) {
  62. $platformUser->star_id = $param['star_id'];
  63. $platformUser->save();
  64. }
  65. $task->star_id = $param['star_id'];
  66. $task->status = 1;
  67. $task->submit_at = getDateFull();
  68. $task->platform = json_encode($platformUser);
  69. $state = $task->save();
  70. if (!$state) return errorTrans("error.data");
  71. return successTrans("success.data");
  72. } catch (\Throwable $throwable) {
  73. return error($throwable->getMessage());
  74. }
  75. }
  76. /**
  77. * 检查是否绑定星图ID
  78. * @param Request $request
  79. * @return Response
  80. */
  81. #[Route(path: "starId",methods: "post")]
  82. public function getStarId(Request $request): Response
  83. {
  84. try {
  85. $param = $this->_valid([
  86. "id.require" => trans("empty.require"),
  87. "task_sn.require" => trans("empty.require"),
  88. ],$request->method());
  89. if (!is_array($param)) return error($param);
  90. $task = $this->model->where(['task_sn' => $param['task_sn'],'id' => $param['id']])->findOrEmpty();
  91. if ($task->isEmpty()) return errorTrans("empty.data");
  92. $platformUser = (new BlueExpertPlatform)->where(['openid' => $request->user['openid'],"source" => $task['source'],"status" => 1])->findOrEmpty();
  93. if ($platformUser->isEmpty()) return error("请先完成平台绑定");
  94. return success("ok",['star_id' => $platformUser['star_id']]);
  95. } catch (\Throwable $throwable) {
  96. return error($throwable->getMessage());
  97. }
  98. }
  99. /**
  100. * 已接任务详情
  101. * @param Request $request
  102. * @return Response
  103. */
  104. #[Route(path: "detail",methods: "get")]
  105. public function getTaskUserDetail(Request $request): Response
  106. {
  107. try {
  108. $param = $this->_valid([
  109. "id.require" => trans("empty.require"),
  110. "task_sn.require" => trans("empty.require"),
  111. ],$request->method());
  112. if (!is_array($param)) return error($param);
  113. $task = $this->model->where(['id' => $param['id'],'task_sn' => $param['task_sn'],'openid' => $request->user['openid'] ])->with(['task' => function ($query) {
  114. $query->field("id,title,task_sn,product_cover_url,total_budget,sign_number,need_number,category,level,sys_level,product_price")->append(['progress','total_budget_format'])->withAttr(['progress' => function ($data,$resp) {
  115. if ($resp['sign_number'] == 0) return $resp['sign_number'];
  116. return ceil($resp['sign_number']/$resp['need_number'] * 100);
  117. },'total_budget_format' => function($data,$resp) {
  118. return formatMoneyKw($resp['total_budget']/100);
  119. }]);
  120. }])->findOrEmpty();
  121. if ($task->isEmpty()) return errorTrans("empty.data");
  122. return success("ok",$task->toArray());
  123. } catch (\Throwable $throwable) {
  124. return error($throwable->getMessage());
  125. }
  126. }
  127. /**
  128. * 任务收益记录
  129. * @param Request $request
  130. * @return Response
  131. */
  132. public function getTaskRevenue(Request $request): Response
  133. {
  134. try {
  135. $param = $this->_valid([
  136. "id.require" => trans("empty.require"),
  137. "task_sn.require" => trans("empty.require"),
  138. "date.default" => date("Y-m-d",strtotime("-1 day")),
  139. ],$request->method());
  140. if (!is_array($param)) return error($param);
  141. return success("ok");
  142. } catch (\Throwable $throwable) {
  143. return error($throwable->getMessage());
  144. }
  145. }
  146. }