package config import ( "errors" "fmt" "github.com/fsnotify/fsnotify" "github.com/spf13/viper" ) type config struct { Env string ServerPort int JwtUserAccessKey string JwtUserRefreshKey string JwtUserAccessExpire int64 JwtUserRefreshExpire int64 JwtAdminAccessKey string JwtAdminRefreshKey string JwtAdminAccessExpire int64 JwtAdminRefreshExpire int64 LogPath string LogFile string LogLevel int DBDriver string DBHost string DBPort int DBUser string DBPassword string DBName string WxAppId string WxAppSecret string WxMchID string WxMchSecret string WxCertFile string WxKeyFile string WxRootCaFile string ApplicationAppId string ApplicationAppSecret string ApplicationMchID string ApplicationMchSecret string WxPayCallBackUrl string AliPayCallBackUrl string SmsAccessKeyID string SmsAccessKeySecret string SmsSignName string SmsTemplateCode string RedisHost string RedisPort int RedisPassword string RedisDB int //LotteryHost string //LotteryPort int XianMaiBaseUrl string } var AppConfig config func Init() { viper.AutomaticEnv() viper.SetDefault("ENV", "dev") viper.SetDefault("CONFIG_PATH", "./configs") viper.SetDefault("CONFIG_FILE_NAME", "server") configPath := viper.GetString("CONFIG_PATH") configFile := viper.GetString("CONFIG_FILE_NAME") env := viper.GetString("ENV") fmt.Println(fmt.Sprintf("************************** 请注意,当前版本是:%s **************************", env)) viper.AddConfigPath(fmt.Sprintf("%s/%s", configPath, env)) viper.SetConfigName(configFile) viper.SetConfigType("json") initConfig() viper.WatchConfig() viper.OnConfigChange(func(e fsnotify.Event) { initConfig() }) } func initConfig() { fmt.Println("initConfig....") err := viper.ReadInConfig() if err != nil { panic(errors.New(fmt.Sprintf("Fatal error configs file: %s \n", err))) } AppConfig = config{ Env: viper.GetString("ENV"), ServerPort: viper.GetInt("server.port"), JwtUserAccessKey: viper.GetString("jwt.user.access_key"), JwtUserRefreshKey: viper.GetString("jwt.user.refresh_key"), JwtUserAccessExpire: viper.GetInt64("jwt.user.access_expire"), JwtUserRefreshExpire: viper.GetInt64("jwt.user.refresh_expire"), JwtAdminAccessKey: viper.GetString("jwt.admin.access_key"), JwtAdminRefreshKey: viper.GetString("jwt.admin.refresh_key"), JwtAdminAccessExpire: viper.GetInt64("jwt.admin.access_expire"), JwtAdminRefreshExpire: viper.GetInt64("jwt.admin.refresh_expire"), LogPath: viper.GetString("log.path"), LogFile: viper.GetString("log.file"), LogLevel: viper.GetInt("log.level"), DBDriver: viper.GetString("db.driver"), DBHost: viper.GetString("db.host"), DBPort: viper.GetInt("db.port"), DBUser: viper.GetString("db.user"), DBPassword: viper.GetString("db.password"), DBName: viper.GetString("db.db_name"), WxAppId: viper.GetString("wx.app_id"), WxAppSecret: viper.GetString("wx.app_secret"), WxMchID: viper.GetString("wx.app_mchId"), WxMchSecret: viper.GetString("wx.app_mchSecret"), //WxCertFile: viper.GetString("wx.wx_pay.cert_file"), //WxKeyFile: viper.GetString("wx.wx_pay.key_file"), //WxRootCaFile: viper.GetString("wx.wx_pay.root_ca_file"), //WxPayCallBackUrl: viper.GetString("wx.wx_pay.callback_url"), WxCertFile: viper.GetString("wx_pay.cert_file"), WxKeyFile: viper.GetString("wx_pay.key_file"), WxRootCaFile: viper.GetString("wx_pay.root_ca_file"), WxPayCallBackUrl: viper.GetString("wx_pay.callback_url"), AliPayCallBackUrl: viper.GetString("ali_pay.callback_url"), ApplicationAppId: viper.GetString("app.app_id"), ApplicationAppSecret: viper.GetString("app.app_secret"), ApplicationMchID: viper.GetString("app.app_mchId"), ApplicationMchSecret: viper.GetString("app.app_mchSecret"), SmsAccessKeyID: viper.GetString("sms.access_key_id"), SmsAccessKeySecret: viper.GetString("sms.access_key_secret"), SmsSignName: viper.GetString("sms.sign_name"), SmsTemplateCode: viper.GetString("sms.template_code"), RedisHost: viper.GetString("redis.host"), RedisPort: viper.GetInt("redis.port"), RedisPassword: viper.GetString("redis.password"), RedisDB: viper.GetInt("redis.db"), XianMaiBaseUrl: viper.GetString("xianmai_base_url"), } //fmt.Printf("%+v", AppConfig) }