request->input('expertise_id'); $province_id = $this->request->input('province_id'); $city_id = $this->request->input('city_id'); $sort_order = $this->request->input('sort_order'); $keyword = $this->request->input('keyword'); // 组合条件 $hospital_params = array();// 医院搜索 $doctor_params = array();// 医生搜索 $doctor_expertise_params = array();// 医生专长搜索 // 省市区 if (!empty($province_id) ){ if (empty($city_id)){ // 省份存在时需和城市在一块 return fail(HttpEnumCode::CLIENT_HTTP_ERROR); } $hospital_params[] = ['province_id','=',$province_id]; $hospital_params[] = ['city_id','=',$city_id]; } // 医生专长 if (!empty($expertise_id)){ $doctor_expertise_params['expertise_id'] = $expertise_id; } // 固定医生查询条件 $doctor_params['status'] = 1; // 状态(0:禁用 1:正常 2:删除) $doctor_params["iden_auth_status"] = 1;// 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) $doctor_params["is_online"] = 1;// 是否在线(0:不在线 1:在线) $doctor_params["is_img_expert_reception"] = 1;// 是否参加专家图文接诊(0:否 1:是) $fields = [ "doctor_id", "user_id", "user_name", "multi_point_status", "is_bind_bank", "is_recommend", "sex", "age", "avatar", "doctor_title", "department_custom_id", "department_custom_name", "hospital_id", "served_patients_num", "praise_rate", "avg_response_time", "number_of_fans", "is_online", "is_img_expert_reception", "is_img_welfare_reception", "is_platform_deep_cooperation", "be_good_at", ]; $user_doctors = UserDoctor::getInquiryDoctorPage($keyword,$hospital_params,$doctor_params,$doctor_expertise_params,$sort_order,$fields); // 处理数据 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'] = ceil($user_doctor['praise_rate'] * 0.05 * 100) / 100; // 响应时间-超过5个已结束的订单后展示 $user_doctor['avg_response_time'] = ceil($user_doctor['avg_response_time'] * 0.05 * 100) / 100 * 60; // 获取医生订单数 $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); } /** * 获取问诊医生详情 * @return array */ public function getInquiryDoctorInfo(): array { $doctor_id = $this->request->route('doctor_id'); $user_info = $this->request->getAttribute("userInfo") ?? []; $result = array(); $result['hospital'] = []; $result['days'] = 0; $result['doctor_inquiry_config'] = []; $fields = [ "doctor_id", "user_id", "user_name", "iden_auth_status", "multi_point_status", "sex", "age", "avatar", "doctor_title", "department_custom_id", "department_custom_name", "hospital_id", "served_patients_num", "praise_rate", "avg_response_time", "number_of_fans", "is_online", "is_img_expert_reception", "is_img_welfare_reception", "is_platform_deep_cooperation", "be_good_at", ]; $params = array(); $params['doctor_id'] = $doctor_id; $params['status'] = 1; // 状态(0:禁用 1:正常 2:删除) $params["iden_auth_status"] = 1;// 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) $user_doctor = UserDoctor::getOne($params,$fields); if (empty($user_doctor)){ return fail(HttpEnumCode::HTTP_SUCCESS,"医生错误"); } $result = $user_doctor->toArray(); $result['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); $result['hospital'] = []; $result['days'] = 0; $result['doctor_inquiry_config'] = 0; // 获取医生医院数据 $fields = [ 'hospital_id', 'hospital_name', 'hospital_level_name', ]; $params = array(); $params['hospital_id'] = $user_doctor['hospital_id']; $hospital = Hospital::getOne($params,$fields); if (!empty($hospital)){ $result['hospital'] = $hospital; } // 获取服务天数 $params = array(); $params['patient_id'] = $user_info['client_user_id']; $params['doctor_id'] = $doctor_id; $params['history_status'] = 1; $patient_history_doctor = PatientHistoryInquiryModel::getOne($params); // 按照天来计算,当日为1,前一天为2 未服务过为0 if (!empty($patient_history_doctor['created_at'])) { $result['days'] = ceil((strtotime(date('Y-m-d', strtotime('+1 day'))) - strtotime($patient_history_doctor['created_at'])) / 86400); } // 获取关注状态 $params = array(); $params['patient_id'] = $user_info['client_user_id']; $params['doctor_id'] = $doctor_id; $result['follow'] = PatientFollow::getExists($params); // 获取问诊价格 // 专家-公益 $params = array(); $params[] = ['doctor_id','=',$doctor_id]; $params[] = ['inquiry_mode','=',1];// 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) $doctor_inquiry_config = DoctorInquiryConfigModel::getInquiryConfigList($params); if (!empty($doctor_inquiry_config)){ foreach ($doctor_inquiry_config as &$value){ // 获取医生当日已付款的全部订单 $params = array(); $params[] = ['doctor_id','=',$doctor_id]; $params[] = ['inquiry_type','=',$value['inquiry_type']]; $params[] = ['inquiry_mode','=',1]; $params[] = ['inquiry_status','=',3]; $params[] = ['inquiry_refund_status','=',0]; $value['order_inquiry_count'] = OrderInquiry::getCount($params); } $result['doctor_inquiry_config'] = $doctor_inquiry_config; } // 好评率-超过5个已结束的订单后展示 $result['praise_rate'] = ceil($user_doctor['praise_rate'] * 0.05 * 100) / 100; // 响应时间-超过5个已结束的订单后展示 $result['avg_response_time'] = ceil($user_doctor['avg_response_time'] * 0.05 * 100) / 100 * 60; $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){ $result['is_display_score'] = false; }else{ $result['is_display_score'] = true; } // 头像 $result['avatar'] = addAliyunOssWebsite($user_doctor['avatar']); return success($result); } /** * 医生详情简介-详情中的简介 * @return array */ public function getDoctorProfile(): array { $doctor_id = $this->request->route('doctor_id'); $user_info = $this->request->getAttribute("userInfo") ?? []; $fields = [ "doctor_id", "user_id", "user_name", "status", "iden_auth_status", "avatar", "doctor_title", "department_custom_name", "hospital_id", "be_good_at", "brief_introduction", ]; $params = array(); $params['doctor_id'] = $doctor_id; $params['status'] = 1; // 状态(0:禁用 1:正常 2:删除) $params["iden_auth_status"] = 1;// 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) $user_doctor = UserDoctor::getOne($params,$fields); if (empty($user_doctor)){ return fail(HttpEnumCode::CLIENT_HTTP_ERROR); } $user_doctor = $user_doctor->toArray(); $user_doctor['doctor_title_name'] = empty($user_doctor['doctor_title']) ? "" : DoctorTitleCode::getMessage($user_doctor['doctor_title']); // 获取医生医院数据 $fields = [ 'hospital_id', 'hospital_name', 'hospital_level_name', ]; $params = array(); $params['hospital_id'] = $user_doctor['hospital_id']; $hospital = Hospital::getOne($params,$fields); if (!empty($hospital)){ $user_doctor['hospital'] = $hospital; } // 获取医生已选择专长 $UserDoctorService = new UserDoctorService(); $user_doctor['doctor_expertise'] = $UserDoctorService->getDoctorSelectedExpertise($doctor_id); return success($user_doctor); } }