Merge branch 'jng'
This commit is contained in:
commit
b063a38f76
@ -14,12 +14,12 @@ BosBaseDir = "fonchain-main"
|
|||||||
BosHttp = "https://"
|
BosHttp = "https://"
|
||||||
BosDomain = "cdns.fontree.cn"
|
BosDomain = "cdns.fontree.cn"
|
||||||
[oss]
|
[oss]
|
||||||
AccessKeyId = "LTAI5tLz1fSK53FQAEC9uNSb"
|
AccessKeyId = "${OSS_AK}"
|
||||||
AccessKeySecret = "oGB9chrQzQzITXR2IGv37Ji5WxZh4j"
|
AccessKeySecret = "${OSS_SK}"
|
||||||
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
|
Endpoint = "${OSS_ENDPOINTT}"
|
||||||
BucketName = "fontree-test"
|
BucketName = "${OSS_BUCKETNAME}"
|
||||||
BaseDir = "fonchain-main"
|
BaseDir = "fontree-fiee-test"
|
||||||
CdnHost = "https://cdn-test.szjixun.cn"
|
CdnHost = "${OSS_CDN}"
|
||||||
[redis]
|
[redis]
|
||||||
RedisDB = "2"
|
RedisDB = "2"
|
||||||
RedisAddr = "127.0.0.1:6379"
|
RedisAddr = "127.0.0.1:6379"
|
||||||
|
@ -15,12 +15,12 @@ BosBaseDir = "fiee"
|
|||||||
BosHttp = "https://"
|
BosHttp = "https://"
|
||||||
BosDomain = "cdns.fontree.cn"
|
BosDomain = "cdns.fontree.cn"
|
||||||
[oss]
|
[oss]
|
||||||
AccessKeyId = "LTAI5tLz1fSK53FQAEC9uNSb"
|
AccessKeyId = "${OSS_AK}"
|
||||||
AccessKeySecret = "oGB9chrQzQzITXR2IGv37Ji5WxZh4j"
|
AccessKeySecret = "${OSS_SK}"
|
||||||
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
|
Endpoint = "${OSS_ENDPOINTT}"
|
||||||
BucketName = "fontree-test"
|
BucketName = "${OSS_BUCKETNAME}"
|
||||||
BaseDir = "fiee"
|
BaseDir = "fontree-fiee-test"
|
||||||
CdnHost = "https://cdn-test.szjixun.cn"
|
CdnHost = "${OSS_CDN}"
|
||||||
|
|
||||||
[redis]
|
[redis]
|
||||||
RedisDB = "2"
|
RedisDB = "2"
|
||||||
|
@ -26,12 +26,12 @@ TelNum = "18021272627"
|
|||||||
Password = "Gy.123456"
|
Password = "Gy.123456"
|
||||||
|
|
||||||
[oss]
|
[oss]
|
||||||
AccessKeyId = "LTAI5tHfjSmWXHqfWgaL7Uo5"
|
AccessKeyId = "${OSS_AK}"
|
||||||
AccessKeySecret = "kOPctFZ3DHsbdSSym1fLyDK39hkzPI"
|
AccessKeySecret = "${OSS_SK}"
|
||||||
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
|
Endpoint = "${OSS_ENDPOINTT}"
|
||||||
BucketName = "erp-k8s-store"
|
BucketName = "${OSS_BUCKETNAME}"
|
||||||
BaseDir = "fiee"
|
BaseDir = "fontree-fiee"
|
||||||
CdnHost = "https://e-cdn.fontree.cn"
|
CdnHost = "${OSS_CDN}"
|
||||||
|
|
||||||
[stripe]
|
[stripe]
|
||||||
Webhookkey = "whsec_Mol32WD1KcKHUdYsSwap0LR03q2g9qNY"
|
Webhookkey = "whsec_Mol32WD1KcKHUdYsSwap0LR03q2g9qNY"
|
||||||
|
@ -15,20 +15,12 @@ BosBaseDir = "fiee"
|
|||||||
BosHttp = "https://"
|
BosHttp = "https://"
|
||||||
BosDomain = "cdns.fontree.cn"
|
BosDomain = "cdns.fontree.cn"
|
||||||
[oss]
|
[oss]
|
||||||
AccessKeyId = "LTAI5tLz1fSK53FQAEC9uNSb"
|
AccessKeyId = "${OSS_AK}"
|
||||||
AccessKeySecret = "oGB9chrQzQzITXR2IGv37Ji5WxZh4j"
|
AccessKeySecret = "${OSS_SK}"
|
||||||
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
|
Endpoint = "${OSS_ENDPOINTT}"
|
||||||
BucketName = "fontree-test"
|
BucketName = "${OSS_BUCKETNAME}"
|
||||||
BaseDir = "fiee"
|
BaseDir = "fontree-fiee-test"
|
||||||
CdnHost = "https://cdn-test.szjixun.cn"
|
CdnHost = "${OSS_CDN}"
|
||||||
|
|
||||||
[oss]
|
|
||||||
AccessKeyId="LTAI5tLz1fSK53FQAEC9uNSb"
|
|
||||||
AccessKeysecret ="oGB9chrQzQzITXR2IGv37Ji5WxZh4j"
|
|
||||||
Endpoint = "oss-cn-hangzhou.aliyuncs.com"
|
|
||||||
BucketName = "fontree-test"
|
|
||||||
BaseDir = "fiee"
|
|
||||||
CdnHost = "https://cdn-test.szjixun.cn"
|
|
||||||
|
|
||||||
[redis]
|
[redis]
|
||||||
RedisDB = "2"
|
RedisDB = "2"
|
||||||
|
@ -4,9 +4,12 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"fonchain-fiee/pkg/common"
|
"fonchain-fiee/pkg/common"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
"go.uber.org/zap"
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
"os"
|
"os"
|
||||||
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -249,5 +252,63 @@ func Viper(iniConf string) (err error) {
|
|||||||
panic("viper.Unmarshal failed" + err.Error())
|
panic("viper.Unmarshal failed" + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
traverseFields(reflect.ValueOf(*ConfigData), "", ConfigData)
|
||||||
|
zap.L().Info("ConfigData", zap.Any("ConfigData", ConfigData))
|
||||||
|
fmt.Printf("ConfigData--%+v", ConfigData)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
func traverseFields(value reflect.Value, prefix string, configPtr interface{}) {
|
||||||
|
valueType := value.Type()
|
||||||
|
prefixEnv := "${"
|
||||||
|
suffixEnv := "}"
|
||||||
|
// 遍历结构体的字段
|
||||||
|
for i := 0; i < valueType.NumField(); i++ {
|
||||||
|
field := valueType.Field(i)
|
||||||
|
fieldValue := value.Field(i)
|
||||||
|
// 拼接字段名(带有前缀)
|
||||||
|
fieldName := prefix + field.Name
|
||||||
|
// 判断字段的类型
|
||||||
|
if fieldValue.Kind() == reflect.Struct {
|
||||||
|
// 递归遍历嵌套结构体字段
|
||||||
|
traverseFields(fieldValue, fieldName+".", configPtr)
|
||||||
|
} else {
|
||||||
|
// 获取字段的值
|
||||||
|
fieldValueStr := fmt.Sprintf("%v", fieldValue.Interface())
|
||||||
|
// 判断是不是需要通过环境变量获取
|
||||||
|
if len(fieldValueStr) > 3 && strings.HasPrefix(fieldValueStr, prefixEnv) && strings.HasSuffix(fieldValueStr, suffixEnv) {
|
||||||
|
end := len(fieldValueStr) - len(suffixEnv)
|
||||||
|
var hasDefault bool
|
||||||
|
if strings.Index(fieldValueStr, "|") > 0 {
|
||||||
|
hasDefault = true
|
||||||
|
end = strings.Index(fieldValueStr, "|")
|
||||||
|
}
|
||||||
|
envStr := fieldValueStr[len(prefixEnv):end]
|
||||||
|
getValue := os.Getenv(envStr)
|
||||||
|
if getValue == "" && hasDefault {
|
||||||
|
getValue = fieldValueStr[end+1 : len(fieldValueStr)-len(suffixEnv)]
|
||||||
|
}
|
||||||
|
setSubFieldValue(configPtr, fieldName, getValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setSubFieldValue(configPtr interface{}, fieldPath string, newValue interface{}) {
|
||||||
|
value := reflect.ValueOf(configPtr).Elem()
|
||||||
|
fields := strings.Split(fieldPath, ".")
|
||||||
|
for _, field := range fields {
|
||||||
|
value = value.FieldByName(field)
|
||||||
|
if !value.IsValid() {
|
||||||
|
return // 字段不存在,直接返回
|
||||||
|
}
|
||||||
|
if value.Kind() == reflect.Ptr {
|
||||||
|
value = value.Elem() // 解引用指针类型的字段
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 检查字段是否可设置
|
||||||
|
if value.CanSet() {
|
||||||
|
// 根据字段类型,将新值转换为对应类型并设置字段的值
|
||||||
|
newValue := reflect.ValueOf(newValue).Convert(value.Type())
|
||||||
|
value.Set(newValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user