新增了医生随访包配置
This commit is contained in:
@@ -0,0 +1,326 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"hospital-admin-api/api/dao"
|
||||
"hospital-admin-api/api/dto"
|
||||
"hospital-admin-api/api/model"
|
||||
"hospital-admin-api/api/requests"
|
||||
"hospital-admin-api/global"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type DoctorConfigFollowPackageService struct {
|
||||
}
|
||||
|
||||
// GetDoctorFollow 医生随访包配置详情
|
||||
func (r *DoctorConfigFollowPackageService) GetDoctorFollow(followPackageId int64) (res *dto.DoctorConfigFollowPackageDto, err error) {
|
||||
DoctorConfigFollowPackageDao := dao.DoctorConfigFollowPackageDao{}
|
||||
|
||||
DoctorConfigFollowPackage, err := DoctorConfigFollowPackageDao.GetDoctorConfigFollowPackageById(followPackageId)
|
||||
if err != nil || DoctorConfigFollowPackage == nil {
|
||||
return nil, errors.New("获取失败")
|
||||
}
|
||||
|
||||
// 获取医生数据
|
||||
userDoctorDao := dao.UserDoctorDao{}
|
||||
userDoctor, err := userDoctorDao.GetUserDoctorById(DoctorConfigFollowPackage.DoctorId)
|
||||
if err != nil || userDoctor == nil {
|
||||
return nil, errors.New("获取失败")
|
||||
}
|
||||
|
||||
// 获取医生医院数据
|
||||
hospitalDao := dao.HospitalDao{}
|
||||
hospital, err := hospitalDao.GetHospitalById(userDoctor.HospitalID)
|
||||
|
||||
// 获取随访包列表数据
|
||||
doctorConfigFollowPackageItemDao := dao.DoctorConfigFollowPackageItemDao{}
|
||||
doctorConfigFollowPackageItem, err := doctorConfigFollowPackageItemDao.GetDoctorConfigFollowPackageItemListByFollowPackageId(DoctorConfigFollowPackage.FollowPackageId)
|
||||
if err != nil || doctorConfigFollowPackageItem == nil {
|
||||
return nil, errors.New("获取失败")
|
||||
}
|
||||
|
||||
// 获取医生问诊配置
|
||||
doctorInquiryConfigDao := dao.DoctorInquiryConfigDao{}
|
||||
maps := make(map[string]interface{})
|
||||
maps["doctor_id"] = DoctorConfigFollowPackage.DoctorId
|
||||
maps["inquiry_type"] = 1
|
||||
maps["inquiry_mode"] = 9
|
||||
doctorInquiryConfig, err := doctorInquiryConfigDao.GetDoctorInquiryConfig(maps)
|
||||
if err != nil {
|
||||
return nil, errors.New("获取失败")
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
res = dto.GetDoctorConfigFollowPackageDto(DoctorConfigFollowPackage)
|
||||
|
||||
// 加载医生数据
|
||||
res.LoadUserDoctor(userDoctor)
|
||||
|
||||
// 加载医生医院
|
||||
if hospital != nil {
|
||||
res.LoadUserDoctorHospital(hospital)
|
||||
}
|
||||
|
||||
// 加载医生随访包列表配置
|
||||
res.LoadDoctorConfigFollowPackageItem(doctorConfigFollowPackageItem)
|
||||
|
||||
// 获取医生问诊配置
|
||||
res.LoadDoctorInquiryConfig(doctorInquiryConfig)
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// PutDoctorFollow 修改医生随访包配置
|
||||
func (r *DoctorConfigFollowPackageService) PutDoctorFollow(followPackageId int64, req requests.PutDoctorFollow) (bool, error) {
|
||||
doctorConfigFollowPackageDao := dao.DoctorConfigFollowPackageDao{}
|
||||
DoctorConfigFollowPackage, err := doctorConfigFollowPackageDao.GetDoctorConfigFollowPackageById(followPackageId)
|
||||
if err != nil || DoctorConfigFollowPackage == nil {
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
|
||||
// 获取医生数据
|
||||
userDoctorDao := dao.UserDoctorDao{}
|
||||
userDoctor, err := userDoctorDao.GetUserDoctorById(DoctorConfigFollowPackage.DoctorId)
|
||||
if err != nil || userDoctor == nil {
|
||||
return false, errors.New("医生错误")
|
||||
}
|
||||
|
||||
if userDoctor.IdcardStatus != 1 {
|
||||
return false, errors.New("请先进行实名认证")
|
||||
}
|
||||
|
||||
if userDoctor.IdenAuthStatus != 1 {
|
||||
return false, errors.New("请先进行身份认证")
|
||||
}
|
||||
|
||||
if userDoctor.IsBindBank != 1 {
|
||||
return false, errors.New("请先进行绑定结算银行卡")
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
doctorConfigFollowPackageData := make(map[string]interface{})
|
||||
|
||||
if *req.MonthlyFrequency != DoctorConfigFollowPackage.MonthlyFrequency {
|
||||
doctorConfigFollowPackageData["monthly_frequency"] = req.MonthlyFrequency
|
||||
}
|
||||
|
||||
if *req.ServiceRounds != DoctorConfigFollowPackage.ServiceRounds {
|
||||
doctorConfigFollowPackageData["service_rounds"] = req.ServiceRounds
|
||||
}
|
||||
|
||||
if len(doctorConfigFollowPackageData) > 0 {
|
||||
err := doctorConfigFollowPackageDao.EditDoctorConfigFollowPackageById(tx, followPackageId, doctorConfigFollowPackageData)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
}
|
||||
|
||||
// 处理问诊配置
|
||||
// 获取医生问诊配置
|
||||
doctorInquiryConfigDao := dao.DoctorInquiryConfigDao{}
|
||||
maps := make(map[string]interface{})
|
||||
maps["doctor_id"] = DoctorConfigFollowPackage.DoctorId
|
||||
maps["inquiry_type"] = 1
|
||||
maps["inquiry_mode"] = 9
|
||||
doctorInquiryConfig, _ := doctorInquiryConfigDao.GetDoctorInquiryConfig(maps)
|
||||
if doctorInquiryConfig == nil {
|
||||
// 新增医生问诊配置
|
||||
doctorInquiryConfig = &model.DoctorInquiryConfig{
|
||||
DoctorId: DoctorConfigFollowPackage.DoctorId,
|
||||
InquiryType: 1,
|
||||
InquiryMode: 9,
|
||||
IsEnable: *req.IsEnable,
|
||||
LastEnableMethod: 2,
|
||||
WorkNumDay: 0,
|
||||
InquiryPrice: nil,
|
||||
}
|
||||
|
||||
doctorInquiryConfig, err = doctorInquiryConfigDao.AddDoctorInquiryConfig(tx, doctorInquiryConfig)
|
||||
if err != nil || doctorInquiryConfig == nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New(err.Error())
|
||||
}
|
||||
} else {
|
||||
// 修改医生问诊配置
|
||||
doctorInquiryConfigData := make(map[string]interface{})
|
||||
if *req.IsEnable != doctorInquiryConfig.IsEnable {
|
||||
doctorInquiryConfigData["is_enable"] = req.IsEnable
|
||||
if *req.IsEnable == 1 {
|
||||
doctorInquiryConfigData["last_enable_method"] = 2
|
||||
}
|
||||
}
|
||||
|
||||
if len(doctorInquiryConfigData) > 0 {
|
||||
err = doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, doctorInquiryConfig.InquiryConfigId, doctorInquiryConfigData)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 删除随访包明细
|
||||
maps = make(map[string]interface{})
|
||||
maps["follow_package_id"] = DoctorConfigFollowPackage.FollowPackageId
|
||||
|
||||
doctorConfigFollowPackageItemDao := dao.DoctorConfigFollowPackageItemDao{}
|
||||
err = doctorConfigFollowPackageItemDao.DeleteDoctorConfigFollowPackageItem(tx, maps)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
|
||||
// 处理随访包明细
|
||||
for _, item := range req.DoctorConfigFollowPackageItem {
|
||||
if item.ServicePrice < 10 || item.ServicePrice > 9999 {
|
||||
tx.Rollback()
|
||||
return false, errors.New("服务价格只允许设置在10-9999范围内")
|
||||
}
|
||||
|
||||
if item.ServicePrice != 30 && item.ServicePrice != 90 && item.ServicePrice != 180 && item.ServicePrice != 360 {
|
||||
tx.Rollback()
|
||||
return false, errors.New("服务周期错误")
|
||||
}
|
||||
|
||||
doctorConfigFollowPackageItem := &model.DoctorConfigFollowPackageItem{
|
||||
FollowPackageId: DoctorConfigFollowPackage.FollowPackageId,
|
||||
ServicePeriod: item.ServicePeriod,
|
||||
ServicePrice: item.ServicePrice,
|
||||
}
|
||||
|
||||
doctorConfigFollowPackageItem, err := doctorConfigFollowPackageItemDao.AddDoctorConfigFollowPackageItem(tx, doctorConfigFollowPackageItem)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// AddDoctorFollow 新增医生随访包配置
|
||||
func (r *DoctorConfigFollowPackageService) AddDoctorFollow(req requests.AddDoctorFollow) (bool, error) {
|
||||
doctorId, err := strconv.ParseInt(req.DoctorId, 10, 64)
|
||||
if err != nil {
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
|
||||
// 获取医生数据
|
||||
userDoctorDao := dao.UserDoctorDao{}
|
||||
userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId)
|
||||
if err != nil || userDoctor == nil {
|
||||
return false, errors.New("医生错误")
|
||||
}
|
||||
|
||||
if userDoctor.IdcardStatus != 1 {
|
||||
return false, errors.New("请先进行实名认证")
|
||||
}
|
||||
|
||||
if userDoctor.IdenAuthStatus != 1 {
|
||||
return false, errors.New("请先进行身份认证")
|
||||
}
|
||||
|
||||
if userDoctor.IsBindBank != 1 {
|
||||
return false, errors.New("请先进行绑定结算银行卡")
|
||||
}
|
||||
|
||||
DoctorConfigFollowPackageDao := dao.DoctorConfigFollowPackageDao{}
|
||||
|
||||
maps := make(map[string]interface{})
|
||||
maps["doctor_id"] = doctorId
|
||||
DoctorConfigFollowPackage, err := DoctorConfigFollowPackageDao.GetDoctorConfigFollowPackage(maps)
|
||||
if DoctorConfigFollowPackage != nil {
|
||||
return false, errors.New("该医生存在随访包配置,请勿重复添加")
|
||||
}
|
||||
|
||||
// 获取专家图文问诊价格
|
||||
maps = make(map[string]interface{})
|
||||
maps["doctor_id"] = req.DoctorId
|
||||
maps["inquiry_type"] = 1
|
||||
maps["inquiry_mode"] = 1
|
||||
|
||||
doctorInquiryConfigDao := dao.DoctorInquiryConfigDao{}
|
||||
doctorInquiryConfig, err := doctorInquiryConfigDao.GetDoctorInquiryConfig(maps)
|
||||
if err != nil && *req.IsEnable == 1 {
|
||||
return false, errors.New("本服务需设置图文问诊的价格,才可开启")
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
// 创建医生随访包
|
||||
DoctorConfigFollowPackage = &model.DoctorConfigFollowPackage{
|
||||
DoctorId: doctorId,
|
||||
MonthlyFrequency: *req.MonthlyFrequency,
|
||||
ServiceRounds: *req.ServiceRounds,
|
||||
}
|
||||
|
||||
DoctorConfigFollowPackage, err = DoctorConfigFollowPackageDao.AddDoctorConfigFollowPackage(tx, DoctorConfigFollowPackage)
|
||||
if err != nil || DoctorConfigFollowPackage == nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New(err.Error())
|
||||
}
|
||||
|
||||
// 处理随访包明细
|
||||
doctorConfigFollowPackageItemDao := dao.DoctorConfigFollowPackageItemDao{}
|
||||
for _, item := range req.DoctorConfigFollowPackageItem {
|
||||
if item.ServicePrice < 10 || item.ServicePrice > 9999 {
|
||||
tx.Rollback()
|
||||
return false, errors.New("服务价格只允许设置在10-9999范围内")
|
||||
}
|
||||
|
||||
if item.ServicePrice != 30 && item.ServicePrice != 90 && item.ServicePrice != 180 && item.ServicePrice != 360 {
|
||||
tx.Rollback()
|
||||
return false, errors.New("服务周期错误")
|
||||
}
|
||||
|
||||
doctorConfigFollowPackageItem := &model.DoctorConfigFollowPackageItem{
|
||||
FollowPackageId: DoctorConfigFollowPackage.FollowPackageId,
|
||||
ServicePeriod: item.ServicePeriod,
|
||||
ServicePrice: item.ServicePrice,
|
||||
}
|
||||
|
||||
doctorConfigFollowPackageItem, err := doctorConfigFollowPackageItemDao.AddDoctorConfigFollowPackageItem(tx, doctorConfigFollowPackageItem)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
}
|
||||
|
||||
// 增加医生问诊配置
|
||||
if *req.IsEnable == 1 {
|
||||
doctorInquiryConfig = &model.DoctorInquiryConfig{
|
||||
DoctorId: doctorId,
|
||||
InquiryType: 1,
|
||||
InquiryMode: 9,
|
||||
IsEnable: *req.IsEnable,
|
||||
LastEnableMethod: 2,
|
||||
WorkNumDay: 0,
|
||||
InquiryPrice: nil,
|
||||
}
|
||||
|
||||
doctorInquiryConfig, err = doctorInquiryConfigDao.AddDoctorInquiryConfig(tx, doctorInquiryConfig)
|
||||
if err != nil || doctorInquiryConfig == nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
return true, nil
|
||||
}
|
||||
Reference in New Issue
Block a user