package service import ( "errors" "hospital-admin-api/api/dao" "hospital-admin-api/api/model" "hospital-admin-api/global" "strconv" ) // InquiryConfigService 问诊配置 type InquiryConfigService struct { DoctorInquiryConfigService // 医生问诊配置 SystemInquiryConfigService // 系统问诊配置 } // DoctorInquiryConfigService 医生问诊配置 type DoctorInquiryConfigService struct { } // SystemInquiryConfigService 系统问诊配置 type SystemInquiryConfigService struct { } // HandleDoctorInquiryConfig 处理医生问诊配置 func (r *DoctorInquiryConfigService) HandleDoctorInquiryConfig(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("系统价格错误") } } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() // 获取医生当前问诊配置 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 { tx.Rollback() 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 { tx.Rollback() return false, errors.New("修改失败") } } } return true, nil }