diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 9ff4a30..d1014c4 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -248,7 +248,7 @@ class UserDoctor extends Model }); if (!empty($sort_order)){ - if (in_array($sort_order,[1,3,4])){ + if (in_array($sort_order,[1,3,4])){ $query = $query->join('doctor_inquiry_config', function ($query) { $query->on('user_doctor.doctor_id', '=', 'doctor_inquiry_config.doctor_id') ->whereIn('inquiry_type', [1, 3]) @@ -258,28 +258,32 @@ class UserDoctor extends Model }) ->select("user_doctor.*") ->groupBy("user_doctor.doctor_id"); - } + } if ($sort_order == 1) { // 综合-价格从低到高 $query->orderBy('is_recommend', 'desc');// 是否首页推荐(0:否 1:是) - $query->orderBy('avg_response_time', 'asc');// 响应时间快 + $query->orderByRaw('avg_response_time = 0 ASC'); + $query->orderBy('avg_response_time'); $query->orderBy('served_patients_num', 'desc');// 服务数从多到少 $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); } elseif ($sort_order == 2) { // 响应时间快 - $query->orderBy('avg_response_time', 'asc'); + $query->orderByRaw('avg_response_time = 0 ASC'); + $query->orderBy('avg_response_time'); $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } elseif ($sort_order == 3) { // 价格从低到高 $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); - $query->orderBy('avg_response_time', 'asc'); + $query->orderByRaw('avg_response_time = 0 ASC'); + $query->orderBy('avg_response_time'); $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } elseif ($sort_order == 4) { // 价格从高到低 $query->orderBy('doctor_inquiry_config.inquiry_price', 'desc'); - $query->orderBy('avg_response_time', 'asc'); + $query->orderByRaw('avg_response_time = 0 ASC'); + $query->orderBy('avg_response_time'); $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 } elseif ($sort_order == 5) { // 服务数从多到少 @@ -300,6 +304,7 @@ class UserDoctor extends Model return $data; } + /** * 获取是否存在 * @param array $params diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 87db426..cdff3cd 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -93,59 +93,59 @@ class PatientDoctorService extends BaseService $user_doctors = UserDoctor::getInquiryDoctorPage($keyword,$hospital_params, $doctor_params,$doctor_expertise_params, $sort_order, $fields,$page,$per_page); // 处理数据 - if (!empty($user_doctors['data'])) { - foreach ($user_doctors['data'] as &$user_doctor) { - $user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); - - // 处理医生专长 - 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['price'] = 0; - $user_doctor['free_clinic_price'] = 0; - 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) { - // 专家 - $user_doctor['price'] = $doctor_inquiry_config['inquiry_price'] ?? 0; - } - if ($doctor_inquiry_config['inquiry_type'] == 3) { - // 公益 - $user_doctor['free_clinic_price'] = $doctor_inquiry_config['inquiry_price']; - } - } - } - unset($user_doctor['DoctorInquiryConfig']); - } - - // 好评率-超过5个已结束的订单后展示 - $user_doctor['praise_rate'] = floor($user_doctor['praise_rate'] * 0.05 * 100) / 100; - // 响应时间-超过5个已结束的订单后展示 - $user_doctor['avg_response_time'] = (float)floor($user_doctor['avg_response_time'] * 10) / 10; - - // 获取医生订单数 - $params = array(); - $params['doctor_id'] = $user_doctor['doctor_id']; - $params['inquiry_status'] = 6; // 已结束 - $inquiry_order_count = OrderInquiry::getCount($params); - if (empty($inquiry_order_count) || $inquiry_order_count == 0) { - $user_doctor['is_display_score'] = false; - } else { - $user_doctor['is_display_score'] = true; - } - - // 头像 - $user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); - } - } +// if (!empty($user_doctors['data'])) { +// foreach ($user_doctors['data'] as &$user_doctor) { +// $user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); +// +// // 处理医生专长 +// 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['price'] = 0; +// $user_doctor['free_clinic_price'] = 0; +// 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) { +// // 专家 +// $user_doctor['price'] = $doctor_inquiry_config['inquiry_price'] ?? 0; +// } +// if ($doctor_inquiry_config['inquiry_type'] == 3) { +// // 公益 +// $user_doctor['free_clinic_price'] = $doctor_inquiry_config['inquiry_price']; +// } +// } +// } +// unset($user_doctor['DoctorInquiryConfig']); +// } +// +// // 好评率-超过5个已结束的订单后展示 +// $user_doctor['praise_rate'] = floor($user_doctor['praise_rate'] * 0.05 * 100) / 100; +// // 响应时间-超过5个已结束的订单后展示 +// $user_doctor['avg_response_time'] = (float)floor($user_doctor['avg_response_time'] * 10) / 10; +// +// // 获取医生订单数 +// $params = array(); +// $params['doctor_id'] = $user_doctor['doctor_id']; +// $params['inquiry_status'] = 6; // 已结束 +// $inquiry_order_count = OrderInquiry::getCount($params); +// if (empty($inquiry_order_count) || $inquiry_order_count == 0) { +// $user_doctor['is_display_score'] = false; +// } else { +// $user_doctor['is_display_score'] = true; +// } +// +// // 头像 +// $user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); +// } +// } return success($user_doctors); }