diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 68bdc9c..b6483a5 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -203,9 +203,34 @@ class UserDoctor extends Model * @param int|null $per_page * @return array */ - public static function getInquiryDoctorPage(string $keyword = "", array $doctor_params = [], string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array + public static function getInquiryDoctorPage(string $keyword = "", array $doctor_params = [], string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array { - $query = self::where($doctor_params) + $query = self::with([ + "Hospital:hospital_id,hospital_name,hospital_status,hospital_level_name,province_id,city_id", + "DoctorExpertise", + "DoctorExpertise.DiseaseClassExpertise:expertise_id,expertise_name", + "DoctorInquiryConfig" => function ($query) use ($sort_order) { + $params = array(); + $params['inquiry_mode'] = 1;// 接诊方式:图文 + $query->where($params)->whereIn('inquiry_type', [1, 3]); +// if ($sort_order == 1) { +// // 综合 +// $query->orderBy('inquiry_price', 'asc');// 价格从低到高 +// } elseif ($sort_order == 3) { +// // 价格从低到高 +// $query->orderBy('inquiry_price', 'asc'); +// } elseif ($sort_order == 4) { +// // 价格从高到低 +// $query->orderBy('inquiry_price', 'desc');// 价格从高到低 +// } + + return $query; + }, + ]) + ->where($doctor_params) +// ->whereHas('Hospital', function ($query) use ($hospital_params) { +// $query->where($hospital_params); +// }) ->when($keyword, function ($query, $keyword) { $query->where(function ($query) use ($keyword) { $query->orwhere("user_name", 'like', '%' . $keyword . '%'); diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 6ca8c6e..cfcca9d 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -81,33 +81,20 @@ class PatientDoctorService extends BaseService $user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); // 处理医生专长 - $user_doctor['doctor_expertises'] = []; - - $params = array(); - $params['doctor_id'] = $user_doctor['doctor_id']; - $doctor_expertises = DoctorExpertise::getList($params); - if (!empty($doctor_expertises)){ - foreach ($doctor_expertises as &$doctor_expertise){ - $params = array(); - $params['expertise_id'] = $doctor_expertise['expertise_id']; - $disease_class_expertise = DiseaseClassExpertise::getOne($params); - if (!empty($disease_class_expertise)){ - $doctor_expertise['expertise_name'] = $disease_class_expertise['expertise_name']; + if (!empty($user_doctor['DoctorExpertise'])) { + foreach ($user_doctor['DoctorExpertise'] as &$data) { + if (!empty($data['DiseaseClassExpertise'])) { + $data['expertise_name'] = $data['DiseaseClassExpertise']['expertise_name']; } + unset($data['DiseaseClassExpertise']); } - - $user_doctor['doctor_expertises'] = $doctor_expertises; } // 处理问诊价格 $user_doctor['price'] = 0; $user_doctor['free_clinic_price'] = 0; - - $params = array(); - $params['inquiry_mode'] = 1; - $doctor_inquiry_configs = DoctorInquiryConfig::getInquiryConfigList($params,['*']); - if (!empty($doctor_inquiry_configs)) { - foreach ($doctor_inquiry_configs as $doctor_inquiry_config) { + if (!empty($user_doctor['DoctorInquiryConfig'])) { + foreach ($user_doctor['DoctorInquiryConfig'] as $doctor_inquiry_config) { if ($doctor_inquiry_config['inquiry_mode'] == 1) { if ($doctor_inquiry_config['inquiry_type'] == 1) { // 专家 @@ -119,26 +106,7 @@ class PatientDoctorService extends BaseService } } } - unset($doctor_inquiry_configs); - } - - // 处理医生医院 - $user_doctor['hospital'] = []; - - $params = array(); - $params['hospital_id'] = $user_doctor['hospital_id']; - - $fields = [ - 'hospital_id', - 'hospital_name', - 'hospital_status', - 'hospital_level_name', - 'province_id', - 'city_id' - ]; - $hospital = Hospital::getOne($params,$fields); - if (!empty($hospital)){ - $user_doctor['hospital'] = $hospital; + unset($user_doctor['DoctorInquiryConfig']); } // 好评率-超过5个已结束的订单后展示