get(); $param['agent'] = $request->user['agent_id']; $list = $this->service->getList($param); return successTrans("success.data",pageFormat($list),200); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } #[Route(path: "log",methods: "get")] public function getOrderLog(Request $request): Response { try { $param = $request->get(); $list = $this->log->getList($param); return successTrans("success.data",$list,200); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 更新收货地址 * @param Request $request * @return Response */ #[Route(path: "save",methods: "post")] public function save(Request $request): Response { try { $param = $this->_valid([ "id.require" => trans("empty.require"), "username.require" => trans("empty.require"), "mobile.require" => trans("empty.require"), "address.require" => trans("empty.require") ],"post"); if (!is_array($param)) return error($param); $order = $this->mode->where("order_sn",$param['order'])->findOrEmpty(); if ($order->isEmpty()) return error("订单数据异常"); $state = $order->save($param); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { echo $throwable->getMessage()."\n"; echo $throwable->getFile()."\n"; echo $throwable->getLine()."\n"; return error($throwable->getMessage()); } } /** * 批量修改订单状态 * @param Request $request * @return Response */ #[Route(path: "batch",methods: "post")] public function batchSetState(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],"post"); if (!is_array($param)) return error($param); $state = $this->mode->where("order_sn","in",$param['order'])->save(['express_status' => 1,'status' => 2]); $log = []; foreach ($param['order'] as $key=>$val) { $log[$key] = [ 'order_id' => $val, "title" => "手动发货", "remark" => "管理员手动完成发货,订单进入待核销" ]; } (new SaasOrderLog)->insertAll($log); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 同意解锁申请 * @param Request $request * @return Response */ #[Route(path: "agree",methods: "post")] public function setOrderAgree(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],"post"); if (!is_array($param)) return error($param); $order = $this->mode->where("order_sn",$param['order'])->with(['goods' => function($query){ $query->field("out_id,product_name,product_img,product_price"); },'poi' => function ($query) { $query->field("poi_id,poi_name,poi_address"); }])->findOrEmpty(); if ($order->isEmpty()) return error("订单数据异常"); $resp = (new DouyinOrder)->config($this->getDyConfig())->token()->orderLock(1,$order['order_id'],$order['certificate_id'],$order['lock_key']); if ($resp['err_no'] <> 0) return error($resp['err_msg']); $order->status = 3; $order->express_status = 3; $order->refund_at = getDateFull(); $state = $order->save(); (new SaasOrderLife)->where("order_id",$order['order_id'])->update(['status' => 1]); (new SaasOrderLog)->insertGetId([ 'order_id' => $param['order'], "title" => "同意解锁申请", "remark" => "管理员手动同意解锁申请,用户可以申请退款" ]); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 拒绝解锁申请 * @param Request $request * @return Response */ #[Route(path: "refuse",methods: "post")] public function setOrderRefuse(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],"post"); if (!is_array($param)) return error($param); $order = $this->mode->where("order_sn",$param['order'])->findOrEmpty(); if ($order->isEmpty()) return error("订单数据异常"); $order->status = 2; $order->express_status = 1; $order->refund_at = getDateFull(); $state = $order->save(); (new SaasOrderLog)->insertGetId([ 'order_id' => $param['order'], "title" => "拒绝解锁申请", "remark" => "管理员手动拒绝解锁申请,用户还不能申请退款" ]); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 手动核销 * @param Request $request * @return Response */ #[Route(path: "end",methods: "post")] public function setOrderEnd(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],"post"); if (!is_array($param)) return error($param); $order = $this->mode->where("order_sn",$param['order'])->findOrEmpty(); if ($order->isEmpty()) return error("订单数据异常"); $dyConfig = sConf("dy."); $endStart = strtotime(date("Y-m-d ".$dyConfig['end_start'].":00")); $endEnd = strtotime(date("Y-m-d ".$dyConfig['end_end'].":00")); if (time() < $endStart) return error("为确保店铺安全,该时间内系统暂停核销功能!"); if (time() > $endEnd) return error("为确保店铺安全,该时间内系统暂停核销功能~"); if (empty($order['verify_id'])) { $resp = (new \app\extra\douyin\Order)->config($this->getDyConfig())->token()->verifyOrder($order->toArray()); if ($resp['err_no'] <> 0) return error($resp['err_msg']); $verify_id = $resp['data']['order_verify_results'][0]['certificate_verify_results'][0]['verify_id']??''; $order->verify_id = $verify_id; $order['verify_id'] = $verify_id; } $resps = (new \app\extra\douyin\Order)->config($this->getDyConfig())->token()->verifyOrderPush($order['order_id'],[$order['verify_id']]); if ($resps['err_no'] <> 0) return error($resps['err_msg']); $order->express_status = 2; $order->status = 4; $state = $order->save(); (new SaasOrderLife)->where("order_id",$order['order_id'])->update(['status' => 3]); (new SaasOrderLog)->insertGetId([ 'order_id' => $param['order'], "title" => "完成核销", "remark" => "管理员手动完成就核销,该笔交易完成" ]); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 手动呼叫快递 * @param Request $request * @return Response */ #[Route(path: "express",methods: "post")] public function setOrderExpress(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],"post"); if (!is_array($param)) return error($param); $order = $this->mode->where("order_sn",$param['order'])->findOrEmpty(); if ($order->isEmpty()) return error("订单数据异常"); $dyConfig = sConf("dy."); $endStart = strtotime(date("Y-m-d ".$dyConfig['express_start'].":00")); $endEnd = strtotime(date("Y-m-d ".$dyConfig['express_end'].":00")); if (time() < $endStart) return error("为确保店铺安全,该时间内系统暂停呼叫快递功能!"); if (time() > $endEnd) return error("为确保店铺安全,该时间内系统暂停呼叫快递功能~"); return errorTrans("error.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 订单导出 * @param Request $request * @return Response */ #[Route(path: "export",methods: "get")] public function exportOrder(Request $request): Response { try { $param = $request->get(); $param['agent'] = $request->user['agent_id']; $logId = (new SystemExport)->insertGetId([ "uuid" => $request->user['id'], "name" => $param['fileName'], ]); Redis::send("export-order",[ "logId" => $logId, "param" => $param, ]); return successTrans("success.data",[],200); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } }