refactor: 删除冗余常量文件并整合常量定义

This commit is contained in:
TsMask
2025-02-20 09:50:29 +08:00
parent 1b435074cb
commit a1296b6fe6
63 changed files with 1823 additions and 1748 deletions

View File

@@ -15,13 +15,13 @@ import (
libGlobal "be.ems/lib/global"
)
var cfg *viper.Viper
var conf *viper.Viper
// 初始化程序配置
func InitConfig(configDir, assetsDir embed.FS) {
cfg = viper.New()
func InitConfig(configDir *embed.FS) {
conf = viper.New()
initFlag()
initViper(configDir, assetsDir)
initViper(configDir)
}
// 指定参数绑定
@@ -50,63 +50,50 @@ func initFlag() {
os.Exit(1)
}
cfg.BindPFlags(pflag.CommandLine)
conf.BindPFlags(pflag.CommandLine)
}
// 配置文件读取
func initViper(configDir, assetsDir embed.FS) {
func initViper(configDir *embed.FS) {
// 如果配置文件名中没有扩展名则需要设置Type
cfg.SetConfigType("yaml")
// 从 embed.FS 中读取默认配置文件内容
configDefault, err := configDir.ReadFile("config/config.default.yaml")
conf.SetConfigType("yaml")
// 读取默认配置文件
configDefaultByte, err := configDir.ReadFile("config/config.default.yaml")
if err != nil {
log.Fatalf("ReadFile config default file: %s", err)
log.Fatalf("config default file read error: %s", err)
return
}
// 设置默认配置文件内容到 viper
err = cfg.ReadConfig(bytes.NewReader(configDefault))
if err != nil {
log.Fatalf("NewReader config default file: %s", err)
if err = conf.ReadConfig(bytes.NewReader(configDefaultByte)); err != nil {
log.Fatalf("config default file read error: %s", err)
return
}
// 加载运行环境配置
env := cfg.GetString("env")
if env != "local" && env != "prod" {
log.Fatalf("fatal error config env for local or prod : %s", env)
}
log.Printf("Current service environment operation configuration => %s \n", env)
// 当期服务环境运行配置 => local
env := conf.GetString("env")
log.Printf("current service environment operation configuration => %s \n", env)
// 加载运行配置文件合并相同配置
envPath := "config/config.prod.yaml"
if env == "local" {
envPath = "config/config.local.yaml"
}
// 从 embed.FS 中读取默认配置文件内容
configEnv, err := configDir.ReadFile(envPath)
envConfigPath := fmt.Sprintf("config/config.%s.yaml", env)
configEnvByte, err := configDir.ReadFile(envConfigPath)
if err != nil {
log.Fatalf("ReadFile config local file: %s", err)
log.Fatalf("config env %s file read error: %s", env, err)
return
}
// 设置默认配置文件内容到 viper
err = cfg.MergeConfig(bytes.NewReader(configEnv))
if err != nil {
log.Fatalf("NewReader config local file: %s", err)
if err = conf.MergeConfig(bytes.NewReader(configEnvByte)); err != nil {
log.Fatalf("config env %s file read error: %s", env, err)
return
}
// 合并外部使用配置
configFile := cfg.GetString("config")
if configFile != "" {
configInMerge(configFile)
// 外部文件配置
externalConfig := conf.GetString("config")
if externalConfig != "" {
// readExternalConfig(externalConfig)
// 处理旧配置,存在相同的配置项处理
configInMerge(externalConfig)
}
// 记录程序开始运行的时间点
cfg.Set("runTime", time.Now())
// 设置程序内全局资源访问
cfg.Set("AssetsDir", assetsDir)
conf.Set("runTime", time.Now())
}
// 配置文件读取进行内部参数合并
@@ -137,54 +124,62 @@ func configInMerge(configFile string) {
if key == "testconfig" || key == "logger" {
continue
}
// 数据库配置
if key == "database" {
item := value.(map[string]any)
defaultItem := cfg.GetStringMap("gorm.datasource.default")
defaultItem["type"] = item["type"]
defaultItem["host"] = item["host"]
defaultItem["port"] = item["port"]
defaultItem["username"] = item["user"]
defaultItem["password"] = item["password"]
defaultItem["database"] = item["name"]
continue
}
cfg.Set(key, value)
conf.Set(key, value)
}
}
// Env 获取运行服务环境
// local prod
func Env() string {
return cfg.GetString("env")
return conf.GetString("env")
}
// RunTime 程序开始运行的时间
func RunTime() time.Time {
return cfg.GetTime("runTime")
return conf.GetTime("runTime")
}
// Get 获取配置信息
//
// Get("server.proxy")
func Get(key string) any {
return cfg.Get(key)
return conf.Get(key)
}
// GetAssetsDirFS 访问程序内全局资源访问
func GetAssetsDirFS() embed.FS {
return cfg.Get("AssetsDir").(embed.FS)
func GetAssetsDirFS() *embed.FS {
return conf.Get("AssetsDir").(*embed.FS)
}
// IsAdmin 用户是否为管理员
func IsAdmin(userID string) bool {
if userID == "" {
// SetAssetsDirFS 设置程序内全局资源访问
func SetAssetsDirFS(assetsDir *embed.FS) {
conf.Set("AssetsDir", assetsDir)
}
// readExternalConfig 读取外部文件配置
func readExternalConfig(configPaht string) {
f, err := os.Open(configPaht)
if err != nil {
log.Fatalf("config external file read error: %s", err)
return
}
defer f.Close()
if err = conf.MergeConfig(f); err != nil {
log.Fatalf("config external file read error: %s", err)
return
}
}
// IsSystemUser 用户是否为系统管理员
func IsSystemUser(userId int64) bool {
if userId <= 0 {
return false
}
// 从本地配置获取user信息
admins := Get("user.adminList").([]any)
for _, s := range admins {
if fmt.Sprint(s) == userID {
// 从配置获取系统管理员ID列表
arr := Get("user.system").([]any)
for _, v := range arr {
if fmt.Sprint(v) == fmt.Sprint(userId) {
return true
}
}