From 4f42ec92910cc8ffd93bc11546e6f3de4808739b Mon Sep 17 00:00:00 2001 From: yanzai Date: Sun, 15 Sep 2024 10:58:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=81=E8=A3=85=E5=8F=B7=E6=BA=90=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BD=93=E6=A3=80=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/API/H5/OrderController.php | 81 ++++++++++--------- .../Controllers/API/H5/PlanController.php | 39 +++++++++ 2 files changed, 84 insertions(+), 36 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/H5/OrderController.php b/Laravel/app/Http/Controllers/API/H5/OrderController.php index 8b6b422..dd32cac 100644 --- a/Laravel/app/Http/Controllers/API/H5/OrderController.php +++ b/Laravel/app/Http/Controllers/API/H5/OrderController.php @@ -129,9 +129,12 @@ class OrderController extends Controller ], ]; //如果是套餐 + $checkup_type_id=false; //体检类型id 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(!isset($combo_info->checkup_type_id)) return \Yz::echoError1("套餐未关联体检类型"); + $checkup_type_id=$combo_info->checkup_type_id; $price += $combo_info->price; $title = $combo_info->name; $buy_info['combo'] = [ @@ -145,10 +148,10 @@ 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=[]; + $existingIds = []; foreach ($items_list as $item) { $price += $item->price; - $existingIds[]=$item->item_id; + $existingIds[] = $item->item_id; $buy_info['items'][] = [ 'id' => $item->item_id, 'name' => $item->name, @@ -156,7 +159,7 @@ class OrderController extends Controller ]; } $missingIds = array_diff($item_ids, $existingIds); - if(count($missingIds)>0) return \Yz::echoError1("部分自选项目不可用,Id:".implode(', ', $missingIds)); + if (count($missingIds) > 0) return \Yz::echoError1("部分自选项目不可用,Id:" . implode(', ', $missingIds)); } //如果是团检 $group_info = false; @@ -168,7 +171,7 @@ class OrderController extends Controller '预约Id' => $group_id ]; $group_info = $P->group_info($hospital_id, $data); - $group_info=$group_info[0]; + $group_info = $group_info[0]; $buy_info['group'] = [ 'id' => $group_id, 'combo_name' => $group_info['combo_name'], @@ -177,7 +180,7 @@ class OrderController extends Controller 'items' => $group_info['items'], 'group_id' => $group_info['group_id'], ]; - $title ="单位团检". $group_info['combo_name']; + $title = "单位团检" . $group_info['combo_name']; } //调用思信接口判断各个项目是否可用 @@ -197,47 +200,53 @@ class OrderController extends Controller '可选项目信息' => $check_items, ]); if (count($item_check['data']) != 1) { - return \Yz::echoError1("体检系统提示:". $item_check['message']); + return \Yz::echoError1("体检系统提示:" . $item_check['message']); } } - + //检查号源是否可用 + $plan = new PlanController(); + $plan_check = $plan->CheckPlan($plan_id, $hospital_id, $type, $person->sex,$price,$checkup_type_id); + if ($plan_check['status'] === false) return \Yz::echoError1($plan_check['msg']); + $plan=$plan_check['plan']; //判断号源是否可用vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - $plan = DB::table('plans')->where(['id' => $plan_id, 'hospital_id' => $hospital_id, 'status' => 1, 'is_del' => 0])->first(); - if (!$plan) return \Yz::echoError1("号源不可用"); - //判断个检/团检类型 - if ($plan->use_type <> 0 and $plan->use_type <> $type) { - $type_temp = ''; - if ($plan->use_type == 1) $type_temp = '个检'; - if ($plan->use_type == 2) $type_temp = '团检'; - return \Yz::echoError1("此号源为" . $type_temp . "号源,不可用"); - } - //判断是否是预留号源 - if ($plan->type <> 1) return \Yz::echoError1("此号源为预留号源,不可用"); - //判断是否是vip - //判断性别 - if ($plan->sex <> 0 and $plan->sex <> $person->sex) return \Yz::echoError1("此号源性别与体检人性别不符,不可用"); - //判断体检类型checkup_type - //判断金额 - if ($plan->use_type == 1 and $plan->amount_limit1 <> 0) { - if ($price < $plan->amount_limit1) return \Yz::echoError1("未达到此号源限制的金额,不可用"); - } - if ($plan->use_type == 2 and $plan->amount_limit2 <> 0) { - 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 = DB::table('plans')->where(['id' => $plan_id, 'hospital_id' => $hospital_id, 'status' => 1, 'is_del' => 0])->first(); +// if (!$plan) return \Yz::echoError1("号源不可用"); +// //判断个检/团检类型 +// if ($plan->use_type <> 0 and $plan->use_type <> $type) { +// $type_temp = ''; +// if ($plan->use_type == 1) $type_temp = '个检'; +// if ($plan->use_type == 2) $type_temp = '团检'; +// return \Yz::echoError1("此号源为" . $type_temp . "号源,不可用"); +// } +// //判断是否是预留号源 +// if ($plan->type <> 1) return \Yz::echoError1("此号源为预留号源,不可用"); +// //判断是否是vip +// //判断性别 +// if ($plan->sex <> 0 and $plan->sex <> $person->sex) return \Yz::echoError1("此号源性别与体检人性别不符,不可用"); +// //判断体检类型checkup_type +// //判断金额 +// if ($plan->use_type == 1 and $plan->amount_limit1 <> 0) { +// if ($price < $plan->amount_limit1) return \Yz::echoError1("未达到此号源限制的金额,不可用"); +// } +// if ($plan->use_type == 2 and $plan->amount_limit2 <> 0) { +// 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 (!!$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("预约日期不在单位有效时间范围内,请重新选择"); - } + 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 = [ diff --git a/Laravel/app/Http/Controllers/API/H5/PlanController.php b/Laravel/app/Http/Controllers/API/H5/PlanController.php index dc5d9e4..4278ea4 100644 --- a/Laravel/app/Http/Controllers/API/H5/PlanController.php +++ b/Laravel/app/Http/Controllers/API/H5/PlanController.php @@ -63,4 +63,43 @@ class PlanController extends Controller $list=$list->get(); return \Yz::Return(true,"查询完成",['list'=>$list]); } + //检查号源是否可用 + public function CheckPlan($plan_id,$hospital_id,$type,$sex,$price,$checkup_type_id) + { + + $plan = DB::table('plans')->where(['id' => $plan_id, 'hospital_id' => $hospital_id, 'status' => 1, 'is_del' => 0])->first(); + if (!$plan) return ['status'=>false,'msg'=>"号源不可用"]; + //判断个检/团检类型 + if ($plan->use_type <> 0 and $plan->use_type <> $type) { + $type_temp = ''; + if ($plan->use_type == 1) $type_temp = '个检'; + if ($plan->use_type == 2) $type_temp = '团检'; + return ['status'=>false,'msg'=>"此号源为" . $type_temp . "号源,不可用"]; + } + //判断是否是预留号源 + if ($plan->type <> 1) return ['status'=>false,'msg'=>"此号源为预留号源,不可用"]; + //判断是否是vip + //判断性别 + if ($plan->sex <> 0 and $plan->sex <> $sex) return ['status'=>false,'msg'=>"此号源性别与体检人性别不符,不可用"]; + //判断体检类型checkup_type + if(!!$checkup_type_id){ + $checkup_type_array=json_decode($plan->checkup_type_id,true); + if(!in_array($checkup_type_id,$checkup_type_array)){ + return ['status'=>false,'msg'=>"此号源体检类型与套餐不匹配,不可用"]; + } + } + //判断金额 + if ($plan->use_type == 1 and $plan->amount_limit1 <> 0) { + if ($price < $plan->amount_limit1) return ['status'=>false,'msg'=>"未达到此号源限制的金额,不可用"]; + } + if ($plan->use_type == 2 and $plan->amount_limit2 <> 0) { + if ($price < $plan->amount_limit2) return ['status'=>false,'msg'=>"未达到此号源限制的金额,不可用"]; + } + //判断时间是否过期 + $plan_datetime = $plan->date . ' ' . $plan->time; + if ($plan_datetime < date('Y-m-d H:i:s')) return ['status'=>false,'msg'=>"号源已过期,不可用"]; + + + return ['status'=>true,'msg'=>"",'plan'=>$plan]; + } }