From 547d4ded888e7a3d1467bd0deaa1274ef7dce8eb Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 3 Apr 2024 13:49:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E9=97=AE=E8=AF=8A=E5=BC=80=E5=85=B3=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BF=A1=E6=81=AF=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E3=80=82=E4=BB=A5=E5=8F=8A=E6=AF=8F=E6=97=A5=E6=8E=A5=E8=AF=8A?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E3=80=81=E6=8E=A5=E8=AF=8A=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E8=B5=8B=E5=80=BC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DoctorConfigDifficultConsultation.php | 81 ++++++++++ app/Model/DoctorConfigHealthPackage.php | 79 ++++++++++ app/Services/DoctorInquiryService.php | 148 +++++++++++------- 3 files changed, 255 insertions(+), 53 deletions(-) create mode 100644 app/Model/DoctorConfigDifficultConsultation.php create mode 100644 app/Model/DoctorConfigHealthPackage.php diff --git a/app/Model/DoctorConfigDifficultConsultation.php b/app/Model/DoctorConfigDifficultConsultation.php new file mode 100644 index 0000000..a4880c7 --- /dev/null +++ b/app/Model/DoctorConfigDifficultConsultation.php @@ -0,0 +1,81 @@ +first($fields); + } + + /** + * 多条 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params, array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } + + /** + * 新增 + * @param array $data + * @return DoctorConfigDifficultConsultation|\Hyperf\Database\Model\Model + */ + public static function addDoctorConfigDifficultConsultation(array $data): \Hyperf\Database\Model\Model|DoctorConfigDifficultConsultation + { + return self::create($data); + } + + /** + * 修改 + * @param array $params + * @param array $data + * @return int + */ + public static function edit(array $params = [], array $data = []): int + { + return self::where($params)->update($data); + } +} diff --git a/app/Model/DoctorConfigHealthPackage.php b/app/Model/DoctorConfigHealthPackage.php new file mode 100644 index 0000000..a30b92d --- /dev/null +++ b/app/Model/DoctorConfigHealthPackage.php @@ -0,0 +1,79 @@ +first($fields); + } + + /** + * 多条 + * @param array $params + * @param array $fields + * @return Collection|array + */ + public static function getList(array $params, array $fields = ['*']): Collection|array + { + return self::where($params)->get($fields); + } + + /** + * 新增 + * @param array $data + * @return DoctorConfigHealthPackage|\Hyperf\Database\Model\Model + */ + public static function addDoctorConfigHealthPackage(array $data): \Hyperf\Database\Model\Model|DoctorConfigHealthPackage + { + return self::create($data); + } + + /** + * 修改 + * @param array $params + * @param array $data + * @return int + */ + public static function edit(array $params = [], array $data = []): int + { + return self::where($params)->update($data); + } +} diff --git a/app/Services/DoctorInquiryService.php b/app/Services/DoctorInquiryService.php index 4776e58..7577f14 100644 --- a/app/Services/DoctorInquiryService.php +++ b/app/Services/DoctorInquiryService.php @@ -4,8 +4,10 @@ namespace App\Services; use App\Constants\HttpEnumCode; use App\Exception\BusinessException; +use App\Model\DoctorConfigDifficultConsultation; use App\Model\DoctorConfigFollowPackage; use App\Model\DoctorConfigFollowPackageItem; +use App\Model\DoctorConfigHealthPackage; use App\Model\DoctorInquiryConfig; use App\Model\DoctorInquiryConfigService; use App\Model\DoctorInquiryPriceRecord; @@ -68,7 +70,7 @@ class DoctorInquiryService extends BaseService $params['inquiry_mode'] = $inquiry_mode; $doctor_inquiry_config = DoctorInquiryConfig::getOne($params); if (!empty($doctor_inquiry_config)) { - if ($doctor_inquiry_config['is_enable'] == 1){ + if ($doctor_inquiry_config['is_enable'] == 1) { $is_open = 1; } } @@ -293,6 +295,37 @@ class DoctorInquiryService extends BaseService return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡"); } + // 判断对应信息是否存在 + if ($inquiry_type == 1 && $inquiry_mode == 6) { + // 疑难会诊 + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $doctor_config_difficult_consultation = DoctorConfigDifficultConsultation::getOne($params); + if (empty($doctor_config_difficult_consultation)){ + return fail(HttpEnumCode::HTTP_ERROR, "请设置服务价格后开启"); + } + } + + // 随访包 + if ($inquiry_type == 1 && $inquiry_mode == 9) { + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params); + if (empty($doctor_config_follow_package)){ + return fail(HttpEnumCode::HTTP_ERROR, "请添加服务内容后开启"); + } + } + + // 健康包 + if ($inquiry_type == 1 && $inquiry_mode == 8) { + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $doctor_config_health_package = DoctorConfigHealthPackage::getOne($params); + if (empty($doctor_config_health_package)){ + return fail(HttpEnumCode::HTTP_ERROR, "请设置服务价格后开启"); + } + } + Db::beginTransaction(); try { @@ -303,6 +336,10 @@ class DoctorInquiryService extends BaseService $params['inquiry_mode'] = $inquiry_mode; $doctor_inquiry_config = DoctorInquiryConfig::getOne($params); if (empty($doctor_inquiry_config)) { + // 此处两个参数都默认设置为0,随访包以及健康包使用不到 + $work_num_day = 0; // 每日接诊数量 + $inquiry_price = 0; // 接诊价格(专家问诊-公益问诊) + // 获取系统问诊配置表 $params = array(); $params['inquiry_type'] = $inquiry_type; @@ -313,6 +350,12 @@ class DoctorInquiryService extends BaseService return fail(HttpEnumCode::SERVER_ERROR); } + // 获取系统问诊配置表 + if ($inquiry_mode != 8 && $inquiry_mode != 9){ + $work_num_day = $system_inquiry_config['default_work_num_day'] ?: 0; + $inquiry_price = $system_inquiry_config['inquiry_price']; + } + // 快速问诊,需创建 $data = array(); $data['doctor_id'] = $user_info['client_user_id']; @@ -321,15 +364,14 @@ class DoctorInquiryService extends BaseService $data['inquiry_mode'] = $inquiry_mode; $data['is_enable'] = 1; // 是否启用(0:否 1:是) $data['last_enable_method'] = 1; // 最后开启方式(1:自己 2:后台) - $data['work_num_day'] = $system_inquiry_config['default_work_num_day'] ?: 0; - $data['inquiry_price'] = $system_inquiry_config['inquiry_price']; - + $data['work_num_day'] = $work_num_day; + $data['inquiry_price'] = $inquiry_price; $doctor_inquiry_config = DoctorInquiryConfig::addInquiryConfig($data); if (empty($doctor_inquiry_config)) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR); } - }else{ + } else { // 已存在问诊配置,进行修改 $params = array(); $params['inquiry_config_id'] = $doctor_inquiry_config["inquiry_config_id"]; @@ -337,11 +379,11 @@ class DoctorInquiryService extends BaseService $data = array(); $data['is_enable'] = $is_open; $data['last_enable_method'] = 1; - DoctorInquiryConfig::editInquiryConfig($params,$data); + DoctorInquiryConfig::editInquiryConfig($params, $data); } Db::commit(); - }catch (\Throwable $e){ + } catch (\Throwable $e) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage()); } @@ -515,7 +557,7 @@ class DoctorInquiryService extends BaseService * @param string|int $inquiry_mode 订单问诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) * @param string|int $doctor_id 医生id */ - public function getDoctorInquiryPrice(string|int $inquiry_type, string|int $inquiry_mode, string|int $doctor_id):float + public function getDoctorInquiryPrice(string|int $inquiry_type, string|int $inquiry_mode, string|int $doctor_id): float { // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊) if ($inquiry_type == 1 || $inquiry_type == 3) { @@ -559,7 +601,7 @@ class DoctorInquiryService extends BaseService $inquiry_type = $this->request->input('inquiry_type');// 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊) $inquiry_mode = $this->request->input('inquiry_mode');// 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包) - if ($inquiry_mode != 6){ + if ($inquiry_mode != 6) { return fail(); } @@ -588,9 +630,9 @@ class DoctorInquiryService extends BaseService $params['inquiry_type'] = $inquiry_type; $params['inquiry_mode'] = $inquiry_mode; $doctor_inquiry_config_service = DoctorInquiryConfigService::getOne($params); - if (empty($doctor_inquiry_config_service)){ + if (empty($doctor_inquiry_config_service)) { return success(null); - }else{ + } else { return success($doctor_inquiry_config_service->toArray()); } } @@ -633,7 +675,7 @@ class DoctorInquiryService extends BaseService $params['inquiry_type'] = 1; $params['inquiry_mode'] = 6; $doctor_inquiry_config_service = DoctorInquiryConfigService::getOne($params); - if (!empty($doctor_inquiry_config_service)){ + if (!empty($doctor_inquiry_config_service)) { return fail(HttpEnumCode::HTTP_ERROR, "已存在服务设置,请勿重复设置"); } @@ -642,11 +684,11 @@ class DoctorInquiryService extends BaseService $data['inquiry_type'] = 1; $data['inquiry_mode'] = 6; $data['service_content'] = $service_content; - $data['service_process'] =$service_process; - $data['service_period'] =$service_period; - $data['service_rounds'] =$service_rounds; + $data['service_process'] = $service_process; + $data['service_period'] = $service_period; + $data['service_rounds'] = $service_rounds; $doctor_inquiry_config_service = DoctorInquiryConfigService::addDoctorInquiryConfigService($data); - if (empty($doctor_inquiry_config_service)){ + if (empty($doctor_inquiry_config_service)) { return fail(); } @@ -692,32 +734,32 @@ class DoctorInquiryService extends BaseService $params['config_service_id'] = $config_service_id; $params['doctor_id'] = $user_info['client_user_id']; $doctor_inquiry_config_service = DoctorInquiryConfigService::getOne($params); - if (empty($doctor_inquiry_config_service)){ + if (empty($doctor_inquiry_config_service)) { return fail(); } $data = array(); - if ($doctor_inquiry_config_service['service_content'] != $service_content){ + if ($doctor_inquiry_config_service['service_content'] != $service_content) { $data['service_content'] = $service_content; } - if ($doctor_inquiry_config_service['service_process'] != $service_process){ + if ($doctor_inquiry_config_service['service_process'] != $service_process) { $data['service_process'] = $service_process; } - if ($doctor_inquiry_config_service['service_period'] != $service_period){ + if ($doctor_inquiry_config_service['service_period'] != $service_period) { $data['service_period'] = $service_period; } - if ($doctor_inquiry_config_service['service_rounds'] != $service_rounds){ + if ($doctor_inquiry_config_service['service_rounds'] != $service_rounds) { $data['service_rounds'] = $service_rounds; } - if (!empty($data)){ + if (!empty($data)) { $params = array(); $params['config_service_id'] = $doctor_inquiry_config_service['config_service_id']; - $res = DoctorInquiryConfigService::edit($params,$data); - if (!$res){ + $res = DoctorInquiryConfigService::edit($params, $data); + if (!$res) { return fail(); } } @@ -756,9 +798,9 @@ class DoctorInquiryService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; $doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params); - if (empty($doctor_config_follow_package)){ + if (empty($doctor_config_follow_package)) { return success(null); - }else{ + } else { return success($doctor_config_follow_package->toArray()); } } @@ -796,11 +838,11 @@ class DoctorInquiryService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; $doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params); - if (!empty($doctor_config_follow_package)){ + if (!empty($doctor_config_follow_package)) { $params = array(); $params['follow_package_id'] = $doctor_config_follow_package['follow_package_id']; $doctor_config_follow_package_item = DoctorConfigFollowPackageItem::getList($params); - if (!empty($doctor_config_follow_package_item)){ + if (!empty($doctor_config_follow_package_item)) { $result = $doctor_config_follow_package_item->toArray(); } } @@ -820,8 +862,8 @@ class DoctorInquiryService extends BaseService $service_rounds = $this->request->input('service_rounds'); // 服务回合数(0表示不限次) $items = $this->request->input('items'); // 随访包内容数据 - if ($service_rounds != 0){ - return fail(HttpEnumCode::HTTP_ERROR,"服务回合数只允许为无限次"); + if ($service_rounds != 0) { + return fail(HttpEnumCode::HTTP_ERROR, "服务回合数只允许为无限次"); } // 获取医生信息 @@ -847,7 +889,7 @@ class DoctorInquiryService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; $doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params); - if (!empty($doctor_config_follow_package)){ + if (!empty($doctor_config_follow_package)) { return fail(HttpEnumCode::HTTP_ERROR, "已存在随访包配置,请勿重复设置"); } @@ -859,28 +901,28 @@ class DoctorInquiryService extends BaseService $data['monthly_frequency'] = $monthly_frequency; $data['service_rounds'] = $service_rounds; $doctor_config_follow_package = DoctorConfigFollowPackage::addDoctorConfigFollowPackage($data); - if (empty($doctor_config_follow_package)){ + if (empty($doctor_config_follow_package)) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "添加失败"); } - foreach ($items as $item){ - if (empty($item['service_period'])){ + foreach ($items as $item) { + if (empty($item['service_period'])) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "请填写服务周期"); } - if (!in_array($item['service_period'],[30,90,180,360])){ + if (!in_array($item['service_period'], [30, 90, 180, 360])) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "请填写服务周期"); } - if (empty($item['service_price'])){ + if (empty($item['service_price'])) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "请填写服务价格"); } - if ($item['service_price'] < 10 || $item['service_price'] > 9999){ + if ($item['service_price'] < 10 || $item['service_price'] > 9999) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "服务价格只允许设置在10-9999范围内"); } @@ -891,14 +933,14 @@ class DoctorInquiryService extends BaseService $data['service_period'] = $item['service_period']; $data['service_price'] = $item['service_price']; $doctor_config_follow_package_item = DoctorConfigFollowPackageItem::addDoctorConfigFollowPackageItem($data); - if (empty($doctor_config_follow_package_item)){ + if (empty($doctor_config_follow_package_item)) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "保存失败"); } } Db::commit(); - }catch (\Throwable $e){ + } catch (\Throwable $e) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage()); } @@ -918,8 +960,8 @@ class DoctorInquiryService extends BaseService $service_rounds = $this->request->input('service_rounds'); // 服务回合数(0表示不限次) $items = $this->request->input('items'); // 随访包内容数据 - if ($service_rounds != 0){ - return fail(HttpEnumCode::HTTP_ERROR,"服务回合数只允许为无限次"); + if ($service_rounds != 0) { + return fail(HttpEnumCode::HTTP_ERROR, "服务回合数只允许为无限次"); } // 获取医生信息 @@ -945,7 +987,7 @@ class DoctorInquiryService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; $doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params); - if (empty($doctor_config_follow_package)){ + if (empty($doctor_config_follow_package)) { return fail(HttpEnumCode::HTTP_ERROR, "请添加后再修改"); } @@ -954,18 +996,18 @@ class DoctorInquiryService extends BaseService try { // 修改随访包数据 $follow_package_data = array(); - if ($doctor_config_follow_package['monthly_frequency'] != $monthly_frequency){ + if ($doctor_config_follow_package['monthly_frequency'] != $monthly_frequency) { $follow_package_data['monthly_frequency'] = $monthly_frequency; } - if ($doctor_config_follow_package['service_rounds'] != $service_rounds){ + if ($doctor_config_follow_package['service_rounds'] != $service_rounds) { $follow_package_data['service_rounds'] = $service_rounds; } - if (!empty($follow_package_data)){ + if (!empty($follow_package_data)) { $params = array(); $params['follow_package_id'] = $doctor_config_follow_package['follow_package_id']; - DoctorConfigFollowPackage::edit($params,$follow_package_data); + DoctorConfigFollowPackage::edit($params, $follow_package_data); } // 删除随访包内容明细 @@ -974,23 +1016,23 @@ class DoctorInquiryService extends BaseService DoctorConfigFollowPackageItem::del($params); // 新增随访包内容明细 - foreach ($items as $item){ - if (empty($item['service_period'])){ + foreach ($items as $item) { + if (empty($item['service_period'])) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "请填写服务周期"); } - if (!in_array($item['service_period'],[30,90,180,360])){ + if (!in_array($item['service_period'], [30, 90, 180, 360])) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "请填写服务周期"); } - if (empty($item['service_price'])){ + if (empty($item['service_price'])) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "请填写服务价格"); } - if ($item['service_price'] < 10 || $item['service_price'] > 9999){ + if ($item['service_price'] < 10 || $item['service_price'] > 9999) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "服务价格只允许设置在10-9999范围内"); } @@ -1001,14 +1043,14 @@ class DoctorInquiryService extends BaseService $data['service_period'] = $item['service_period']; $data['service_price'] = $item['service_price']; $doctor_config_follow_package_item = DoctorConfigFollowPackageItem::addDoctorConfigFollowPackageItem($data); - if (empty($doctor_config_follow_package_item)){ + if (empty($doctor_config_follow_package_item)) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "保存失败"); } } Db::commit(); - }catch (\Throwable $e){ + } catch (\Throwable $e) { Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage()); }