From a62c359fd7627c9b8e7e99b6644e94b25299525e Mon Sep 17 00:00:00 2001 From: ayflying Date: Wed, 14 May 2025 16:13:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=8E=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E8=BF=94=E5=9B=9E=E4=B8=8A=E7=BA=A7=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E8=BF=9B=E8=A1=8C=E9=85=8D=E7=BD=AE=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 133 +++---------------------------------------- pkg/config/config.go | 12 +++- 2 files changed, 19 insertions(+), 126 deletions(-) diff --git a/config/config.go b/config/config.go index eb09191..617b11b 100644 --- a/config/config.go +++ b/config/config.go @@ -1,17 +1,11 @@ package config import ( - "fmt" - "github.com/apolloconfig/agollo/v4" - apolloConfig "github.com/apolloconfig/agollo/v4/env/config" "github.com/apolloconfig/agollo/v4/storage" + "github.com/ayflying/utility_go/pkg" "github.com/gogf/gf/contrib/config/apollo/v2" - "github.com/gogf/gf/v2/container/gvar" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" - "github.com/gogf/gf/v2/os/gfile" - "github.com/gogf/gf/v2/os/gres" - "github.com/gogf/gf/v2/text/gstr" "sync" ) @@ -31,137 +25,28 @@ type Cfg struct { Lock sync.Mutex } +// Deprecated : pkg.Config().GetDbFile(name) func (c *Cfg) GetDbFile(name string) (res *g.Var, err error) { - get2, err := g.Model("game_config"). - Where("name", name).Master().Value("data") - err = get2.Scan(&res) - if res == nil { - res = &gvar.Var{} - } + pkg.Config().GetDbFile(name) return } +// Deprecated : pkg.Config().GetFile(name, obj...) func (c *Cfg) GetFile(filename string, obj ...Load) (jsonObj *gjson.Json, err error) { - pathStr := "manifest/game/" - filePath := pathStr + filename + ".json" - //err := gres.Load(pathStr + filename) - - //载入静态资源到文件对象 - err = gres.Load(filePath) - var bytes []byte - - if gfile.IsFile(filePath) { - bytes = gfile.GetBytes(filePath) - } else { - bytes = gres.GetContent(filePath) - } - - jsonObj, err = gjson.DecodeToJson(bytes) - //g.Dump(filePath, jsonObj) + pkg.Config().GetFile(filename) return } // getUrlFile 获取远程配置 +// Deprecated : pkg.Config().GetUrlFile(name) func (c *Cfg) GetUrlFile(name string) (jsonObj *gjson.Json, err error) { - urlStr := fmt.Sprintf("http://sdf.sdfs.sdf/%s.json", name) - getUrl, err := g.Client().Discovery(nil).Get(nil, urlStr) - bytes := getUrl.ReadAll() - jsonObj, err = gjson.DecodeToJson(bytes) + pkg.Config().GetUrlFile(name) return } -// 获取阿波罗 -//func (c *Cfg) GetApollo(name string, obj Load) (jsonObj *gjson.Json, err error) { -// jsonObj, err = c.GetApolloV2(name, obj) -// return -// -// //c.Lock.Lock() -// //defer c.Lock.Unlock() -// // -// //Item2Obj[name+".json"] = obj -// //var cfg = apolloConfig.AppConfig{ -// // AppID: ApolloCfg.AppID, -// // Cluster: ApolloCfg.Cluster, -// // IP: ApolloCfg.IP, -// // NamespaceName: name + ".json", -// // Secret: ApolloCfg.Secret, -// // IsBackupConfig: ApolloCfg.IsBackupConfig, -// // BackupConfigPath: ApolloCfg.BackupConfigPath, -// // SyncServerTimeout: 60, -// // MustStart: true, -// //} -// ////cfg.NamespaceName = name + ".json" -// // -// //client, err := agollo.StartWithConfig(func() (*apolloConfig.AppConfig, error) { -// // return ApolloCfg, nil -// //}) -// //if client == nil { -// // return -// //} -// //var getStr string -// //var getApollo *storage.Config -// //for range 5 { -// // getApollo = client.GetConfig(cfg.NamespaceName) -// // if getApollo != nil { -// // break -// // } -// // time.Sleep(time.Second * 5) -// //} -// // -// //if getApollo != nil { -// // getStr = getApollo.GetValue("content") -// // if getStr != "" { -// // //写入配置 -// // gfile.PutContents(path.Join("manifest", "game", name+".json"), getStr) -// // } -// //} else { -// // jsonObj, err = c.GetFile(name) -// //} -// //jsonObj, err = gjson.DecodeToJson(getStr) -// ////首次运行加入监听器 -// //if !gstr.InArray(ApolloListener, name) { -// // c2 := &CustomChangeListener{} -// // client.AddChangeListener(c2) -// // ApolloListener = append(ApolloListener, name) -// //} -// //return -//} - +// Deprecated : pkg.Config().GetApollo(name, obj) func (c *Cfg) GetApollo(name string, obj Load) (jsonObj *gjson.Json, err error) { - Item2Obj[name+".json"] = obj - - // 接入阿波罗配置 - ApolloCfg.NamespaceName = name + ".json" - adapter, err := apollo.New(nil, *ApolloCfg) - if err != nil { - g.Log().Fatalf(nil, `%+v`, err) - } - // Change the adapter of default configuration instance. - g.Cfg(name).SetAdapter(adapter) - - //首次运行加入监听器 - if !gstr.InArray(ApolloListener, name+".json") { - //放置监听器 - client, _ := agollo.StartWithConfig(func() (*apolloConfig.AppConfig, error) { - return &apolloConfig.AppConfig{ - AppID: ApolloCfg.AppID, - Cluster: ApolloCfg.Cluster, - NamespaceName: ApolloCfg.NamespaceName, - IP: ApolloCfg.IP, - IsBackupConfig: ApolloCfg.IsBackupConfig, - BackupConfigPath: ApolloCfg.BackupConfigPath, - Secret: ApolloCfg.Secret, - SyncServerTimeout: ApolloCfg.SyncServerTimeout, - MustStart: ApolloCfg.MustStart, - }, nil - }) - c2 := &CustomChangeListener{} - client.AddChangeListener(c2) - ApolloListener = append(ApolloListener, name+".json") - } - - cfg, err := g.Cfg(name).Get(nil, "content") - cfg.Scan(&jsonObj) + pkg.Config().GetApollo(name, obj) return } diff --git a/pkg/config/config.go b/pkg/config/config.go index 9d7ef96..64970fa 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -17,11 +17,11 @@ import ( var ( //ApolloCfg *apolloConfig.AppConfig - ApolloCfg *apollo.Config + ApolloCfg *apollo.Config // ApolloListener 存储需要监听的 Apollo 配置项名称 ApolloListener []string // Item2Obj 存储配置项名称和对应的加载器对象的映射 - Item2Obj = map[string]Load{} + Item2Obj = map[string]Load{} ) // Load 接口定义了 Load 方法,用于加载数据 @@ -86,6 +86,14 @@ func (c *Cfg) GetFile(filename string, _pathStr ...string) (jsonObj *gjson.Json, bytes = gres.GetContent(filePath) // 从打包资源中获取内容 } + //如果还是没有读取到配置,从当前目录返回上级读取 + if bytes == nil { + // 拼接完整的文件路径 + filePath = "../../" + pathStr + filename + ".json" + if gfile.IsFile(filePath) { + bytes = gfile.GetBytes(filePath) // 读取物理文件内容 + } + } // 解析 JSON 内容并返回结果 jsonObj, err = gjson.DecodeToJson(bytes) return