Files
full/module/base/initial/internal/logic/check/config_cache.go

35 lines
918 B
Go
Raw Normal View History

package check
import (
"bsm/full/module/base/initial/internal/impl"
"bsm/full/module/base/initial/internal/models"
"git.apinb.com/bsm-sdk/core/vars"
2026-09-22 21:15:34 +08:00
"gorm.io/gorm/clause"
)
// GetConfigCache 获取配置缓存
func GetConfigByCache(app, os string) ([]*models.InitialConfig, error) {
var configs []*models.InitialConfig
key := impl.RedisService.BuildKey("config", app, os)
err := impl.RedisService.Get(key, &configs)
if err == nil {
return configs, nil
}
err = impl.DBService.Where("app = ? AND (os = ? OR os = ?)", app, os, "ALL").
2026-09-22 21:15:34 +08:00
// 使用结构化排序并以占位符绑定 os禁止把请求参数拼接进 ORDER BY
Order(clause.OrderBy{Expression: clause.Expr{
SQL: "CASE WHEN os = ? THEN 0 ELSE 1 END, id DESC",
Vars: []any{os},
}}).
Find(&configs).Error
if err != nil {
return nil, err
}
err = impl.RedisService.Set(key, configs, vars.DefaultTTL)
return configs, err
}