2026-08-09 10:43:45 +08:00
|
|
|
|
package check
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2026-08-09 12:41:08 +08:00
|
|
|
|
"bsm/full/module/base/initial/internal/impl"
|
|
|
|
|
|
"bsm/full/module/base/initial/internal/models"
|
2026-08-09 10:43:45 +08:00
|
|
|
|
"git.apinb.com/bsm-sdk/core/vars"
|
2026-09-22 21:15:34 +08:00
|
|
|
|
"gorm.io/gorm/clause"
|
2026-08-09 10:43:45 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// 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},
|
|
|
|
|
|
}}).
|
2026-08-09 10:43:45 +08:00
|
|
|
|
Find(&configs).Error
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
err = impl.RedisService.Set(key, configs, vars.DefaultTTL)
|
|
|
|
|
|
return configs, err
|
|
|
|
|
|
}
|