package sys_cfg import ( "code.fnuoos.com/EggPlanet/egg_models.git/md" "code.fnuoos.com/EggPlanet/egg_models.git/src/model" zhios_order_relate_logx "code.fnuoos.com/EggPlanet/egg_models.git/utils/logx" "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/cache" "fmt" "xorm.io/xorm" ) func NewSysCfgDb(engine *xorm.Engine) SysCfgDao { return &SysCfgDb{ Db: engine, } } type SysCfgDb struct { Db *xorm.Engine } func (s SysCfgDb) SysCfgGetAll() (*[]model.SysCfg, error) { var cfgList []model.SysCfg if err := s.Db.Cols("key,val,memo").Find(&cfgList); err != nil { return nil, zhios_order_relate_logx.Error(err) } return &cfgList, nil } func (s SysCfgDb) SysCfgGetOneNoDataNoErr(key string) (*model.SysCfg, error) { var cfgList model.SysCfg _, err := s.Db.Where("`key`=?", key).Get(&cfgList) if err != nil { return nil, zhios_order_relate_logx.Error(err) } return &cfgList, nil } func (s SysCfgDb) SysCfgGetOne(key string) (*model.SysCfg, error) { var cfgList model.SysCfg if has, err := s.Db.Where("`key`=?", key).Get(&cfgList); err != nil || has == false { return nil, zhios_order_relate_logx.Error(err) } return &cfgList, nil } func (s SysCfgDb) SysCfgInsert(key, val, memo string) bool { cfg := model.SysCfg{Key: key, Val: val, Memo: memo} _, err := s.Db.InsertOne(&cfg) if err != nil { zhios_order_relate_logx.Error(err) return false } return true } func (s SysCfgDb) SysCfgUpdate(key, val string) bool { cfg := model.SysCfg{Key: key, Val: val} _, err := s.Db.Where("`key`=?", key).Cols("val").Update(&cfg) if err != nil { zhios_order_relate_logx.Error(err) return false } s.SysCfgDel(key) return true } func (s SysCfgDb) SysCfgGetWithDb(HKey string) string { cacheKey := fmt.Sprintf(md.AppCfgCacheKey, HKey[0:1]) get, err := cache.HGetString(cacheKey, HKey) if err != nil || get == "" { cfg, err := s.SysCfgGetOne(HKey) if err != nil || cfg == nil { _ = zhios_order_relate_logx.Error(err) return "" } // key是否存在 cacheKeyExist := false if cache.Exists(cacheKey) { cacheKeyExist = true } // 设置缓存 _, err = cache.HSet(cacheKey, HKey, cfg.Val) if err != nil { _ = zhios_order_relate_logx.Error(err) return "" } if !cacheKeyExist { // 如果是首次设置 设置过期时间 _, err := cache.Expire(cacheKey, md.CfgCacheTime) if err != nil { _ = zhios_order_relate_logx.Error(err) return "" } } return cfg.Val } return get } func (s SysCfgDb) SysCfgDel(HKey string) error { cacheKey := fmt.Sprintf(md.AppCfgCacheKey, HKey[0:1]) _, err := cache.HDel(cacheKey, HKey) if err != nil { return err } return nil } func (s SysCfgDb) SysCfgFindWithDb(keys ...string) map[string]string { res := map[string]string{} for _, v := range keys { val := s.SysCfgGetWithDb(v) res[v] = val } return res }