diff --git a/Laravel/app/Http/Controllers/API/AspNetZhuanController.php b/Laravel/app/Http/Controllers/API/AspNetZhuanController.php index a2a0ef9..a6c3f07 100644 --- a/Laravel/app/Http/Controllers/API/AspNetZhuanController.php +++ b/Laravel/app/Http/Controllers/API/AspNetZhuanController.php @@ -45,6 +45,7 @@ class AspNetZhuanController extends Controller public static function ErXian($data,$nonce) { $res= self::Post(self::$BaseUrl . '/erxianzhongzhuan.aspx?str='.$nonce,$data,'二线号源'); + if($data['action']==2) return $res['gid']??false; return $res['data']??true; } diff --git a/Laravel/app/Http/Controllers/API/H5/OrderController.php b/Laravel/app/Http/Controllers/API/H5/OrderController.php index 74b5892..74a5c78 100644 --- a/Laravel/app/Http/Controllers/API/H5/OrderController.php +++ b/Laravel/app/Http/Controllers/API/H5/OrderController.php @@ -574,7 +574,7 @@ class OrderController extends Controller public function Finish_test() //删除!!! { - $f = self::Finish('20240916154519911MbHwIE'); + $f = self::Finish('20241030111035259T2IBC6'); dd($f); } @@ -584,6 +584,8 @@ class OrderController extends Controller $AspNet=new AspNetZhuanController(); $order_info = DB::table('orders')->where(['order_number' => $order_number])->first(); if (!$order_info) return ['status' => false, 'msg' => "未找到有效订单。"]; + $person=DB::table('web_user_person')->where(['id' => $order_info->person_id])->first(); + if(!$person) return ['status' => false, 'msg' => "体检人信息无效。"]; $yyid=6; if($order_info->hospital_id == 1){ $yyid=6; @@ -603,7 +605,7 @@ class OrderController extends Controller ]; //调用接口校验号源是否可用 $erxian_status = $AspNet::ErXian(['YYRQ' => $p_nmr_data['date'], 'YYSJ' => $p_nmr_data['time'], 'yyid' => $yyid, 'action' => 4], uniqid()); - if ($erxian_status !== true) return \Yz::echoError1($p_nmr_data['name'] . '号源不可用'); + if ($erxian_status !== true) return ['status' => false, 'msg' => $p_nmr_data['name'] . '号源不可用']; } } @@ -684,6 +686,49 @@ class OrderController extends Controller $cha = DB::table('orders')->where(['order_number' => $order_number, 'status' => 2])->first(); if (!$cha) return ['status' => false, 'msg' => "订单未支付,禁止预约"]; //把状态更新为支付后,先二线,然后再开始预约思信 + $nowDateTime=date('Y-m-d H:i:s'); + if (isset($erxian_info) and !empty($erxian_info)) { + // foreach ($erxian_info as $key => $plan_nmr) { + $plan_nmr=$erxian_info[0]; + + $sex="未知"; + if($order_info->sex==1) $sex='男'; + if($order_info->sex==2) $sex='女'; + $p_nmr_data = [ + 'ghzid'=>$person->ghzid, + 'YYRQ'=>$plan_nmr['date'], + 'YYSJ'=>$plan_nmr['time'], + 'U_SFID'=>$plan_nmr['item_id'], + 'U_SFMC'=>$plan_nmr['name'], + 'HBXMJE'=>$plan_nmr['price'], + 'CJSJ'=>$nowDateTime, + 'YYDH'=>$order_info->phone, + 'YYXM'=>$order_info->name, + 'YYXB'=>$sex, + 'YYSR'=>$order_info->birthday, + 'YYNL'=>Tools::GetAge($order_info->birthday).'岁' , + 'YYZJ'=>$order_info->id_number, + 'YYSJ_B'=>$plan_nmr['time'].':00', + 'YYSJ_E'=>$plan_nmr['time'].':00', + 'YYSJ_BE'=>$plan_nmr['time'].'-'.$plan_nmr['time'], + 'ZCRQ'=>$nowDateTime, + 'yyid'=>$yyid, + 'action'=>2, + ]; + //调用接口校验号源是否可用 + $erxian_yuyue= $AspNet::ErXian($p_nmr_data, uniqid()); + if(!!$erxian_yuyue){ + $erxian_info[0]['gid']=$erxian_yuyue; + $ex_u= DB::table('orders')->where(['id' => $order_info->id])->update([ + 'erxian_appointment_info'=>json_encode($erxian_info, JSON_UNESCAPED_UNICODE), + ]); + if(!$ex_u) return ['status' => false, 'msg' => "二线预约失败"]; + }else{ + 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 754bde2..7686b36 100644 --- a/Laravel/app/Http/Controllers/API/H5/PayController.php +++ b/Laravel/app/Http/Controllers/API/H5/PayController.php @@ -119,6 +119,31 @@ class PayController extends Controller '预约Id' => $orderInfo->appointment_number ]); if ($cancel['code'] != 0) return \Yz::echoError1("取消预约失败," . $cancel['message']); + //如果有二线取消二线 + $yyid=6; + if($orderInfo->hospital_id == 1){ + $yyid=6; + } + if($orderInfo->hospital_id == 4){ + $yyid=2; + } + $AspNet=new AspNetZhuanController(); + $erxian_info=json_decode($orderInfo->erxian_appointment_info, true); + if (isset($erxian_info) and !empty($erxian_info)) { + foreach ($erxian_info as $key => $plan_nmr) { + if(isset($plan_nmr['gid'])){ + //调用接口校验号源是否可用 + $erxian_status = $AspNet::ErXian(['id' =>$plan_nmr['gid'], 'yyid' => $yyid, 'action' => 3], uniqid()); + $erxian_info[$key]['gid']=''; + $ex_u= DB::table('orders')->where(['id' => $orderInfo->id])->update([ + 'erxian_appointment_info'=>json_encode($erxian_info, JSON_UNESCAPED_UNICODE), + ]); + } + + } + + } + //如果真实支付大于0 则调用小程序退款 if ($orderInfo->true_price > 0) { $data = [ diff --git a/Laravel/app/Lib/Tools.php b/Laravel/app/Lib/Tools.php index 3ac9296..df9028d 100644 --- a/Laravel/app/Lib/Tools.php +++ b/Laravel/app/Lib/Tools.php @@ -2,6 +2,7 @@ namespace App\Lib; +use DateTime; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -56,4 +57,16 @@ class Tools Log::info("短信发送失败"); } } + + //根据生日 获取年龄 + public static function GetAge($birthday) { + $dob = new DateTime($birthday); + $now = new DateTime(); + + // 计算两个日期之间的差值 + $interval = $now->diff($dob); + + // 返回年龄 + return $interval->y; + } }