package cacheservice import ( "fmt" "go-admin/app/admin/models" "go-admin/common/const/rediskey" "go-admin/common/helper" "github.com/bytedance/sonic" "github.com/go-admin-team/go-admin-core/logger" "gorm.io/gorm" ) // 加载config缓存 func InitConfigCache(db *gorm.DB) { datas := []models.SysConfig{} db.Model(&models.SysConfig{}).Find(&datas) for _, item := range datas { cacheKey := fmt.Sprintf(rediskey.SysConfigKey, item.ConfigKey) content, err := sonic.Marshal(item) if err != nil { logger.Error(err) continue } if len(content) > 0 { helper.DefaultRedis.SetString(cacheKey, item.ConfigValue) } } } // 获取 sys config缓存 func GetConfigCacheByKey(db *gorm.DB, key string) models.SysConfig { cacheKey := fmt.Sprintf(rediskey.SysConfigKey, key) val, _ := helper.DefaultRedis.GetString(key) result := models.SysConfig{} if val == "" { sonic.Unmarshal([]byte(val), &result) } if result.Id == 0 { if err := db.Model(&result).Where("config_key = ?", key).First(&result).Error; err != nil { logger.Errorf("GetConfigCacheByKey %s", err.Error()) } } if result.Id > 0 { content, err := sonic.Marshal(result) if err != nil { logger.Errorf("GetConfigCacheByKey %s", err.Error()) } else { helper.DefaultRedis.SetString(cacheKey, string(content)) } } return result }