package service import ( "ulink-admin/frame" "ulink-admin/modules/system/dao" "ulink-admin/modules/system/models/model" "ulink-admin/modules/system/models/req" "ulink-admin/pkg/cache" ) type ConfigService struct { ConfigDao *dao.ConfigDao `inject:""` } // GetConfigKey 根据键名查询参数配置信息 func (s ConfigService) GetConfigKey(param string) *model.SysConfig { //从缓存中取出数据判断是否存在,存在直接使用,不存在就从数据库查询 key := cache.GetRedisConfigByKey(param) if key != nil { return key } configKey := s.ConfigDao.GetConfigKey(param) if configKey.Id > 0 { cache.SetRedisConfig(configKey) return configKey } return nil } // Find 分页查询数据 func (s ConfigService) Find(query *req.ConfigQuery) (*[]model.SysConfig, int64) { return s.ConfigDao.List(query) } // Add 添加数据 func (s ConfigService) Add(config *model.SysConfig) { //检验key是否存在 if s.ConfigDao.Exist(model.SysConfig{}.TableName(), "config_key=?", config.ConfigKey) { frame.Throw(frame.BUSINESS_CODE, "新增参数'"+config.ConfigName+"'失败,参数键名已存在") } s.ConfigDao.Insert(config) //进行缓存数据添加 cache.SetDictCache(config.ConfigKey, config.MarshalDictObj(config)) } // GetInfo 查询数据 func (s ConfigService) GetInfo(id int64) *model.SysConfig { config := new(model.SysConfig) s.ConfigDao.GetById(id, config) return config } // Update 修改数据 func (s ConfigService) Update(config *model.SysConfig) { //检验key是否存在 if s.ConfigDao.Exist(model.SysConfig{}.TableName(), "config_key=? and id!=?", config.ConfigKey, config.Id) { frame.Throw(frame.BUSINESS_CODE, "新增参数'"+config.ConfigName+"'失败,参数键名已存在") } s.ConfigDao.Update(config) cache.SetDictCache(config.ConfigKey, config.MarshalDictObj(config)) } // Remove 批量删除 func (s ConfigService) Remove(list []int64) { //进行校验,查看是否可以删除 byIds := s.ConfigDao.CheckConfigByIds(list) for _, config := range *byIds { if config.ConfigType == "Y" { frame.Throw(frame.BUSINESS_CODE, "内置参数"+config.ConfigName+"不能删除") } } s.ConfigDao.Delete(&model.SysConfig{}, list) //刷新缓存 strs := make([]string, 0) for _, config := range *byIds { strs = append(strs, config.ConfigKey) } cache.RemoveList(strs) } // CheckConfigByIds 根据id集合查询 func (s ConfigService) CheckConfigByIds(list []int64) *[]model.SysConfig { return s.ConfigDao.CheckConfigByIds(list) } // FindAll 查询所有数据 func (s ConfigService) FindAll() *[]model.SysConfig { return s.ConfigDao.FindAll() }