hospital-admin-api/api/service/InquiryConfig.go
2023-10-10 14:08:51 +08:00

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
}