Order.php 5.5 KB

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