all(); if (!empty($request->user['agent_id'])) { $param['agent'] = $request->user['agent_id']; } $data = (new OrderService)->setModel()->getList($param,['agent' => function($query){ $query->field("agent_id,name"); },'goods' => function($query){ $query->field("product_id,product_name,actual_amount"); },'poi' => function($query){ $query->field("poi_id,poi_name"); }]); return successTrans('success.data',pageFormat($data),200); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } public function doneOrder(Request $request): Response { try { $param = v_valid([ "order.require" => "订单信息错误", ], "post"); if (!is_array($param)) return error($param); $order = (new HxOrderLife)->where("order_id", $param["order"])->with(['agent'])->findOrEmpty(); if ($order->isEmpty()) return error("订单信息错误"); if ($order['status'] <> 3) return error("订单状态不支持该操作"); $order->status = 4; $order->order_status = "交易关闭"; $order->save(); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } public function verifyOrder(Request $request): Response { try { $param = v_valid([ "order.require" => "订单信息错误", "poi.require" => "POI信息错误" ],"post"); if (!is_array($param)) return error($param); $order = (new HxOrderLife)->where("order_id",$param["order"])->with(['agent'])->findOrEmpty(); if ($order->isEmpty()) return error("订单信息错误"); if ($order['status'] <> 1) return error("该订单状态不支持核销"); $poi = (new HxStorePoi)->where("poi_id",$param['poi'])->findOrEmpty(); if ($poi->isEmpty()) return error("订单信息错误"); $startTime = $poi['order_start']??'09:00'; $endTime = $poi['order_end']??'22:30'; $startTimeStamp = strtotime(date("Y-m-d {$startTime}:00")); $endTimeStamp = strtotime(date("Y-m-d {$endTime}:00")); if (time() > $startTimeStamp && time() < $endTimeStamp) { // 先查下券码信息 $order['agent']['version'] = "res"; $orderCert = (new LifeOrder)->config($order['agent']->toArray())->token()->getCertificate($order['order_id'],$order['agent']['account']); if (!isset($orderCert['certificates'][0]['encrypted_code'])) return error("订单券码信息获取失败,请重试!"); $encrypted_code = array_map(function ($v) { return $v['encrypted_code']; }, $orderCert['certificates']); $verifyResp = (new LifeOrder)->config($order['agent']->toArray())->token()->verifyCertificate([ "account_id" => $order['agent']['account'], "order_id" => $order['order_id'], "poi_id" => $param['poi'], "encrypted_code" => $encrypted_code ]); if ($verifyResp['error_code'] <> 0) return error($verifyResp['description']); $order->status = 4; $order->order_status = '已核销'; $order->poi_id = $param['poi']; $order->done_at = getDateFull(); $order->save(); return success("核销成功"); } return error("当前时间段不支持核销"); } catch (\Throwable $throwable) { echo getDateFull()."==核销报错\n"; echo $throwable->getMessage()."\n"; echo $throwable->getFile()."【".$throwable->getLine()."】\n"; return error($throwable->getMessage()); } } }