_valid([ "order.require" => "请求参数错误" ],'post'); if (!is_array($param)) return error($param); $order = (new SaasOrderLife)->where("order_id",$param['order'])->where("open_id",$request->user['open_id'])->with(['goods' => function($query){ $query->field("out_id,product_img"); },'store' => function($query){ $query->field("store_id,service_mobile"); }])->append(['expire_at'])->withAttr(['expire_at' => function($data,$resp){ return date("Y-m-d",strtotime($resp['expire_at'])); }])->findOrEmpty(); if ($order->isEmpty()) return error("订单尚未同步"); $store = (new SaasStore)->where("store_id",$order['store_id'])->where("agent_id",$order['agent_id'])->field("service_mobile,service_type,service_at_start,service_at_end")->findOrEmpty(); $time = []; $weekdays_cn = ['日', '一', '二', '三', '四', '五', '六']; for ($i = 0;$i <= 15;$i ++) { $weekNum = date("w",strtotime("+{$i} day")); $time[$i]['day'] = date("m月d日",strtotime("+{$i} day")); $time[$i]['full'] = date("Y-m-d",strtotime("+{$i} day")); $time[$i]['week'] = "星期".$weekdays_cn[$weekNum]; $time[$i]['children'] = getHourlyTimeSlots(); } $specs = []; $goods = (new SaasGoods)->where("out_id",$order['out_id'])->findOrEmpty(); if (!$goods->isEmpty()) $specs = $goods['data_specs']; return successTrans("success.data",compact("order","store",'time','specs')); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } #[Route(path: "submit",methods: "post")] public function submitOrder(Request $request): Response { try { $param = $request->post(); echo getDateFull()."====提交预约\n"; print_r($param); $orderLife = (new SaasOrderLife)->where("order_id",$param['order'])->with(['store','agent'])->findOrEmpty(); if ($orderLife->isEmpty()) return errorTrans("empty.data"); $order = (new SaasOrder)->where("order_id",$param['order'])->where("status","in",[1,2,4])->findOrEmpty(); if (!$order->isEmpty()) return error("请勿重复提交"); // $param['service_type'] = $orderLife['store']['service_type']; $address = !empty($param['address']) ? json_decode($param['address'],true): []; $param['order_sn'] = CodeExtend::random(18,1,date("md")); $param['order_id'] = $param['order']; $param['open_id'] = $request->user['open_id']; $param['uuid'] = $request->user['id']; $param['store_id'] = $orderLife['store_id']; $param['agent_id'] = $orderLife['agent_id']; $param['product_id'] = $orderLife['out_id']; $param['product_name'] = $orderLife['product_name']; $param['status'] = 1; $param['express_status'] = 0; $param['username'] = $address['username']??''; $param['mobile'] = $address['mobile']??''; $param['region'] = $address['region']??''; $param['address'] = $address['address']??''; $orderDetail = (new DouyinOrder)->config($this->getDyConfig())->token()->getOrderDetail([$param['order']]); if (!isset($orderDetail['data']['certificate_info_list'][0]['certificate_id'])) return error("订单数据异常!"); $param['certificate_id'] = $orderDetail['data']['certificate_info_list'][0]['certificate_id']; $param['lock_key'] = strtoupper(CodeExtend::random(18,3)); // 锁码 $resp = (new DouyinOrder)->config($this->getDyConfig())->token()->orderLock(2,$param['order'],$param['certificate_id'],$param['lock_key']); if ($resp['err_no'] <> 0) return error("订单数据异常"); $orderLife->status = 2; $orderLife->save(); $state = $order->setAutoData($param); (new SaasOrderLog)->insertGetId([ 'order_id' => $param['order_sn'], "title" => "提交核销", "remark" => "用户提交核销信息" ]); if (!$state) return error("处理失败"); return success("提交成功"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } }