diff --git a/app/Model/OrderEvaluation.php b/app/Model/OrderEvaluation.php index b521edd..1638cfe 100644 --- a/app/Model/OrderEvaluation.php +++ b/app/Model/OrderEvaluation.php @@ -7,6 +7,7 @@ namespace App\Model; use Hyperf\Database\Model\Collection; +use Hyperf\Database\Model\Relations\HasMany; use Hyperf\Snowflake\Concern\Snowflake; /** @@ -40,6 +41,14 @@ class OrderEvaluation extends Model protected string $primaryKey = "evaluation_id"; + /** + * 关联问诊订单表 + */ + public function OrderInquiry(): \Hyperf\Database\Model\Relations\BelongsTo + { + return $this->belongsTo(OrderInquiry::class, 'order_inquiry_id','order_inquiry_id'); + } + /** * 获取评价列表-分页 * @param array $params 条件 @@ -50,7 +59,10 @@ class OrderEvaluation extends Model */ public static function getPage(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): array { - $raw = self::where($params)->orderBy('created_at','desc')->paginate($per_page, $fields, "page", $page); + $raw = self::with(['OrderInquiry']) + ->where($params) + ->orderBy('created_at','desc') + ->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $raw->currentPage();// 当前页码 $data['total'] = $raw->total();//数据总数 @@ -72,7 +84,8 @@ class OrderEvaluation extends Model */ public static function getScorePage(array $params, array $avg_score_params,array $fields = ["*"], int $page = null, ?int $per_page = 10): array { - $raw = self::where($params) + $raw = self::with(['OrderInquiry']) + ->where($params) ->whereBetween('avg_score',$avg_score_params) ->orderBy('created_at','desc') ->paginate($per_page, $fields, "page", $page); diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 0e52c8e..8effcc3 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -325,131 +325,6 @@ class UserDoctor extends Model return $data; } -// /** -// * 获取问诊医生列表 -// * 专家问诊-公益问诊共用 -// * @param string $keyword -// * @param array $hospital_params 医院搜索条件 -// * @param array $doctor_params 医生搜索条件 -// * @param array $doctor_expertise_params -// * @param int $is_search_welfare_reception 是否搜索公益问诊 -// * @param string|int $is_first_online 是否优先在线(1:是) -// * @param string|int $sort_order -// * @param array $fields -// * @param int|null $page -// * @param int|null $per_page -// * @return array -// */ -// public static function getInquiryDoctorPage(string $keyword = "", array $hospital_params = [], array $doctor_params = [], array $doctor_expertise_params = [],array $doctor_inquiry_config_params = [],string|int $is_first_online = 0, string|int $sort_order = 1, array $fields = ["*"], int $page = null, ?int $per_page = 10): array -// { -// $query = self::with([ -// "Hospital:hospital_id,hospital_name,hospital_status,hospital_level_name,province_id,city_id", -// "DoctorExpertise", -// "DoctorInquiryConfig" => function ($query) use ($is_search_welfare_reception) { -// $query->where('inquiry_mode', 1); -// if (!empty($is_search_welfare_reception)){ -// $query->where('inquiry_type', 3); -// $query->where('is_enable', 1); -// } -// }, -// "User:user_id,is_online" -// ]) -// ->where($doctor_params) -// ->when($keyword, function ($query, $keyword) { -// $query->where(function ($query) use ($keyword) { -// $query->orwhere("user_name", 'like', '%' . $keyword . '%'); -// $query->orwhere("department_custom_name", 'like', '%' . $keyword . '%'); -// $query->orWhereHas('Hospital', function ($query) use ($keyword) { -// $query->where('hospital_name', 'like', '%' . $keyword . '%'); -// }); -// }); -// }) -// ->whereHas('Hospital', function ($query) use ($hospital_params) { -// $query->where($hospital_params); -// }) -// ->whereHas('DoctorExpertise', function ($query) use ($doctor_expertise_params) { -// $query->where($doctor_expertise_params); -// }) -// ->whereHas('DoctorInquiryConfig', function ($query) use ($is_search_welfare_reception) { -// $params = array(); -// $params['inquiry_mode'] = 1;// 接诊方式:图文 -// if (!empty($is_search_welfare_reception)){ -// $params['is_enable'] = 1; -// } -// -// $query->where($params); -// -// if (!empty($is_search_welfare_reception)){ -// $query->where('inquiry_type', 3); -// } -// }); -// -// if ($is_first_online == 1){ -// $query->join('user as u', function ($query) { -// $query->on('user_doctor.user_id', '=', 'u.user_id'); -// }) -// ->select("user_doctor.*") -// ->orderBy('u.is_online', 'desc'); -// } -// -// if (!empty($sort_order)){ -// 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]) -// ->where('inquiry_mode', 1) -// ->orderBy('inquiry_price', 'desc') -// ->take(1); -// }) -// ->select("user_doctor.*") -// ->groupBy("user_doctor.doctor_id"); -// } -// -// if ($sort_order == 1) { -// // 综合-价格从低到高 -// $query->orderBy('is_recommend', 'desc');// 是否首页推荐(0:否 1:是) -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy('served_patients_num', 'desc');// 服务数从多到少 -// $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); -// } elseif ($sort_order == 2) { -// // 响应时间快 -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } elseif ($sort_order == 3) { -// // 价格从低到高 -// $query->orderBy('doctor_inquiry_config.inquiry_price', 'asc'); -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } elseif ($sort_order == 4) { -// // 价格从高到低 -// $query->orderBy('doctor_inquiry_config.inquiry_price', 'desc'); -// $query->orderByRaw('avg_response_time = 0 ASC'); -// $query->orderBy('avg_response_time'); -// $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } elseif ($sort_order == 5) { -// // 服务数从多到少 -// $query->orderBy('served_patients_num', 'desc'); -// $query->orderBy(Db::raw("convert(substr(gdxz_user_doctor.user_name,1,1) using `GBK`)"), 'asc');// 名称排名 -// } -// } -// -// $result = $query->paginate($per_page, $fields, "page", $page); -// -// $data = array(); -// $data['current_page'] = $result->currentPage();// 当前页码 -// $data['total'] = $result->total();//数据总数 -// $data['data'] = $result->items();//数据 -// $data['per_page'] = $result->perPage();//每页个数 -// $data['last_page'] = $result->lastPage();//最后一页 -// -// return $data; -// } - - /** * 获取问诊医生列表 * 专家问诊-公益问诊共用 diff --git a/app/Request/InquiryRequest.php b/app/Request/InquiryRequest.php index 9486c49..eac240a 100644 --- a/app/Request/InquiryRequest.php +++ b/app/Request/InquiryRequest.php @@ -61,7 +61,7 @@ class InquiryRequest extends FormRequest { return [ 'inquiry_type' => 'required|integer|min:1|max:4', - 'inquiry_mode' => 'required|integer|min:1|max:5', + 'inquiry_mode' => 'required|integer|min:1|max:6', 'patient_id' => 'required', 'family_id' => 'required', 'disease_class_id' => 'required', diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index 58e7f29..22a28b6 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -34,7 +34,6 @@ class PatientDoctorService extends BaseService $city_id = $this->request->input('city_id'); $sort_order = $this->request->input('sort_order',1); $keyword = $this->request->input('keyword',""); -// $is_search_welfare_reception = $this->request->input('is_search_welfare_reception',0); // 是否参加公益图文问诊(0:否 1:是) $inquiry_type = $this->request->input('inquiry_type',0); // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) $inquiry_mode = $this->request->input('inquiry_mode',0); // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊) $is_first_online = $this->request->input('is_first_online',0); // 是否优先在线(1:是) @@ -109,25 +108,6 @@ class PatientDoctorService extends BaseService } } -// // 处理问诊价格 -// $user_doctor['price'] = 0; -// $user_doctor['free_clinic_price'] = 0; -// $user_doctor['multi_point_enable'] = 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 && $doctor_inquiry_config['is_enable'] == 1) { -// // 专家 -// $user_doctor['price'] = $doctor_inquiry_config['inquiry_price'] ?? 0; -// } -// if ($doctor_inquiry_config['inquiry_type'] == 3 && $doctor_inquiry_config['is_enable'] == 1) { -// // 公益 -// $user_doctor['free_clinic_price'] = $doctor_inquiry_config['inquiry_price']; -// } -// } -// } -// } - // 处理可处方字段 $user_doctor['multi_point_enable'] = 0; @@ -543,6 +523,11 @@ class PatientDoctorService extends BaseService $item['service_attitude'] = floor($item['service_attitude'] * 0.05); $item['reply_progress'] = floor($item['reply_progress'] * 0.05); $item['avg_score'] = floor($item['avg_score'] * 0.05); + + $item['inquiry_type'] = $item['OrderInquiry']['inquiry_type']; + $item['inquiry_mode'] = $item['OrderInquiry']['inquiry_mode']; + + unset($item['OrderInquiry']); } } return success($order_evaluation); diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index ae091d9..11a55c8 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -706,6 +706,7 @@ class PatientOrderService extends BaseService $result['order_id'] = ""; // 订单主键id(问诊订单:order_inquiry_id 药品订单:order_product_id) $result['created_at'] = ""; // 创建时间 $result['inquiry_type'] = 0; // 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测) + $result['inquiry_mode'] = 0; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊) $result['pay_config'] = []; // 小程序支付配置 $result['cannot_use_coupon_reason'] = ""; // 不可使用优惠卷原因 @@ -753,6 +754,7 @@ class PatientOrderService extends BaseService $result['order_id'] = $order_inquiry['order_inquiry_id']; $result['created_at'] = $order_inquiry['created_at']; $result['inquiry_type'] = $order_inquiry['inquiry_type']; + $result['inquiry_mode'] = $order_inquiry['inquiry_mode']; // 获取订单金额 $result['amount_total'] = $order_inquiry['amount_total']; // 订单金额 diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index ce6daae..1e6dd87 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -766,6 +766,10 @@ class UserDoctorService extends BaseService if (!empty($order_evaluation['data'])) { foreach ($order_evaluation['data'] as &$item) { $item['avg_score'] = floor($item['avg_score'] * 0.05); + $item['inquiry_type'] = $item['OrderInquiry']['inquiry_type']; + $item['inquiry_mode'] = $item['OrderInquiry']['inquiry_mode']; + + unset($item['OrderInquiry']); } }