105 lines
2.6 KiB
Go
105 lines
2.6 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"gorm.io/gorm"
|
|
"hospital-admin-api/api/dao"
|
|
"hospital-admin-api/api/model"
|
|
"strconv"
|
|
)
|
|
|
|
// InquiryConfigService 问诊配置
|
|
type InquiryConfigService struct {
|
|
DoctorInquiryConfigService // 医生问诊配置
|
|
SystemInquiryConfigService // 系统问诊配置
|
|
}
|
|
|
|
// DoctorInquiryConfigService 医生问诊配置
|
|
type DoctorInquiryConfigService struct {
|
|
}
|
|
|
|
// SystemInquiryConfigService 系统问诊配置
|
|
type SystemInquiryConfigService struct {
|
|
}
|
|
|
|
// HandleDoctorInquiryConfig 处理医生问诊配置
|
|
func (r *DoctorInquiryConfigService) HandleDoctorInquiryConfig(tx *gorm.DB, doctorId int64, inquiryType, inquiryMode, isEnable, workNumDay int, inquiryPrice float64) (bool, error) {
|
|
var err error
|
|
|
|
if inquiryType == 4 && inquiryMode == 1 {
|
|
// 获取系统配置-问诊购药类型
|
|
systemInquiryConfigDao := dao.SystemInquiryConfigDao{}
|
|
|
|
maps := make(map[string]interface{})
|
|
maps["inquiry_type"] = inquiryType
|
|
maps["inquiry_mode"] = inquiryMode
|
|
systemInquiryConfig, _ := systemInquiryConfigDao.GetSystemInquiryConfig(maps)
|
|
if systemInquiryConfig == nil {
|
|
return false, errors.New("缺少系统配置")
|
|
}
|
|
|
|
// 问诊人数
|
|
workNumDay = systemInquiryConfig.MaxWorkNumDay
|
|
|
|
// 问诊价格
|
|
inquiryPrice, err = strconv.ParseFloat(systemInquiryConfig.InquiryPrice, 64)
|
|
if err != nil {
|
|
return false, errors.New("系统价格错误")
|
|
}
|
|
}
|
|
|
|
// 获取医生当前问诊配置
|
|
doctorInquiryConfigDao := dao.DoctorInquiryConfigDao{}
|
|
|
|
maps := make(map[string]interface{})
|
|
maps["doctor_id"] = doctorId
|
|
maps["inquiry_type"] = inquiryType
|
|
maps["inquiry_mode"] = inquiryMode
|
|
d, _ := doctorInquiryConfigDao.GetDoctorInquiryConfig(maps)
|
|
if d == nil {
|
|
// 新增
|
|
m := &model.DoctorInquiryConfig{
|
|
DoctorId: doctorId,
|
|
InquiryType: inquiryType,
|
|
InquiryMode: inquiryMode,
|
|
IsEnable: isEnable,
|
|
LastEnableMethod: 2,
|
|
WorkNumDay: workNumDay,
|
|
InquiryPrice: inquiryPrice,
|
|
}
|
|
|
|
adminUser, _ := doctorInquiryConfigDao.AddDoctorInquiryConfig(tx, m)
|
|
if adminUser == nil {
|
|
return false, errors.New("新增失败")
|
|
}
|
|
} else {
|
|
// 修改
|
|
data := make(map[string]interface{})
|
|
|
|
if d.IsEnable != isEnable {
|
|
data["is_enable"] = isEnable
|
|
}
|
|
|
|
if d.WorkNumDay != workNumDay {
|
|
data["work_num_day"] = workNumDay
|
|
}
|
|
|
|
if d.InquiryPrice != inquiryPrice {
|
|
data["inquiry_price"] = inquiryPrice
|
|
}
|
|
|
|
if len(data) > 0 {
|
|
if d.LastEnableMethod != 2 {
|
|
data["last_enable_method"] = 2
|
|
}
|
|
|
|
err := doctorInquiryConfigDao.EditDoctorInquiryConfigById(tx, d.InquiryConfigId, data)
|
|
if err != nil {
|
|
return false, errors.New("修改失败")
|
|
}
|
|
}
|
|
}
|
|
|
|
return true, nil
|
|
}
|