TaskUser.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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\BlueTaskUser;
  7. use DI\Attribute\Inject;
  8. use LinFly\Annotation\Route\Controller;
  9. use LinFly\Annotation\Route\Middleware;
  10. use LinFly\Annotation\Route\Route;
  11. use support\Request;
  12. use support\Response;
  13. #[Controller(prefix: "/wx_api/task/user"),Middleware(WxMiddleware::class)]
  14. class TaskUser extends Base
  15. {
  16. protected array $noNeedLogin = ["getTaskUserDetail"];
  17. #[Inject]
  18. protected BlueTaskUser $model;
  19. #[Inject]
  20. protected BlueTaskUserService $service;
  21. /**
  22. * 已接任务列表
  23. * @param Request $request
  24. * @return Response
  25. */
  26. #[Route(path: "list",methods: "get")]
  27. public function getTaskUserList(Request $request): Response
  28. {
  29. try {
  30. $param = $this->_valid([
  31. "size.default" => 10,
  32. "page.default" => 1,
  33. ],$request->method());
  34. $list = $this->service->getHomeList(['openid' => $request->user['openid'],'pageSize' => $param['size'],'page' => $param['page']]);
  35. return success("ok",pageFormat($list));
  36. } catch (\Throwable $throwable) {
  37. return error($throwable->getMessage());
  38. }
  39. }
  40. /**
  41. * 已接任务详情
  42. * @param Request $request
  43. * @return Response
  44. */
  45. #[Route(path: "detail",methods: "get")]
  46. public function getTaskUserDetail(Request $request): Response
  47. {
  48. try {
  49. $param = $this->_valid([
  50. "id.require" => trans("empty.require"),
  51. "task_sn.require" => trans("empty.require"),
  52. ],$request->method());
  53. if (!is_array($param)) return error($param);
  54. $task = $this->model->where(['id' => $param['id'],'task_sn' => $param['task_sn'],'openid' => '123' ])->with(['task' => function ($query) {
  55. $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) {
  56. if ($resp['sign_number'] == 0) return $resp['sign_number'];
  57. return ceil($resp['sign_number']/$resp['need_number'] * 100);
  58. },'total_budget_format' => function($data,$resp) {
  59. return formatMoneyKw($resp['total_budget']/100);
  60. }]);
  61. }])->findOrEmpty();
  62. if ($task->isEmpty()) return errorTrans("empty.data");
  63. return success("ok",$task->toArray());
  64. } catch (\Throwable $throwable) {
  65. return error($throwable->getMessage());
  66. }
  67. }
  68. /**
  69. * 任务收益记录
  70. * @param Request $request
  71. * @return Response
  72. */
  73. public function getTaskRevenue(Request $request): Response
  74. {
  75. try {
  76. $param = $this->_valid([
  77. "id.require" => trans("empty.require"),
  78. "task_sn.require" => trans("empty.require"),
  79. "date.default" => date("Y-m-d",strtotime("-1 day")),
  80. ],$request->method());
  81. if (!is_array($param)) return error($param);
  82. return success("ok");
  83. } catch (\Throwable $throwable) {
  84. return error($throwable->getMessage());
  85. }
  86. }
  87. }