package svc import ( "applet/app/cfg" "applet/app/db" "applet/app/utils" "applet/app/utils/cache" db2 "applet/supply/db" "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" "fmt" "github.com/gin-gonic/gin" "xorm.io/xorm" ) // 单挑记录获取 func SysCfgGet(c *gin.Context, key string) string { mid := c.GetString("mid") eg := db.DBs[mid] return db.SysCfgGetWithDb(eg, mid, key) } // 多条记录获取 func SysCfgFind(c *gin.Context, keys ...string) map[string]string { var masterId string if c == nil { masterId = "" } else { masterId = c.GetString("mid") } tmp := SysCfgFindComm(masterId, keys...) return tmp } // SysCfgGetByMasterId get one config by master id func SysCfgGetByMasterId(masterId, key string) string { res := SysCfgFindComm(masterId, key) if _, ok := res[key]; !ok { return "" } return res[key] } // SysCfgFindComm get cfg by master id func SysCfgFindComm(masterId string, keys ...string) map[string]string { var eg *xorm.Engine if masterId == "" { eg = db.Db } else { eg = db.DBs[masterId] } res := map[string]string{} cfgKey := fmt.Sprintf("%s:cfg_cache", masterId) err := cache.GetJson(cfgKey, &res) if err != nil || len(res) == 0 { cfgList, _ := db.SysCfgGetAll(eg) if cfgList == nil { return nil } for _, v := range *cfgList { res[v.Key] = v.Val } cache.SetJson(cfgKey, res, 1800) } if len(keys) == 0 { return res } tmp := map[string]string{} for _, v := range keys { if val, ok := res[v]; ok { tmp[v] = val } else { tmp[v] = "" } } return tmp } // 多条记录获取 func EgSysCfgFind(keys ...string) map[string]string { var e *xorm.Engine res := map[string]string{} if len(res) == 0 { cfgList, _ := db.SysCfgGetAll(e) if cfgList == nil { return nil } for _, v := range *cfgList { res[v.Key] = v.Val } // 先不设置缓存 // cache.SetJson(md.KEY_SYS_CFG_CACHE, res, 60) } if len(keys) == 0 { return res } tmp := map[string]string{} for _, v := range keys { if val, ok := res[v]; ok { tmp[v] = val } else { tmp[v] = "" } } return tmp } // 清理系统配置信息 func SysCfgCleanCache(c *gin.Context) { var tmp = []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"} for _, v := range tmp { cacheKey := fmt.Sprintf(md.AppCfgCacheKey, c.GetString("mid"), v) cache.Del(cacheKey) } } // 写入系统设置 func SysCfgSet(c *gin.Context, key, val, memo string) bool { cfg, err := db.SysCfgGetOne(db.DBs[c.GetString("mid")], key) if err != nil || cfg == nil { return db.SysCfgInsert(db.DBs[c.GetString("mid")], key, val, memo) } if memo != "" && cfg.Memo != memo { cfg.Memo = memo } SysCfgCleanCache(c) return db.SysCfgUpdate(db.DBs[c.GetString("mid")], key, val, cfg.Memo) } // 多条记录获取 func SysCfgFindByIds(eg *xorm.Engine, keys ...string) map[string]string { key := utils.Md5(eg.DataSourceName() + md.KEY_SYS_CFG_CACHE) res := map[string]string{} c, ok := cfg.MemCache.Get(key).(map[string]string) if !ok || len(c) == 0 { cfgList, _ := db2.DbsSysCfgGetAll(eg) if cfgList == nil { return nil } for _, v := range *cfgList { res[v.Key] = v.Val } cfg.MemCache.Put(key, res, 10) } else { res = c } if len(keys) == 0 { return res } tmp := map[string]string{} for _, v := range keys { if val, ok := res[v]; ok { tmp[v] = val } else { tmp[v] = "" } } return tmp } // 多条记录获取 func SysCfgFindByIdsToCache(eg *xorm.Engine, dbName string, keys ...string) map[string]string { key := utils.Md5(dbName + md.KEY_SYS_CFG_CACHE) res := map[string]string{} c, ok := cfg.MemCache.Get(key).(map[string]string) if !ok || len(c) == 0 { cfgList, _ := db2.DbsSysCfgGetAll(eg) if cfgList == nil { return nil } for _, v := range *cfgList { res[v.Key] = v.Val } cfg.MemCache.Put(key, res, 1800) } else { res = c } if len(keys) == 0 { return res } tmp := map[string]string{} for _, v := range keys { if val, ok := res[v]; ok { tmp[v] = val } else { tmp[v] = "" } } return tmp }