修改相应时间快排序问题

This commit is contained in:
wucongxing 2023-08-30 16:51:34 +08:00
parent bd356a8bbe
commit 136af7bd66
2 changed files with 64 additions and 59 deletions

View File

@ -248,7 +248,7 @@ class UserDoctor extends Model
}); });
if (!empty($sort_order)){ 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 = $query->join('doctor_inquiry_config', function ($query) {
$query->on('user_doctor.doctor_id', '=', 'doctor_inquiry_config.doctor_id') $query->on('user_doctor.doctor_id', '=', 'doctor_inquiry_config.doctor_id')
->whereIn('inquiry_type', [1, 3]) ->whereIn('inquiry_type', [1, 3])
@ -258,28 +258,32 @@ class UserDoctor extends Model
}) })
->select("user_doctor.*") ->select("user_doctor.*")
->groupBy("user_doctor.doctor_id"); ->groupBy("user_doctor.doctor_id");
} }
if ($sort_order == 1) { if ($sort_order == 1) {
// 综合-价格从低到高 // 综合-价格从低到高
$query->orderBy('is_recommend', 'desc');// 是否首页推荐0:否 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('served_patients_num', 'desc');// 服务数从多到少
$query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名 $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名
$query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc');
} elseif ($sort_order == 2) { } 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');// 名称排名 $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名
} elseif ($sort_order == 3) { } elseif ($sort_order == 3) {
// 价格从低到高 // 价格从低到高
$query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); $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');// 名称排名 $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名
} elseif ($sort_order == 4) { } elseif ($sort_order == 4) {
// 价格从高到低 // 价格从高到低
$query->orderBy('doctor_inquiry_config.inquiry_price', 'desc'); $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');// 名称排名 $query->orderBy(Db::raw("convert(substr(user_name,1,1) using `GBK`)"), 'asc');// 名称排名
} elseif ($sort_order == 5) { } elseif ($sort_order == 5) {
// 服务数从多到少 // 服务数从多到少
@ -300,6 +304,7 @@ class UserDoctor extends Model
return $data; return $data;
} }
/** /**
* 获取是否存在 * 获取是否存在
* @param array $params * @param array $params

View File

@ -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); $user_doctors = UserDoctor::getInquiryDoctorPage($keyword,$hospital_params, $doctor_params,$doctor_expertise_params, $sort_order, $fields,$page,$per_page);
// 处理数据 // 处理数据
if (!empty($user_doctors['data'])) { // if (!empty($user_doctors['data'])) {
foreach ($user_doctors['data'] as &$user_doctor) { // foreach ($user_doctors['data'] as &$user_doctor) {
$user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); // $user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']);
//
// 处理医生专长 // // 处理医生专长
if (!empty($user_doctor['DoctorExpertise'])) { // if (!empty($user_doctor['DoctorExpertise'])) {
foreach ($user_doctor['DoctorExpertise'] as &$data) { // foreach ($user_doctor['DoctorExpertise'] as &$data) {
if (!empty($data['DiseaseClassExpertise'])) { // if (!empty($data['DiseaseClassExpertise'])) {
$data['expertise_name'] = $data['DiseaseClassExpertise']['expertise_name']; // $data['expertise_name'] = $data['DiseaseClassExpertise']['expertise_name'];
} // }
unset($data['DiseaseClassExpertise']); // unset($data['DiseaseClassExpertise']);
} // }
} // }
//
// 处理问诊价格 // // 处理问诊价格
$user_doctor['price'] = 0; // $user_doctor['price'] = 0;
$user_doctor['free_clinic_price'] = 0; // $user_doctor['free_clinic_price'] = 0;
if (!empty($user_doctor['DoctorInquiryConfig'])) { // if (!empty($user_doctor['DoctorInquiryConfig'])) {
foreach ($user_doctor['DoctorInquiryConfig'] as $doctor_inquiry_config) { // foreach ($user_doctor['DoctorInquiryConfig'] as $doctor_inquiry_config) {
if ($doctor_inquiry_config['inquiry_mode'] == 1) { // if ($doctor_inquiry_config['inquiry_mode'] == 1) {
if ($doctor_inquiry_config['inquiry_type'] == 1) { // if ($doctor_inquiry_config['inquiry_type'] == 1) {
// 专家 // // 专家
$user_doctor['price'] = $doctor_inquiry_config['inquiry_price'] ?? 0; // $user_doctor['price'] = $doctor_inquiry_config['inquiry_price'] ?? 0;
} // }
if ($doctor_inquiry_config['inquiry_type'] == 3) { // if ($doctor_inquiry_config['inquiry_type'] == 3) {
// 公益 // // 公益
$user_doctor['free_clinic_price'] = $doctor_inquiry_config['inquiry_price']; // $user_doctor['free_clinic_price'] = $doctor_inquiry_config['inquiry_price'];
} // }
} // }
} // }
unset($user_doctor['DoctorInquiryConfig']); // unset($user_doctor['DoctorInquiryConfig']);
} // }
//
// 好评率-超过5个已结束的订单后展示 // // 好评率-超过5个已结束的订单后展示
$user_doctor['praise_rate'] = floor($user_doctor['praise_rate'] * 0.05 * 100) / 100; // $user_doctor['praise_rate'] = floor($user_doctor['praise_rate'] * 0.05 * 100) / 100;
// 响应时间-超过5个已结束的订单后展示 // // 响应时间-超过5个已结束的订单后展示
$user_doctor['avg_response_time'] = (float)floor($user_doctor['avg_response_time'] * 10) / 10; // $user_doctor['avg_response_time'] = (float)floor($user_doctor['avg_response_time'] * 10) / 10;
//
// 获取医生订单数 // // 获取医生订单数
$params = array(); // $params = array();
$params['doctor_id'] = $user_doctor['doctor_id']; // $params['doctor_id'] = $user_doctor['doctor_id'];
$params['inquiry_status'] = 6; // 已结束 // $params['inquiry_status'] = 6; // 已结束
$inquiry_order_count = OrderInquiry::getCount($params); // $inquiry_order_count = OrderInquiry::getCount($params);
if (empty($inquiry_order_count) || $inquiry_order_count == 0) { // if (empty($inquiry_order_count) || $inquiry_order_count == 0) {
$user_doctor['is_display_score'] = false; // $user_doctor['is_display_score'] = false;
} else { // } else {
$user_doctor['is_display_score'] = true; // $user_doctor['is_display_score'] = true;
} // }
//
// 头像 // // 头像
$user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); // $user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']);
} // }
} // }
return success($user_doctors); return success($user_doctors);
} }