package cache import ( cacheApi "epur-pay/cache/api" "epur-pay/model" "epur-pay/pkg/config" "epur-pay/pkg/limit" "github.com/oschwald/geoip2-golang" "time" ) var Global *GlobalServerCache /* 全局公用缓存层 */ type GlobalServerCache struct { ProjectInitStatus bool // 项目是否初始化完成 IpLocation *geoip2.Reader // IP库 DefaultTimeZone *time.Location // 默认时区 LimitRouter struct { RuleKey string Rule *limit.LimitConfRules Api limit.LimiterIface } // 限流器 Routers []*model.RouterMethod Caches struct { Config *cacheApi.Config Language *cacheApi.Language Version *cacheApi.Version RolePermission *cacheApi.RolePermission // 角色菜单权限 User *cacheApi.User BlackList *cacheApi.BlackList // 黑名单 Currency *cacheApi.Currency } } func New() { Global = &GlobalServerCache{} Global.CacheDataInit() } func (g *GlobalServerCache) CacheDataInit() { g.DefaultTimeZone, _ = time.LoadLocation("Asia/Shanghai") g.LimitRouter.Rule = &limit.LimitConfRules{ Rules: make(map[string]*limit.LimitOpt), } g.Caches.Config = (&cacheApi.Config{}).Refresh() g.Caches.Language = (&cacheApi.Language{}).Refresh() g.Caches.Version = (&cacheApi.Version{}).Refresh() g.Caches.BlackList = (&cacheApi.BlackList{}).Refresh() g.Caches.RolePermission = (&cacheApi.RolePermission{}).Refresh() g.Caches.User = (&cacheApi.User{}).Refresh() if config.Cf.Common.RunMode == "release" { NewIpLocation() } go func() { g.ProjectInitStatus = true }() }