封装号源检查,增加体检类型判断

wenjuan
yanzai 1 year ago
parent bd2dfeddf4
commit 4f42ec9291

@ -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 = [

@ -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];
}
}

Loading…
Cancel
Save