1174 lines
46 KiB
PHP
1174 lines
46 KiB
PHP
<?php
|
||
|
||
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;
|
||
use App\Model\HealthPackage;
|
||
use App\Model\SystemInquiryConfig;
|
||
use App\Model\UserDoctor;
|
||
use Hyperf\DbConnection\Db;
|
||
|
||
/**
|
||
* 医生问诊配置
|
||
*/
|
||
class DoctorInquiryService extends BaseService
|
||
{
|
||
/**
|
||
* 获取医生问诊服务开启状态
|
||
* @return array
|
||
*/
|
||
public function getDoctorInquiryConfigOpenStatus(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$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:随访包)
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
// 接诊开关
|
||
$is_open = 0;
|
||
|
||
// 系统问诊配置表
|
||
$params = array();
|
||
$params['inquiry_type'] = $inquiry_type;
|
||
$params['inquiry_mode'] = $inquiry_mode;
|
||
$system_inquiry_config = SystemInquiryConfig::getOne($params);
|
||
if (empty($system_inquiry_config)) {
|
||
return fail(HttpEnumCode::SERVER_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 ($doctor_inquiry_config['is_enable'] == 1) {
|
||
$is_open = 1;
|
||
}
|
||
}
|
||
|
||
return success($is_open);
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊配置
|
||
* @return array
|
||
*/
|
||
public function getDoctorInquiryConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$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:随访包)
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
// 返回数据
|
||
$result = array();
|
||
|
||
// 接诊价格
|
||
$result['inquiry_price'] = "";
|
||
$result['work_num_day'] = "";
|
||
|
||
// 系统问诊配置表
|
||
$params = array();
|
||
$params['inquiry_type'] = $inquiry_type;
|
||
$params['inquiry_mode'] = $inquiry_mode;
|
||
$system_inquiry_config = SystemInquiryConfig::getOne($params);
|
||
if (empty($system_inquiry_config)) {
|
||
return fail(HttpEnumCode::SERVER_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)) {
|
||
// 接诊价格
|
||
$result['inquiry_price'] = $doctor_inquiry_config['inquiry_price'] ?: 0;
|
||
if ($inquiry_type == 2 && $inquiry_mode == 1) {
|
||
// 快速-系统配置
|
||
$result['inquiry_price'] = $system_inquiry_config['inquiry_price'];
|
||
}
|
||
|
||
$result['work_num_day'] = $doctor_inquiry_config['work_num_day'] ?: 0;
|
||
}
|
||
|
||
return success($result);
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊配置
|
||
* @return array
|
||
*/
|
||
// public function getDoctorInquiryConfig(): array
|
||
// {
|
||
// $user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
//
|
||
// $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:随访包)
|
||
//
|
||
// // 获取医生信息
|
||
// $params = array();
|
||
// $params['doctor_id'] = $user_info['client_user_id'];
|
||
// $doctor = UserDoctor::getOne($params);
|
||
// if (empty($doctor)) {
|
||
// return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
// }
|
||
//
|
||
// if ($doctor['idcard_status'] != 1) {
|
||
// return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
// }
|
||
//
|
||
// if ($doctor['iden_auth_status'] != 1) {
|
||
// return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
// }
|
||
//
|
||
// if ($doctor['is_bind_bank'] != 1) {
|
||
// return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
// }
|
||
//
|
||
// // 返回数据
|
||
// $result = array();
|
||
// $info = array();
|
||
// $config = array();
|
||
//
|
||
// // 接诊开关
|
||
// $is_open = 0;
|
||
//
|
||
// // 接诊价格
|
||
// $info['inquiry_price'] = 0;
|
||
//
|
||
// // 系统问诊配置表
|
||
// $params = array();
|
||
// $params['inquiry_type'] = $inquiry_type;
|
||
// $params['inquiry_mode'] = $inquiry_mode;
|
||
// $system_inquiry_config = SystemInquiryConfig::getOne($params);
|
||
// if (empty($system_inquiry_config)) {
|
||
// return fail(HttpEnumCode::SERVER_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)) {
|
||
// // 接诊价格
|
||
// $info['inquiry_price'] = $system_inquiry_config['inquiry_price'] ?: 0;
|
||
// if ($inquiry_type == 3) {
|
||
// // 公益问诊,存在价格档次,默认第一档
|
||
// $inquiry_price = explode(',', $system_inquiry_config['inquiry_price']);
|
||
//
|
||
// $info['inquiry_price'] = $inquiry_price[0];
|
||
// }
|
||
//
|
||
// // 默认接诊人数
|
||
// $info['work_num_day'] = $system_inquiry_config['default_work_num_day'] ?: 0;
|
||
// } else {
|
||
// // 接诊价格
|
||
// $info['inquiry_price'] = $doctor_inquiry_config['inquiry_price'] ?: 0;
|
||
// if ($inquiry_type == 2) {
|
||
// // 快速-系统配置
|
||
// $info['inquiry_price'] = $system_inquiry_config['inquiry_price'];
|
||
// }
|
||
//
|
||
// $info['work_num_day'] = $doctor_inquiry_config['work_num_day'] ?: 0;
|
||
//
|
||
// // 接诊开关
|
||
// if ($doctor_inquiry_config['is_enable'] == 1){
|
||
// $is_open = 1;
|
||
// }
|
||
// }
|
||
//
|
||
// // 接诊开关
|
||
// $info['is_open'] = $is_open;
|
||
//
|
||
// // 每日最大接诊数量
|
||
// $config['max_work_num_day'] = $system_inquiry_config['max_work_num_day'];
|
||
//
|
||
// // 最低接诊价格(专家问诊)
|
||
// $config['min_inquiry_price'] = $system_inquiry_config['min_inquiry_price'] ?: 0;
|
||
//
|
||
// // 最高接诊价格(专家问诊)
|
||
// $config['max_inquiry_price'] = $system_inquiry_config['max_inquiry_price'] ?: 0;
|
||
//
|
||
// // 默认价格
|
||
// $config['default_inquiry_price'] = $system_inquiry_config['max_inquiry_price'] ?: 0;
|
||
//
|
||
// // 沟通次数(0为不限制次数)
|
||
// $config['times_number'] = $system_inquiry_config['times_number'];
|
||
//
|
||
// // 沟通时长(分钟,0为不限制时长)
|
||
// $config['duration'] = $system_inquiry_config['duration'];
|
||
//
|
||
// // 系统价格(公益问诊)
|
||
// $config['system_inquiry_price'] = [];
|
||
// if ($inquiry_type == 3) {
|
||
// $config['system_inquiry_price'] = explode(',', $system_inquiry_config['inquiry_price']);
|
||
// }
|
||
//
|
||
// $result['info'] = $info;
|
||
// $result['config'] = $config;
|
||
//
|
||
// return success($result);
|
||
// }
|
||
|
||
/**
|
||
* 医生问诊开关
|
||
* @return array
|
||
*/
|
||
public function putDoctorInquiryOpen(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$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:随访包)
|
||
$is_open = $this->request->input('is_open');// 是否开启(1:开启 0:关闭)
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
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, "请添加服务内容后开启");
|
||
}
|
||
}
|
||
|
||
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 == 1 || $inquiry_type == 3){
|
||
if ($inquiry_mode != 8 && $inquiry_mode != 9){
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
}
|
||
|
||
// 此处两个参数都默认设置为0,随访包以及健康包使用不到
|
||
$work_num_day = 0; // 每日接诊数量
|
||
$inquiry_price = null; // 接诊价格(专家问诊-公益问诊)
|
||
|
||
// 获取系统问诊配置表
|
||
$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);
|
||
}
|
||
|
||
// 获取系统问诊配置表
|
||
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'];
|
||
$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'] = $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);
|
||
}
|
||
|
||
// 处理医生健康包
|
||
if ($inquiry_type == 1 && $inquiry_mode == 8){
|
||
// 获取健康包配置
|
||
$params = array();
|
||
$health_package = HealthPackage::getOne($params);
|
||
if (empty($health_package)){
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
|
||
// 获取专家图文问诊价格
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$params['inquiry_type'] = 1;
|
||
$params['inquiry_mode'] = 1;
|
||
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
|
||
if (empty($doctor_inquiry_config)){
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "本服务需设置图文问诊的价格,才可开启");
|
||
}
|
||
|
||
// 价格计算(专家图文问诊价格*费率+30盒35元的干爽颗粒)
|
||
$service_price = $doctor_inquiry_config['inquiry_price'] * $health_package['service_rate'] / 100 * 6 + $health_package['discount_product_total_amount'];
|
||
|
||
// 创建医生健康包
|
||
$data = array();
|
||
$data['doctor_id'] = $user_info['client_user_id'];
|
||
$data['package_id'] = $health_package['package_id'];
|
||
$data['service_price'] = $service_price;
|
||
$doctor_config_health_package = DoctorConfigHealthPackage::addDoctorConfigHealthPackage($data);
|
||
if (empty($doctor_config_health_package)){
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_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);
|
||
|
||
// 处理医生健康包
|
||
if ($inquiry_mode == 8 && $is_open == 1){
|
||
// 获取健康包配置
|
||
$params = array();
|
||
$health_package = HealthPackage::getOne($params);
|
||
if (empty($health_package)){
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
|
||
// 获取医生健康包
|
||
$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, "请添加服务内容后开启");
|
||
}
|
||
|
||
// 获取专家图文问诊价格
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$params['inquiry_type'] = 1;
|
||
$params['inquiry_mode'] = 1;
|
||
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
|
||
if (empty($doctor_inquiry_config)){
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "本服务需设置图文问诊的价格,才可开启");
|
||
}
|
||
|
||
// 重新价格计算(专家图文问诊价格*费率+30盒35元的干爽颗粒)
|
||
$service_price = $doctor_inquiry_config['inquiry_price'] * $health_package['service_rate'] / 100 * 6 + $health_package['discount_product_total_amount'];
|
||
|
||
if ($doctor_config_health_package['service_price'] != $service_price){
|
||
// 修改医生服务包
|
||
$params = array();
|
||
$params['health_package_id'] = $doctor_config_health_package['health_package_id'];
|
||
|
||
$data = array();
|
||
$data['service_price'] = $service_price;
|
||
DoctorConfigHealthPackage::edit($params,$data);
|
||
}
|
||
}
|
||
}
|
||
|
||
Db::commit();
|
||
} catch (\Throwable $e) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
||
}
|
||
|
||
return success();
|
||
}
|
||
|
||
/**
|
||
* 修改医生问诊配置
|
||
* @return array
|
||
*/
|
||
public function putDoctorInquiryConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$inquiry_type = $this->request->input('inquiry_type');// 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊)
|
||
$inquiry_mode = $this->request->input('inquiry_mode');// 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员)
|
||
$inquiry_price = $this->request->input('inquiry_price');// 接诊价格
|
||
$work_num_day = $this->request->input('work_num_day');// 每日接诊数量
|
||
|
||
if ($inquiry_type == 2) {
|
||
// 快速问诊无需配置
|
||
return fail();
|
||
}
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
// 系统问诊配置表
|
||
$params = array();
|
||
$params['inquiry_type'] = $inquiry_type;
|
||
$params['inquiry_mode'] = $inquiry_mode;
|
||
$system_inquiry_config = SystemInquiryConfig::getOne($params);
|
||
if (empty($system_inquiry_config)) {
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
|
||
if ($work_num_day > $system_inquiry_config['max_work_num_day']) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "超出每日最大接诊数量");
|
||
}
|
||
|
||
// 验证-问诊价格
|
||
// 义诊时不判断,义诊为选择价格,价格后台可调节
|
||
if ($inquiry_type != 3) {
|
||
if (!empty($system_inquiry_config['min_inquiry_price']) && !empty($system_inquiry_config['max_inquiry_price'])) {
|
||
if ($inquiry_price > $system_inquiry_config['max_inquiry_price'] || $inquiry_price < $system_inquiry_config['min_inquiry_price']) {
|
||
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)) {
|
||
// 创建
|
||
$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'] = $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);
|
||
}
|
||
|
||
// 记录修改记录
|
||
$data = array();
|
||
$data['doctor_id'] = $user_info['client_user_id'];
|
||
$data['inquiry_config_id'] = $doctor_inquiry_config['inquiry_config_id'];
|
||
$data['old_price'] = 0;
|
||
$data['new_price'] = $inquiry_price;
|
||
$doctor_inquiry_price_record = DoctorInquiryPriceRecord::addRecord($data);
|
||
if (empty($doctor_inquiry_price_record)) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
} else {
|
||
// 在线问诊限制在线问诊验证修改次数
|
||
if ($inquiry_type == 1 && $doctor_inquiry_config['inquiry_price'] != $inquiry_price) {
|
||
// 获取月份内总调整次数
|
||
$params = array();
|
||
$params[] = ['doctor_id', '=', $user_info['client_user_id']];
|
||
$params[] = ['inquiry_config_id', '=', $doctor_inquiry_config['inquiry_config_id']];
|
||
$params[] = ['created_at', '>', date('Y-m-01', time())];
|
||
$modify_month_count = DoctorInquiryPriceRecord::getCount($params);
|
||
if ($modify_month_count >= 5) {
|
||
// 每自然月仅限调整5次
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "问诊价格每自然月仅限调整5次");
|
||
}
|
||
|
||
$params = array();
|
||
$params[] = ['doctor_id', '=', $user_info['client_user_id']];
|
||
$params[] = ['inquiry_config_id', '=', $doctor_inquiry_config['inquiry_config_id']];
|
||
$params[] = ['created_at', '>', date('Y-m-d', time())];
|
||
$modify_month_count = DoctorInquiryPriceRecord::getCount($params);
|
||
if ($modify_month_count >= 1) {
|
||
// 问诊价格每日仅限调整1次
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "问诊价格每日仅限调整1次");
|
||
}
|
||
}
|
||
|
||
// 修改
|
||
if ($doctor_inquiry_config['work_num_day'] != $work_num_day || $doctor_inquiry_config['inquiry_price'] != $inquiry_price) {
|
||
$params = array();
|
||
$params['inquiry_config_id'] = $doctor_inquiry_config['inquiry_config_id'];
|
||
|
||
$data = array();
|
||
$data['work_num_day'] = $work_num_day;
|
||
$data['inquiry_price'] = $inquiry_price;
|
||
|
||
DoctorInquiryConfig::editInquiryConfig($params, $data);
|
||
}
|
||
|
||
if ($doctor_inquiry_config['inquiry_price'] != $inquiry_price) {
|
||
// 记录修改记录
|
||
$data = array();
|
||
$data['doctor_id'] = $user_info['client_user_id'];
|
||
$data['inquiry_config_id'] = $doctor_inquiry_config['inquiry_config_id'];
|
||
$data['old_price'] = $doctor_inquiry_config['inquiry_price'];
|
||
$data['new_price'] = $inquiry_price;
|
||
$doctor_inquiry_price_record = DoctorInquiryPriceRecord::addRecord($data);
|
||
if (empty($doctor_inquiry_price_record)) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
}
|
||
}
|
||
|
||
Db::commit();
|
||
} catch (\Exception $e) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
||
}
|
||
|
||
return success();
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊价格
|
||
* @param string|int $inquiry_type 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
|
||
* @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
|
||
{
|
||
// 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊)
|
||
if ($inquiry_type == 1 || $inquiry_type == 3) {
|
||
// 专家-公益
|
||
$params = array();
|
||
$params['doctor_id'] = $doctor_id;
|
||
$params['inquiry_type'] = $inquiry_type;
|
||
$params['inquiry_mode'] = $inquiry_mode;
|
||
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
|
||
if (empty($doctor_inquiry_config)) {
|
||
throw new BusinessException("当前医生未开通对应服务,请重新选择", HttpEnumCode::HTTP_ERROR);
|
||
}
|
||
|
||
$inquiry_price = $doctor_inquiry_config['inquiry_price'] ?: 0;
|
||
} elseif ($inquiry_type == 2 || $inquiry_type == 4) {
|
||
// 快速-购药
|
||
$params = array();
|
||
$params['inquiry_type'] = $inquiry_type;
|
||
$params['inquiry_mode'] = $inquiry_mode;
|
||
$system_inquiry_config = SystemInquiryConfig::getOne($params);
|
||
if (empty($system_inquiry_config)) {
|
||
throw new BusinessException();
|
||
}
|
||
|
||
$inquiry_price = $system_inquiry_config['inquiry_price'] ?: 0;
|
||
} else {
|
||
throw new BusinessException();
|
||
}
|
||
|
||
return $inquiry_price;
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊配置-服务设置
|
||
* @return array
|
||
*/
|
||
public function getDoctorInquiryDifficultConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor_config_difficult_consultation = DoctorConfigDifficultConsultation::getOne($params);
|
||
if (empty($doctor_config_difficult_consultation)) {
|
||
return success(null);
|
||
} else {
|
||
return success($doctor_config_difficult_consultation->toArray());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 新增医生问诊配置-疑难会诊-服务设置
|
||
* @return array
|
||
*/
|
||
public function addDoctorInquiryDifficultConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$service_content = $this->request->input('service_content');
|
||
$service_process = $this->request->input('service_process');
|
||
$service_period = $this->request->input('service_period');
|
||
$service_rounds = $this->request->input('service_rounds');
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
$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, "已存在服务设置,请勿重复设置");
|
||
}
|
||
|
||
$data = array();
|
||
$data['doctor_id'] = $doctor['doctor_id'];
|
||
$data['service_content'] = $service_content;
|
||
$data['service_process'] = $service_process;
|
||
$data['service_period'] = $service_period;
|
||
$data['service_rounds'] = $service_rounds;
|
||
$doctor_config_difficult_consultation = DoctorConfigDifficultConsultation::addDoctorConfigDifficultConsultation($data);
|
||
if (empty($doctor_config_difficult_consultation)) {
|
||
return fail();
|
||
}
|
||
|
||
return success();
|
||
}
|
||
|
||
/**
|
||
* 修改医生问诊配置-疑难会诊-服务设置
|
||
* @return array
|
||
*/
|
||
public function putDoctorInquiryDifficultConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$difficult_consultation_id = $this->request->route('difficult_consultation_id');
|
||
|
||
$service_content = $this->request->input('service_content');
|
||
$service_process = $this->request->input('service_process');
|
||
$service_period = $this->request->input('service_period');
|
||
$service_rounds = $this->request->input('service_rounds');
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
$params = array();
|
||
$params['difficult_consultation_id'] = $difficult_consultation_id;
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor_config_difficult_consultation = DoctorConfigDifficultConsultation::getOne($params);
|
||
if (empty($doctor_config_difficult_consultation)) {
|
||
return fail();
|
||
}
|
||
|
||
$data = array();
|
||
if ($doctor_config_difficult_consultation['service_content'] != $service_content) {
|
||
$data['service_content'] = $service_content;
|
||
}
|
||
|
||
if ($doctor_config_difficult_consultation['service_process'] != $service_process) {
|
||
$data['service_process'] = $service_process;
|
||
}
|
||
|
||
if ($doctor_config_difficult_consultation['service_period'] != $service_period) {
|
||
$data['service_period'] = $service_period;
|
||
}
|
||
|
||
if ($doctor_config_difficult_consultation['service_rounds'] != $service_rounds) {
|
||
$data['service_rounds'] = $service_rounds;
|
||
}
|
||
|
||
if (!empty($data)) {
|
||
$params = array();
|
||
$params['difficult_consultation_id'] = $doctor_config_difficult_consultation['difficult_consultation_id'];
|
||
$res = DoctorConfigDifficultConsultation::edit($params, $data);
|
||
if (!$res) {
|
||
return fail();
|
||
}
|
||
}
|
||
|
||
return success();
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊配置-随访包
|
||
* @return array
|
||
*/
|
||
public function getDoctorInquiryFollowConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params);
|
||
if (empty($doctor_config_follow_package)) {
|
||
return success(null);
|
||
} else {
|
||
return success($doctor_config_follow_package->toArray());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊配置-随访包-列表
|
||
* @return array
|
||
*/
|
||
public function getDoctorInquiryFollowItemConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$doctor_id = $this->request->route('doctor_id');
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $doctor_id;
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
$result = array();
|
||
|
||
$params = array();
|
||
$params['doctor_id'] = $doctor_id;
|
||
$doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params);
|
||
if (!empty($doctor_config_follow_package)) {
|
||
$params = array();
|
||
$params['follow_package_id'] = $doctor_config_follow_package['follow_package_id'];
|
||
$doctor_config_follow_package_items = DoctorConfigFollowPackageItem::getOrderServicePeriodList($params);
|
||
if (!empty($doctor_config_follow_package_items)) {
|
||
foreach ($doctor_config_follow_package_items as &$doctor_config_follow_package_item){
|
||
$doctor_config_follow_package_item['monthly_frequency'] = $doctor_config_follow_package['monthly_frequency'];
|
||
$result[] = $doctor_config_follow_package_item->toArray();
|
||
}
|
||
}
|
||
}
|
||
|
||
return success($result);
|
||
}
|
||
|
||
/**
|
||
* 新增医生问诊配置-随访包
|
||
* @return array
|
||
*/
|
||
public function addDoctorInquiryFollowConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$monthly_frequency = $this->request->input('monthly_frequency'); // 每月次数(0表示不限次)
|
||
$service_rounds = $this->request->input('service_rounds'); // 服务回合数(0表示不限次)
|
||
$items = $this->request->input('items'); // 随访包内容数据
|
||
|
||
if ($service_rounds != 0) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "服务回合数只允许为无限次");
|
||
}
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
$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, "已存在随访包配置,请勿重复设置");
|
||
}
|
||
|
||
Db::beginTransaction();
|
||
|
||
try {
|
||
$data = array();
|
||
$data['doctor_id'] = $doctor['doctor_id'];
|
||
$data['monthly_frequency'] = $monthly_frequency;
|
||
$data['service_rounds'] = $service_rounds;
|
||
$doctor_config_follow_package = DoctorConfigFollowPackage::addDoctorConfigFollowPackage($data);
|
||
if (empty($doctor_config_follow_package)) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "添加失败");
|
||
}
|
||
|
||
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])) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请填写服务周期");
|
||
}
|
||
|
||
if (empty($item['service_price'])) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请填写服务价格");
|
||
}
|
||
|
||
if ($item['service_price'] < 10 || $item['service_price'] > 9999) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "服务价格只允许设置在10-9999范围内");
|
||
}
|
||
|
||
// 新增医生配置-随访包明细
|
||
$data = array();
|
||
$data['follow_package_id'] = $doctor_config_follow_package['follow_package_id'];
|
||
$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)) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "保存失败");
|
||
}
|
||
}
|
||
|
||
Db::commit();
|
||
} catch (\Throwable $e) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
||
}
|
||
|
||
return success();
|
||
}
|
||
|
||
/**
|
||
* 修改医生问诊配置-随访包
|
||
* @return array
|
||
*/
|
||
public function putDoctorInquiryFollowConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
$monthly_frequency = $this->request->input('monthly_frequency'); // 每月次数(0表示不限次)
|
||
$service_rounds = $this->request->input('service_rounds'); // 服务回合数(0表示不限次)
|
||
$items = $this->request->input('items'); // 随访包内容数据
|
||
|
||
if ($service_rounds != 0) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "服务回合数只允许为无限次");
|
||
}
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
$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, "请添加后再修改");
|
||
}
|
||
|
||
Db::beginTransaction();
|
||
|
||
try {
|
||
// 修改随访包数据
|
||
$follow_package_data = array();
|
||
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) {
|
||
$follow_package_data['service_rounds'] = $service_rounds;
|
||
}
|
||
|
||
if (!empty($follow_package_data)) {
|
||
$params = array();
|
||
$params['follow_package_id'] = $doctor_config_follow_package['follow_package_id'];
|
||
DoctorConfigFollowPackage::edit($params, $follow_package_data);
|
||
}
|
||
|
||
// 删除随访包内容明细
|
||
$params = array();
|
||
$params['follow_package_id'] = $doctor_config_follow_package['follow_package_id'];
|
||
DoctorConfigFollowPackageItem::del($params);
|
||
|
||
// 新增随访包内容明细
|
||
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])) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请填写服务周期");
|
||
}
|
||
|
||
if (empty($item['service_price'])) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请填写服务价格");
|
||
}
|
||
|
||
if ($item['service_price'] < 10 || $item['service_price'] > 9999) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "服务价格只允许设置在10-9999范围内");
|
||
}
|
||
|
||
// 新增医生配置-随访包明细
|
||
$data = array();
|
||
$data['follow_package_id'] = $doctor_config_follow_package['follow_package_id'];
|
||
$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)) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, "保存失败");
|
||
}
|
||
}
|
||
|
||
Db::commit();
|
||
} catch (\Throwable $e) {
|
||
Db::rollBack();
|
||
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
||
}
|
||
|
||
return success();
|
||
}
|
||
|
||
/**
|
||
* 获取医生问诊配置-健康包
|
||
* @return array
|
||
*/
|
||
public function getDoctorInquiryHealthConfig(): array
|
||
{
|
||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||
|
||
// 获取医生信息
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$doctor = UserDoctor::getOne($params);
|
||
if (empty($doctor)) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
|
||
}
|
||
|
||
if ($doctor['idcard_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
|
||
}
|
||
|
||
if ($doctor['iden_auth_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
|
||
}
|
||
|
||
if ($doctor['is_bind_bank'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "请先进行绑定结算银行卡");
|
||
}
|
||
|
||
if ($doctor['multi_point_status'] != 1) {
|
||
return fail(HttpEnumCode::HTTP_ERROR, "本服务需开处方,您还未做多点执业认证,是否前往?");
|
||
}
|
||
|
||
// 获取专家图文问诊价格
|
||
$params = array();
|
||
$params['doctor_id'] = $user_info['client_user_id'];
|
||
$params['inquiry_type'] = 1;
|
||
$params['inquiry_mode'] = 1;
|
||
$doctor_inquiry_config = DoctorInquiryConfig::getOne($params);
|
||
if (empty($doctor_inquiry_config)){
|
||
return success(null);
|
||
}
|
||
|
||
// 获取健康包配置
|
||
$params = array();
|
||
$health_package = HealthPackage::getOne($params);
|
||
if (empty($health_package)){
|
||
return fail(HttpEnumCode::SERVER_ERROR);
|
||
}
|
||
|
||
$result = array();
|
||
$result['service_count'] = $health_package['service_count']; // 总服务次数
|
||
$result['service_rate'] = $health_package['service_rate']; // 服务费率。100为满值,表示1,正常费率。
|
||
$result['inquiry_price'] = $doctor_inquiry_config['inquiry_price']; // 专家问诊-图文接诊价格
|
||
|
||
return success($result);
|
||
}
|
||
} |