diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index b91e09f..4251bec 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1914,7 +1914,7 @@ class UserDoctorService extends BaseService } // 检测当前时间5分钟后,坐班时间包含某时间的平台深度合作医生 - $doctor_ids = $this->getNowTimePlatDeepCooperationDoctorId($inquiry_type,strtotime ("+5 minute"),$not_doctor_ids); + $doctor_ids = $this->getMinPlatDeepCooperationDoctorId($inquiry_type,strtotime ("+5 minute"),$not_doctor_ids); if (!empty($doctor_ids)){ Log::getInstance()->info("检测当前时间5分钟后,坐班时间包含某时间的平台深度合作医生:" ,$doctor_ids); @@ -1927,6 +1927,19 @@ class UserDoctorService extends BaseService } } + // 检测当前时间5分钟后,坐班时间包含某时间的平台深度合作医生 + $doctor_ids = $this->getMinPlatDeepCooperationDoctorId($inquiry_type,strtotime ("+5 minute"),$not_doctor_ids); + if (!empty($doctor_ids)){ + Log::getInstance()->info("检测当前时间5分钟后,坐班时间包含某时间的平台深度合作医生:" ,$doctor_ids); + + // 检测医生是否可被分配 + $result = $this->checkDoctorCanBeAssigned($doctor_ids,$patient_id,1,$inquiry_type); + Log::getInstance()->info("检测医生是否可被分配:" ,$result); + if (!empty($result['doctor_id'])){ + return $result['doctor_id']; + } + } + // 获取自由注册医生 $user_doctor = $this->getOnlineDoctor($inquiry_type,$not_doctor_ids); if (!empty($user_doctor)){ @@ -1945,18 +1958,7 @@ class UserDoctorService extends BaseService } } - // 检测当前时间5分钟后,坐班时间包含某时间的平台深度合作医生 - $doctor_ids = $this->getNowTimePlatDeepCooperationDoctorId($inquiry_type,strtotime ("+5 minute"),$not_doctor_ids); - if (!empty($doctor_ids)){ - Log::getInstance()->info("检测当前时间5分钟后,坐班时间包含某时间的平台深度合作医生:" ,$doctor_ids); - // 检测医生是否可被分配 - $result = $this->checkDoctorCanBeAssigned($doctor_ids,$patient_id,1,$inquiry_type); - Log::getInstance()->info("检测医生是否可被分配:" ,$result); - if (!empty($result['doctor_id'])){ - return $result['doctor_id']; - } - } return ""; } @@ -2007,6 +2009,51 @@ class UserDoctorService extends BaseService return $doctor_ids; } + /** + * 获取坐班时间包含某时间的平台深度合作医生 + * @param string $inquiry_type + * @param string $time 时间戳 + * @param array $not_doctor_ids 不可选择的医生id数组 + * @return array 医生id + */ + public function getMinPlatDeepCooperationDoctorId(string $inquiry_type,string $time,array $not_doctor_ids = []): array + { + $doctor_ids = []; + + $params = array(); + $params[] = ['inquiry_type','=',$inquiry_type]; + $params[] = ['inquiry_mode','=',1]; + $params[] = ['start_time','<',date('H',$time) . date('i',$time)]; + $params[] = ['end_time','>',date('H',$time) . date('i',$time)]; + + $user_doctor_params = array(); + $user_doctor_params['is_platform_deep_cooperation'] = 1; + if ($inquiry_type == 2){ + // 快速问诊 + $user_doctor_params['is_img_quick_reception'] = 1; + }elseif ($inquiry_type == 4){ + // 问诊购药 + $user_doctor_params['multi_point_status'] = 1; + } + $doctor_inquiry_times = DoctorInquiryTime::getWithDoctorNotInList($params,$user_doctor_params,$not_doctor_ids); + if (!empty($doctor_inquiry_times)){ + foreach ($doctor_inquiry_times as $item){ + // 检测是否存在日期 + if (!empty($item['inquiry_date'])){ + // 获取当前日期 + $now_day = date('Y-m-d',time()); + if ($item['inquiry_date'] == $now_day){ + $doctor_ids[] = $item['doctor_id']; + } + }else{ + $doctor_ids[] = $item['doctor_id']; + } + } + } + + return $doctor_ids; + } + /** * 获取医生每日最大接诊数量 * @param string $doctor_id