diff --git a/app/Services/DoctorInquiryService.php b/app/Services/DoctorInquiryService.php index 290d267..db8cd3a 100644 --- a/app/Services/DoctorInquiryService.php +++ b/app/Services/DoctorInquiryService.php @@ -163,75 +163,62 @@ class DoctorInquiryService extends BaseService return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡"); } - // 医生接诊配置表 - $params = array(); - $params['doctor_id'] = $user_info['client_user_id']; - $params['inquiry_type'] = $inquiry_type; - $params['inquiry_mode'] = $inquiry_mode; - $doctor_inquiry_config = DoctorInquiryConfig::getOne($params); - if (empty($doctor_inquiry_config)) { - if ($inquiry_type != 2) { - // 快速问诊可能会存在未创建的情况 - return fail(HttpEnumCode::HTTP_ERROR, "请先完善问诊配置"); - } - } - Db::beginTransaction(); + try { + // 医生接诊配置表 $params = array(); $params['doctor_id'] = $user_info['client_user_id']; + $params['inquiry_type'] = $inquiry_type; + $params['inquiry_mode'] = $inquiry_mode; + $doctor_inquiry_config = DoctorInquiryConfig::getOne($params); + if (empty($doctor_inquiry_config)) { + // 无问诊配置,快速问诊创建问诊配置并打开问诊。其余类型直接返回错误 + if ($inquiry_type != 2){ + // 快速问诊可能会存在未创建的情况 + Db::rollBack(); + return fail(HttpEnumCode::HTTP_ERROR, "请先完善问诊配置"); + } - $data = array(); - if ($inquiry_type == 1) { - // 专家 - $data['is_img_expert_reception'] = $is_open; - $data['is_online'] = $is_open; - } elseif ($inquiry_type == 2) { - // 快速 - $data['is_img_quick_reception'] = $is_open; - } elseif ($inquiry_type == 3) { - // 公益 - $data['is_img_welfare_reception'] = $is_open; - } - - UserDoctor::editUserDoctor($params, $data); - - if ($inquiry_type == 2 && $is_open == 1) { + // 获取系统问诊配置表 $params = array(); - $params['doctor_id'] = $user_info['client_user_id']; $params['inquiry_type'] = $inquiry_type; $params['inquiry_mode'] = $inquiry_mode; - $doctor_inquiry_config = DoctorInquiryConfig::getOne($params); - if (empty($doctor_inquiry_config)) { - // 系统问诊配置表 - $params = array(); - $params['inquiry_type'] = $inquiry_type; - $params['inquiry_mode'] = $inquiry_mode; - $system_inquiry_config = SystemInquiryConfig::getOne($params); - if (empty($system_inquiry_config)) { - Db::rollBack(); - return fail(HttpEnumCode::SERVER_ERROR); - } - - // 快速问诊,需创建 - $data = array(); - $data['doctor_id'] = $user_info['client_user_id']; - $data['system_inquiry_config_id'] = $system_inquiry_config['system_inquiry_config_id']; - $data['inquiry_type'] = $inquiry_type; - $data['inquiry_mode'] = $inquiry_mode; - $data['work_num_day'] = $system_inquiry_config['max_work_num_day'] ?: 0; - $data['inquiry_price'] = $system_inquiry_config['inquiry_price']; - - $doctor_inquiry_config = DoctorInquiryConfig::addInquiryConfig($data); - if (empty($doctor_inquiry_config)) { - Db::rollBack(); - return fail(HttpEnumCode::SERVER_ERROR); - } + $system_inquiry_config = SystemInquiryConfig::getOne($params); + if (empty($system_inquiry_config)) { + Db::rollBack(); + return fail(HttpEnumCode::SERVER_ERROR); } + + // 快速问诊,需创建 + $data = array(); + $data['doctor_id'] = $user_info['client_user_id']; + $data['system_inquiry_config_id'] = $system_inquiry_config['system_inquiry_config_id']; + $data['inquiry_type'] = $inquiry_type; + $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['max_work_num_day'] ?: 0; + $data['inquiry_price'] = $system_inquiry_config['inquiry_price']; + + $doctor_inquiry_config = DoctorInquiryConfig::addInquiryConfig($data); + if (empty($doctor_inquiry_config)) { + Db::rollBack(); + return fail(HttpEnumCode::SERVER_ERROR); + } + }else{ + // 已存在问诊配置,进行修改 + $params = array(); + $params['inquiry_config_id'] = $doctor_inquiry_config["inquiry_config_id"]; + + $data = array(); + $data['is_enable'] = $is_open; + $data['last_enable_method'] = 1; + DoctorInquiryConfig::editInquiryConfig($params,$data); } Db::commit(); - } catch (\Exception $e) { + }catch (\Throwable $e){ Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage()); }