Order.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace app\controller\merchant;
  3. use app\extra\basic\Base;
  4. use app\extra\douyin\Order as DouyinOrder;
  5. use app\extra\service\saas\OrderLogService;
  6. use app\extra\service\saas\OrderService;
  7. use app\middleware\AuthMiddleware;
  8. use app\model\saas\SaasOrder;
  9. use app\model\saas\SaasOrderLog;
  10. use DI\Attribute\Inject;
  11. use LinFly\Annotation\Route\Controller;
  12. use LinFly\Annotation\Route\Route;
  13. use support\Request;
  14. use support\Response;
  15. use Webman\Annotation\Middleware;
  16. #[Controller(prefix: "/api/merchant/order"),Middleware(AuthMiddleware::class)]
  17. class Order extends Base
  18. {
  19. #[Inject]
  20. protected OrderService $service;
  21. #[Inject]
  22. protected OrderLogService $log;
  23. #[Inject]
  24. protected SaasOrder $mode;
  25. #[Route(path: "list",methods: "get")]
  26. public function getOrderList(Request $request): Response
  27. {
  28. try {
  29. $param = $request->get();
  30. $param['agent'] = $request->user['agent_id'];
  31. $list = $this->service->getList($param);
  32. return successTrans("success.data",pageFormat($list),200);
  33. } catch (\Throwable $throwable) {
  34. return error($throwable->getMessage());
  35. }
  36. }
  37. #[Route(path: "log",methods: "get")]
  38. public function getOrderLog(Request $request): Response
  39. {
  40. try {
  41. $param = $request->get();
  42. $list = $this->log->getList($param);
  43. return successTrans("success.data",$list,200);
  44. } catch (\Throwable $throwable) {
  45. return error($throwable->getMessage());
  46. }
  47. }
  48. /**
  49. * 批量修改订单状态
  50. * @param Request $request
  51. * @return Response
  52. */
  53. #[Route(path: "batch",methods: "post")]
  54. public function batchSetState(Request $request): Response
  55. {
  56. try {
  57. $param = $this->_valid([
  58. "order.require" => trans("empty.require")
  59. ],"post");
  60. if (!is_array($param)) return error($param);
  61. $state = $this->mode->where("order_sn","in",$param['order'])->save(['express_status' => 1,'status' => 2]);
  62. $log = [];
  63. foreach ($param['order'] as $key=>$val) {
  64. $log[$key] = [
  65. 'order_id' => $val,
  66. "title" => "手动发货",
  67. "remark" => "管理员手动完成发货,订单进入待核销"
  68. ];
  69. }
  70. (new SaasOrderLog)->insertAll($log);
  71. if (!$state) return errorTrans("error.data");
  72. return successTrans("success.data");
  73. } catch (\Throwable $throwable) {
  74. return error($throwable->getMessage());
  75. }
  76. }
  77. /**
  78. * 同意解锁申请
  79. * @param Request $request
  80. * @return Response
  81. */
  82. #[Route(path: "agree",methods: "post")]
  83. public function setOrderAgree(Request $request): Response
  84. {
  85. try {
  86. $param = $this->_valid([
  87. "order.require" => trans("empty.require")
  88. ],"post");
  89. if (!is_array($param)) return error($param);
  90. $order = $this->mode->where("order_sn",$param['order'])->with(['goods' => function($query){
  91. $query->field("out_id,product_name,product_img,product_price");
  92. },'poi' => function ($query) {
  93. $query->field("poi_id,poi_name,poi_address");
  94. }])->findOrEmpty();
  95. if ($order->isEmpty()) return error("订单数据异常");
  96. $resp = (new DouyinOrder)->config($this->getDyConfig())->token()->orderLock(1,$order['order_id'],$order['certificate_id'],$order['lock_key']);
  97. if ($resp['err_no'] <> 0) return error($resp['err_msg']);
  98. $order->status = 3;
  99. $order->express_status = 3;
  100. $order->refund_at = getDateFull();
  101. $state = $order->save();
  102. (new SaasOrderLog)->insertGetId([
  103. 'order_id' => $param['order'],
  104. "title" => "同意解锁申请",
  105. "remark" => "管理员手动同意解锁申请,用户可以申请退款"
  106. ]);
  107. if (!$state) return errorTrans("error.data");
  108. return successTrans("success.data");
  109. } catch (\Throwable $throwable) {
  110. return error($throwable->getMessage());
  111. }
  112. }
  113. /**
  114. * 拒绝解锁申请
  115. * @param Request $request
  116. * @return Response
  117. */
  118. #[Route(path: "refuse",methods: "post")]
  119. public function setOrderRefuse(Request $request): Response
  120. {
  121. try {
  122. $param = $this->_valid([
  123. "order.require" => trans("empty.require")
  124. ],"post");
  125. if (!is_array($param)) return error($param);
  126. $order = $this->mode->where("order_sn",$param['order'])->findOrEmpty();
  127. if ($order->isEmpty()) return error("订单数据异常");
  128. $order->status = 3;
  129. $order->express_status = 1;
  130. $order->refund_at = getDateFull();
  131. $state = $order->save();
  132. (new SaasOrderLog)->insertGetId([
  133. 'order_id' => $param['order'],
  134. "title" => "拒绝解锁申请",
  135. "remark" => "管理员手动拒绝解锁申请,用户还不能申请退款"
  136. ]);
  137. if (!$state) return errorTrans("error.data");
  138. return successTrans("success.data");
  139. } catch (\Throwable $throwable) {
  140. return error($throwable->getMessage());
  141. }
  142. }
  143. }