From a460fcae62354ebc31fa4fe64b713e4d43508522 Mon Sep 17 00:00:00 2001 From: yanzai Date: Thu, 26 Sep 2024 21:30:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B2=E8=81=94=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/API/ApiMapController.php | 1 + .../Controllers/API/H5/HomeController.php | 8 +-- .../Controllers/API/H5/OrderController.php | 72 ++++--------------- .../Http/Controllers/API/H5/PayController.php | 16 +++-- Laravel/routes/web.php | 1 + h5/pages/buy/done/done.vue | 65 ++++++++++------- h5/pages/main/index/index.vue | 2 +- h5/pages/main/order/CheckPay.vue | 2 +- 8 files changed, 70 insertions(+), 97 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/ApiMapController.php b/Laravel/app/Http/Controllers/API/ApiMapController.php index e990d72..0cd83cd 100644 --- a/Laravel/app/Http/Controllers/API/ApiMapController.php +++ b/Laravel/app/Http/Controllers/API/ApiMapController.php @@ -57,6 +57,7 @@ class ApiMapController extends Controller 'GetMonthPlanCount' => $base_url . '/api/H5/GetMonthPlanCount',//按月获取每日号源 'GetDayPlanList' => $base_url . '/api/H5/GetDayPlanList',//获取每日号源 'ComboCompare' => $base_url . '/api/H5/ComboCompare',//套餐对比 + 'GetOrderDetail' => $base_url . '/api/H5/GetOrderDetail',//获取订单详情 ]; } diff --git a/Laravel/app/Http/Controllers/API/H5/HomeController.php b/Laravel/app/Http/Controllers/API/H5/HomeController.php index 2b37280..e408199 100644 --- a/Laravel/app/Http/Controllers/API/H5/HomeController.php +++ b/Laravel/app/Http/Controllers/API/H5/HomeController.php @@ -58,9 +58,9 @@ class HomeController extends Controller 'jump' => '/pages/main/cjwt/cjwt', 'icon' => '/assets/h5/changjianwenti.png' ], [ - 'message' => '', + 'message' => '暂未开放', 'name' => '预检咨询', - 'jump' => 'XCX/pages/other/entry/index?path=/pages/outpatient/doctor-appointment/index&scene=1035&hospitalAreaId=6&departmentCode=A0030077&subDepartmentCode=4773794195699464904', + 'jump' => '/pages/main/cjwt/cjwt', 'icon' => '/assets/h5/changjianwenti.png' ], [ 'message' => '暂未开放', @@ -73,9 +73,9 @@ class HomeController extends Controller 'jump' => '/pages/main/cjwt/cjwt', 'icon' => '/assets/h5/changjianwenti.png' ]], [[ - 'message' => '暂未开放', + 'message' => '', 'name' => '解读报告', - 'jump' => '/pages/main/cjwt/cjwt', + 'jump' => 'XCX/pages/other/entry/index?path=/pages/outpatient/doctor-appointment/index&scene=1035&hospitalAreaId=6&departmentCode=A0030077&subDepartmentCode=4773794195699464904', 'icon' => '/assets/h5/changjianwenti.png' ], [ 'message' => '暂未开放', diff --git a/Laravel/app/Http/Controllers/API/H5/OrderController.php b/Laravel/app/Http/Controllers/API/H5/OrderController.php index 20cf846..de65d47 100644 --- a/Laravel/app/Http/Controllers/API/H5/OrderController.php +++ b/Laravel/app/Http/Controllers/API/H5/OrderController.php @@ -30,66 +30,19 @@ class OrderController extends Controller $list->end_time = $timestamp + (60 * $WaitingPaymentTime); } } - $list = [[ - 'id' => 1, - 'title' => '测试套餐1', - 'status' => 1, - 'name' => '陆予', - 'time' => '2024-08-05 08:00:00', - 'order' => '1234567890987654321', - 'type' => '个检', - 'price' => '4999.99', - 'true_price' => '4999.99', - 'end_time' => time() + (60 * 20) - ], [ - 'id' => 1, - 'title' => '测试套餐2', - 'status' => 2, - 'name' => '陆予', - 'time' => '2024-08-05 08:00:00', - 'order' => '1234567890987654321', - 'type' => '个检', - 'price' => '4999.99', - 'true_price' => '4999.99', - 'pay_time' => '2024-08-06 08:00:00' - ], [ - 'id' => 1, - 'title' => '测试套餐2', - 'status' => 3, - 'name' => '陆予', - 'time' => '2024-08-05 08:00:00', - 'order' => '1234567890987654321', - 'type' => '个检' - ], [ - 'id' => 1, - 'title' => '测试套餐2', - 'status' => 4, - 'name' => '陆予', - 'time' => '2024-08-05 08:00:00', - 'order' => '1234567890987654321', - 'type' => '团检', - 'price' => '4999.99', - 'true_price' => '0.01', - 'pay_time' => '2024-08-06 08:00:00', - 'report' => true, - 'decode' => 0, - ], [ - 'id' => 1, - 'title' => '测试套餐2', - 'status' => 5, - 'name' => '陆予', - 'time' => '2024-08-05 08:00:00', - 'order' => '1234567890987654321', - 'type' => '团检', - 'price' => '4999.99', - 'true_price' => '0.01', - 'refund_time' => '2024-08-06 08:00:00' - ]]; return \Yz::Return(true, '获取成功', [ 'list' => $OrderList ]); } + public function GetDetail() + { + $id = request('id'); + $order_info = DB::table('orders')->where(['id' => $id])->first(); + return \Yz::Return(true, '获取成功', [ + 'info' => $order_info + ]); + } //创建订单 public function Create() @@ -342,7 +295,7 @@ class OrderController extends Controller //最后步骤,开始通知思信预约 public function Finish($order_number) { - $order_info = DB::table('orders')->where(['order_number' => $order_number, 'status' => 1])->first(); + $order_info = DB::table('orders')->where(['order_number' => $order_number])->first(); if (!$order_info) return ['status' => false, 'msg' => "未找到有效订单"]; $buy_info = json_decode($order_info->buy_info, true); $combo_id = $buy_info['combo']['id']; @@ -392,11 +345,14 @@ class OrderController extends Controller "可选项目信息" => $item_arr ]; } - //更新订单状态为已支付, 支付流水号在 上一步(方法)更新, - DB::table('orders')->where(['order_number' => $order_number])->update([ + //如果是 如果订单未支付 在这里更新订单状态为已支付。 + DB::table('orders')->where(['order_number' => $order_number,'status'=>1])->update([ 'status' => 2, 'pay_time' => date('Y-m-d H:i:s'), ]); + //查询确认订单已经是支付状态 + $cha=DB::table('orders')->where(['order_number' => $order_number,'status'=>2])->first(); + if(!$cha) return ['status' => false, 'msg' => "订单未支付,禁止预约"]; //把状态更新为支付后,然后再开始预约思信 $create_appointment = self::create_appointment($order_info->hospital_id, $cad); diff --git a/Laravel/app/Http/Controllers/API/H5/PayController.php b/Laravel/app/Http/Controllers/API/H5/PayController.php index 196a5f0..0bce19e 100644 --- a/Laravel/app/Http/Controllers/API/H5/PayController.php +++ b/Laravel/app/Http/Controllers/API/H5/PayController.php @@ -78,10 +78,14 @@ class PayController extends Controller $res = $XCX::Post('订单查询', ['orderid'=>$order_number]); //判断如果支付成功,更改订单状态 if($res['data']['trade_state']==='SUCCESS'){ - DB::table('orders')->where(['order_number'=>$order_number])->update([ - 'status'=>2 + $order=DB::table('orders')->where(['order_number'=>$order_number])->first(); + DB::table('orders')->where(['id'=>$order->id])->update([ + 'status'=>2, + 'pay_time' => date('Y-m-d H:i:s'), ]); - return \Yz::Return(true,"支付成功",[]); + $Finish=new OrderController();//预约体检 + $Finish->Finish($order_number); + return \Yz::Return(true,"支付成功",['id'=>$order->id]); }else{ return \Yz::echoError1("支付失败".$res['data']['trade_state']); } @@ -93,7 +97,7 @@ class PayController extends Controller //判断订单状态是否是已经支付,判断是否到检, $openid = request('openid'); $id= request('id'); - $orderInfo = DB::table('orders')->where(['id' => $id,])->first(); + $orderInfo = DB::table('orders')->where(['id' => $id])->first(); if (!$orderInfo) return \Yz::echoError1("未找到有效订单"); if ($orderInfo->status !==2) return \Yz::echoError1("订单状态异常。当前状态:" . $orderInfo->status); if ($orderInfo->check_status ==2) return \Yz::echoError1("已登记体检,禁止退款"); @@ -108,13 +112,13 @@ class PayController extends Controller ]; $XCX = new XCXApiController(); $res = $XCX::Post('订单退款', $data); - if($res['refund_state']==='SUCCESS'){ + if($res['data']['refund_state']==='SUCCESS'){ DB::table('orders')->where(['id'=>$id])->update([ 'status'=>5 ]); return \Yz::Return(true,"退款成功",[]); }else{ - return \Yz::echoError1("退款失败".$res['refund_state']); + return \Yz::echoError1("退款失败".$res['data']['refund_state']); } } diff --git a/Laravel/routes/web.php b/Laravel/routes/web.php index 1501e7c..3fdf36a 100644 --- a/Laravel/routes/web.php +++ b/Laravel/routes/web.php @@ -63,6 +63,7 @@ Route::group(['prefix' => 'api/H5'], function () { Route::post('/StartPay', 'App\Http\Controllers\API\H5\PayController@StartPay');//开始支付接口 Route::post('/CheckPay', 'App\Http\Controllers\API\H5\PayController@CheckPay');//支付结果查询接口 Route::post('/Refund', 'App\Http\Controllers\API\H5\PayController@Refund');//退款 + Route::post('/GetOrderDetail', 'App\Http\Controllers\API\H5\OrderController@GetDetail');//获取订单详情 diff --git a/h5/pages/buy/done/done.vue b/h5/pages/buy/done/done.vue index e715105..f7a6454 100644 --- a/h5/pages/buy/done/done.vue +++ b/h5/pages/buy/done/done.vue @@ -38,29 +38,40 @@ } } - const order_info = ref({ - status: 1, - combo_id: 1, - combo_name: '中心动脉硬化检测体检', - item_ids: [1, 2, 3, 4], - item_info: [{ - name: '抽血1' - }, { - name: '抽血2' - }, { - name: '抽血3' - }, { - name: '抽血4' - }], - name: '周子轩', - id_number: '130322199409090090', - order_number: '1000034', - order_time: '2024-12-12 12:12:12', - type: '个检', - price: '300.00' - }) + // const order_info = ref({ + // status: 1, + // combo_id: 1, + // combo_name: '中心动脉硬化检测体检', + // item_ids: [1, 2, 3, 4], + // item_info: [{ + // name: '抽血1' + // }, { + // name: '抽血2' + // }, { + // name: '抽血3' + // }, { + // name: '抽血4' + // }], + // name: '周子轩', + // id_number: '130322199409090090', + // order_number: '1000034', + // order_time: '2024-12-12 12:12:12', + // type: '个检', + // price: '300.00' + // }) + const order_info = ref({}) const getOrderInfo = async () => { - + uni.showLoading() + const response = await $api('GetOrderDetail', { + openid: localStorage.getItem('OPENID'), + id: $props.id, + }) + uni.hideLoading() + $response(response, () => { + if (response.status) { + order_info.value=response.data.info + } + }) } const toOrderList = () => { @@ -81,7 +92,7 @@ - + @@ -89,7 +100,7 @@ 恭喜您,支付成功! - {{ order_info.combo_name }} + {{ order_info.title }} 体检人: {{ order_info.name }} @@ -104,15 +115,15 @@ 预约时间: - {{ order_info.order_time }} + {{ order_info.appointment_date }} {{ order_info.appointment_time }} 类型: - {{ order_info.type }} + 个检团检 订单金额: - ¥{{ order_info.price }} + ¥{{ order_info.true_price }} 确认并关闭 diff --git a/h5/pages/main/index/index.vue b/h5/pages/main/index/index.vue index fc588b4..3432694 100644 --- a/h5/pages/main/index/index.vue +++ b/h5/pages/main/index/index.vue @@ -260,7 +260,7 @@ - 09261439 + 09262059 diff --git a/h5/pages/main/order/CheckPay.vue b/h5/pages/main/order/CheckPay.vue index 9385f49..e25a8bc 100644 --- a/h5/pages/main/order/CheckPay.vue +++ b/h5/pages/main/order/CheckPay.vue @@ -31,7 +31,7 @@ title: '支付成功' }); uni.redirectTo({ - url: '/pages/main/order/order' + url: '/pages/buy/done/done?id='+response.data.id }); } })