package service import ( "context" "dashoo.cn/micro/app/dao" "dashoo.cn/micro/app/model" "dashoo.cn/opms_libary/myerrors" "github.com/gogf/gf/util/gconv" ) type ConfigService struct { *contextService Dao *dao.SysConfigDao } func NewConfigService(ctx context.Context) (svc *ConfigService, err error) { svc = new(ConfigService) if svc.contextService, err = svc.Init(ctx); err != nil { return nil, err } svc.Dao = dao.NewSysConfigDao(svc.Tenant) return svc, nil } func (s *ConfigService) GetList(req *model.SysConfigSearchReq) (total int, list []*model.SysConfig, err error) { m := s.Dao.Ctx(req.Ctx) if req != nil { if req.ConfigName != "" { m = m.Where("config_name like ?", "%"+req.ConfigName+"%") } if req.ConfigType != "" { m = m.Where("config_type = ", gconv.Int(req.ConfigType)) } if req.ConfigKey != "" { m = m.Where("config_key like ?", "%"+req.ConfigKey+"%") } if req.BeginTime != "" { m = m.Where("create_time >= ? ", req.BeginTime) } if req.EndTime != "" { m = m.Where("create_time<=?", req.EndTime) } } total, err = m.Count() if err != nil { return } err = m.Page(req.GetPage()).Scan(&list) if err != nil { return } return } func (s *ConfigService) GetEntityById(id int64) (config *model.SysConfig, err error) { config, err = s.Dao.WherePri(id).One() return } // GetEntityByKey 通过key获取参数(从缓存获取) func (s *ConfigService) GetEntityByKey(key string) (config *model.SysConfig, err error) { if key == "" { err = myerrors.TipsError("参数key不能为空") return } config, err = s.GetByKey(key) if err != nil { return } return } // GetByKey 通过key获取参数(从数据库获取) func (s *ConfigService) GetByKey(key string) (config *model.SysConfig, err error) { config, err = s.Dao.Where(s.Dao.C.ConfigKey, key).One() return } // CheckConfigKeyUniqueAll 验证参数键名是否存在 func (s *ConfigService) CheckConfigKeyUniqueAll(configKey string) error { entity, err := s.Dao.Fields(s.Dao.C.Id).Where(s.Dao.C.ConfigKey, configKey).FindOne() if err != nil { return myerrors.TipsError("参数键名校验数据失败") } if entity != nil { return myerrors.ValidError("参数键名已经存在") } return nil } // CheckConfigKeyUnique 检查键是否已经存在 func (s *ConfigService) CheckConfigKeyUnique(configKey string, configId int64) error { entity, err := s.Dao.Fields(s.Dao.C.Id).Where(s.Dao.C.ConfigKey, configKey).WhereNot(s.Dao.C.Id, configId).FindOne() if err != nil { return myerrors.TipsError("参数键名校验数据失败") } if entity != nil { return myerrors.ValidError("参数键名已经存在") } return nil } // Create 添加操作 func (s *ConfigService) Create(req *model.CreateSysConfigReq) (err error) { err = s.CheckConfigKeyUniqueAll(req.ConfigKey) if err != nil { return err } data := new(model.SysConfig) if err := gconv.Struct(req, data); err != nil { return err } SetCreatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName()) _, err = s.Dao.Insert(data) return } // UpdateById 修改系统参数 func (s *ConfigService) UpdateById(req *model.UpdateSysConfigReq) (err error) { err = s.CheckConfigKeyUnique(req.ConfigKey, req.Id) if err != nil { return err } data := new(model.SysConfig) if err := gconv.Struct(req, data); err != nil { return err } SetUpdatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName()) _, err = s.Dao.FieldsEx(UpdateFieldEx...).WherePri(req.Id).Data(data).Update() return } // DeleteByIds 删除 func (s *ConfigService) DeleteByIds(ids []int64) error { _, err := s.Dao.WhereIn(s.Dao.C.Id, ids).Delete() return err }