From bd2dfeddf4edfca03343e1f3d1e92e722b28716b Mon Sep 17 00:00:00 2001 From: yanzai Date: Sat, 14 Sep 2024 23:02:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=9B=A2=E6=A3=80=E7=B1=BB=E5=9E=8B=E3=80=81=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E7=BB=86=E8=8A=82=E3=80=81=E5=AF=B9=E6=8E=A5=E6=80=9D?= =?UTF-8?q?=E4=BF=A1=E5=A5=97=E9=A4=90=E9=A1=B9=E7=9B=AE=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/API/ApiMapController.php | 1 + .../Controllers/API/H5/OrderController.php | 141 +++++++++++++----- .../Controllers/API/H5/PersonController.php | 1 - .../Controllers/API/PEISApiController.php | 15 +- 4 files changed, 121 insertions(+), 37 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/ApiMapController.php b/Laravel/app/Http/Controllers/API/ApiMapController.php index 3803076..dec739c 100644 --- a/Laravel/app/Http/Controllers/API/ApiMapController.php +++ b/Laravel/app/Http/Controllers/API/ApiMapController.php @@ -46,6 +46,7 @@ class ApiMapController extends Controller 'NMRGetDayPlanList' => $base_url . '/api/H5/NMRGetDayPlanList',//核磁每日号源 'GetGroupUnit' => $base_url . '/api/H5/GetGroupUnit',//团检登记查询获取单位分组 'GetGroupCombo' => $base_url . '/api/H5/GetGroupCombo',//获取团检套餐 + 'OrderCreate' => $base_url . '/api/H5/OrderCreate',//创建订单 ]; } diff --git a/Laravel/app/Http/Controllers/API/H5/OrderController.php b/Laravel/app/Http/Controllers/API/H5/OrderController.php index 69f60f4..8b6b422 100644 --- a/Laravel/app/Http/Controllers/API/H5/OrderController.php +++ b/Laravel/app/Http/Controllers/API/H5/OrderController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API\H5; use App\Http\Controllers\Controller; +use App\Http\Controllers\API\PEISApiController; use App\Services\ConfigService; use DateTime; use Illuminate\Http\Request; @@ -100,7 +101,15 @@ class OrderController extends Controller $type = request('type');//1个检2团检 $group_id = request('group_id');//团检id $item_ids = request('item_ids');//自选item的ids - $plan_id = request('plan_id');//自选item的ids + $plan_id = request('plan_id');//号源id + + if (!isset($hospital_id)) return \Yz::echoError1('医院id不能为空'); + if (!isset($openid)) return \Yz::echoError1('openid不能为空'); + if (!isset($person_id)) return \Yz::echoError1('person_id不能为空'); + if (!isset($type)) return \Yz::echoError1('type体检类型不能为空'); + if (!isset($plan_id)) return \Yz::echoError1('号源id不能为空'); + if ($type == 2 and !isset($group_id)) return \Yz::echoError1('团检,group_id不能为空'); + if ($type == 1 and isset($group_id)) return \Yz::echoError1('体检类型:个检 与group_id冲突'); $user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first(); if (!$user) return \Yz::echoError1('用户不存在'); @@ -122,7 +131,7 @@ class OrderController extends Controller //如果是套餐 if (isset($combo_id) and $combo_id <> 0) { $combo_info = DB::table('combos')->where(['combo_id' => $combo_id, 'status' => 1])->first(); - if(!$combo_info) return \Yz::echoError1("套餐不存在"); + if (!$combo_info) return \Yz::echoError1("套餐不存在"); $price += $combo_info->price; $title = $combo_info->name; $buy_info['combo'] = [ @@ -136,15 +145,64 @@ class OrderController extends Controller $items_list = []; if (count($item_ids) != 0) { $items_list = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get(); + $existingIds=[]; foreach ($items_list as $item) { $price += $item->price; + $existingIds[]=$item->item_id; $buy_info['items'][] = [ 'id' => $item->item_id, 'name' => $item->name, 'price' => $item->price ]; } + $missingIds = array_diff($item_ids, $existingIds); + if(count($missingIds)>0) return \Yz::echoError1("部分自选项目不可用,Id:".implode(', ', $missingIds)); } + //如果是团检 + $group_info = false; + if ($type == 2) { + $P = new PersonController(); + $data = [ + '电话号码' => null, + '证件号码' => null, + '预约Id' => $group_id + ]; + $group_info = $P->group_info($hospital_id, $data); + $group_info=$group_info[0]; + $buy_info['group'] = [ + 'id' => $group_id, + 'combo_name' => $group_info['combo_name'], + 'combo_id' => $group_info['combo_id'], + 'group_name' => $group_info['group_name'], + 'items' => $group_info['items'], + 'group_id' => $group_info['group_id'], + ]; + $title ="单位团检". $group_info['combo_name']; + } + + //调用思信接口判断各个项目是否可用 + $check_items = []; + foreach ($item_ids as $item_id) { + $check_items[] = ['Id' => $item_id]; + } + if ((isset($combo_id) and $combo_id <> 0) || count($check_items) != 0) { + $item_check = self::item_check($hospital_id, [ + '人员信息列表' => [[ + "序号" => 0, + "性别" => $person->sex == 1 ? '男' : '女', + "年龄" => floor((time() - strtotime($person->birthday)) / 86400 / 360), + "婚姻状态" => $person->married == 1 ? '已婚' : '未婚', + ]], + '套餐Id' => $combo_id == 0 ? null : $combo_id, + '可选项目信息' => $check_items, + ]); + if (count($item_check['data']) != 1) { + return \Yz::echoError1("体检系统提示:". $item_check['message']); + } + } + + + //判断号源是否可用vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $plan = DB::table('plans')->where(['id' => $plan_id, 'hospital_id' => $hospital_id, 'status' => 1, 'is_del' => 0])->first(); if (!$plan) return \Yz::echoError1("号源不可用"); @@ -169,50 +227,58 @@ class OrderController extends Controller if ($price < $plan->amount_limit2) return \Yz::echoError1("未达到此号源限制的金额,不可用"); } //判断时间是否过期 - $plan_datetime=$plan->date.' '.$plan->time; - if($plan_datetime < date('Y-m-d H:i:s')) return \Yz::echoError1("号源已过期,不可用"); + $plan_datetime = $plan->date . ' ' . $plan->time; + if ($plan_datetime < date('Y-m-d H:i:s')) return \Yz::echoError1("号源已过期,不可用"); //判断号源是否可用^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + //如果是团检 判断 团检登记人的有效时间范围 + if (!!$group_info) { + if(!($plan_datetime>$group_info['start_time'] . ' 00:00:00' and $plan_datetime<$group_info['end_time'] . ' 23:59:59')){ + return \Yz::echoError1("预约日期不在单位有效时间范围内,请重新选择"); + } + } + //构建订单号 - $order_num=$this->generateOrderNumber(); - $data=[ - 'title'=>$title, - 'type'=>$type, - 'web_user_id'=>$user->id, - 'person_id'=>$person->id, - 'name'=>$person->name, - 'id_number'=>$person->id_number, - 'buy_info'=>json_encode($buy_info, JSON_UNESCAPED_UNICODE), - 'price'=>$price, - 'true_price'=>$price, - 'order_number'=>$order_num, - 'status'=>1, - 'appointment_date'=>$plan->date, - 'appointment_time'=>$plan->time, - 'plan_id'=>$plan->id, - 'plan_number'=>$plan->plan_number, - 'combo_id'=>$combo_id, - 'hospital_id'=>$hospital_id, - 'phone'=>$person->phone, - 'sex'=>$person->sex, - 'birthday'=>$person->birthday, - 'married'=>$person->married, + $order_num = $this->generateOrderNumber(); + $data = [ + 'title' => $title, + 'type' => $type, + 'web_user_id' => $user->id, + 'person_id' => $person->id, + 'name' => $person->name, + 'id_number' => $person->id_number, + 'buy_info' => json_encode($buy_info, JSON_UNESCAPED_UNICODE), + 'price' => $price, + 'true_price' => $price, + 'order_number' => $order_num, + 'status' => 1, + 'appointment_date' => $plan->date, + 'appointment_time' => $plan->time, + 'plan_id' => $plan->id, + 'plan_number' => $plan->plan_number, + 'combo_id' => $combo_id, + 'hospital_id' => $hospital_id, + 'phone' => $person->phone, + 'sex' => $person->sex, + 'birthday' => $person->birthday, + 'married' => $person->married, ]; DB::beginTransaction(); - $insert=DB::table('orders')->insert($data); - $up_plan=DB::table('plans')->where(['id'=>$plan->id,'status'=>1])->update([ - 'status'=>2 + $insert = DB::table('orders')->insert($data); + $up_plan = DB::table('plans')->where(['id' => $plan->id, 'status' => 1])->update([ + 'status' => 2 ]); - if($insert and $up_plan){ + if ($insert and $up_plan) { DB::commit(); - return \Yz::return(true,"操作成功",[]); - }else{ + return \Yz::return(true, "操作成功", []); + } else { DB::rollBack(); return \Yz::echoError1('操作失败'); } } - function generateOrderNumber() { + function generateOrderNumber() + { // 获取当前时间的时间戳(精确到毫秒) $timestamp = round(microtime(true) * 1000); @@ -224,4 +290,11 @@ class OrderController extends Controller return $orderNumber; } + + public function item_check($hospital, $data) + { + $peis = new PEISApiController(); + $check = $peis::Post('套餐项目检查', $hospital, $data); + return $check; + } } diff --git a/Laravel/app/Http/Controllers/API/H5/PersonController.php b/Laravel/app/Http/Controllers/API/H5/PersonController.php index e6854ea..6f8acaa 100644 --- a/Laravel/app/Http/Controllers/API/H5/PersonController.php +++ b/Laravel/app/Http/Controllers/API/H5/PersonController.php @@ -12,7 +12,6 @@ class PersonController extends Controller { $peis = new PEISApiController(); $info = $peis::Post('团检登记查询', $hospital, $data); - $group_list=[]; foreach ($info['data'] as $it) { $items = []; diff --git a/Laravel/app/Http/Controllers/API/PEISApiController.php b/Laravel/app/Http/Controllers/API/PEISApiController.php index e7c4b4b..422de7a 100644 --- a/Laravel/app/Http/Controllers/API/PEISApiController.php +++ b/Laravel/app/Http/Controllers/API/PEISApiController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; +use Illuminate\Http\Exceptions\HttpResponseException; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; @@ -18,7 +19,16 @@ class PEISApiController extends Controller $api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail/{$code}"; $api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups/{$code}"; $api['套餐查询'] = "{$url}/PEISCommon/QueryCombos/{$code}"; + $api['套餐项目检查'] = "{$url}/PEISCommon/CheckComboAndGroup/{$code}"; + $api['个检预约'] = "{$url}/PEISCommon/PersonAppointment/{$code}"; + $api['个检预约查询'] = "{$url}/PEISCommon/QueryPersonAppointment/{$code}"; + $api['个检预约取消'] = "{$url}/PEISCommon/CancelPersonAppointment/{$code}"; $api['团检登记查询'] = "{$url}/PEISCommon/QueryUnitAppointmentReg/{$code}"; + $api['团检预约'] = "{$url}/PEISCommon/UnitAppointment/{$code}"; + $api['团检预约查询'] = "{$url}/PEISCommon/QueryUnitAppointment/{$code}"; + $api['团检预约取消'] = "{$url}/PEISCommon/CancelUnitAppointment/{$code}"; + + return $api["{$url_code}"] ?? $url_code; } @@ -42,7 +52,6 @@ class PEISApiController extends Controller curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); $res_string = curl_exec($ch); curl_close($ch); - $str_len = mb_strlen($res_string, 'utf-8'); $str_size = $str_len / 1024; $save_res = $res_string; @@ -60,7 +69,9 @@ class PEISApiController extends Controller ]); } $res = json_decode($res_string, true); - + if ($res['ResultCode'] != 0){ + throw new HttpResponseException( \Yz::echoError1("体检系统提示:". $res['ResultContent'])); + } return [ 'code' => $res['ResultCode'],