119 lines
2.7 KiB
Go
119 lines
2.7 KiB
Go
package config
|
|
|
|
import (
|
|
"github.com/mitchellh/mapstructure"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/smbrave/goutil"
|
|
"github.com/spf13/viper"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
config *Config
|
|
configEnv string
|
|
BuildTime string
|
|
CommitId string
|
|
)
|
|
|
|
type Mysql struct {
|
|
Host string `toml:"host"`
|
|
Port int `toml:"port"`
|
|
User string `toml:"user"`
|
|
Pass string `toml:"pass"`
|
|
Db string `toml:"db"`
|
|
}
|
|
|
|
type Server struct {
|
|
Address string `toml:"address"`
|
|
LogLevel int `toml:"log_level"`
|
|
}
|
|
|
|
type Redis struct {
|
|
Addr string `toml:"addr"`
|
|
Db int `toml:"db"`
|
|
Password string `toml:"password"`
|
|
}
|
|
|
|
type QyWeixin struct {
|
|
Corpid string `toml:"corpid"`
|
|
|
|
CheckinAgent string `toml:"checkin_agent"`
|
|
CheckinSecret string `toml:"checkin_secret"`
|
|
CheckinGroup string `toml:"checkin_group"`
|
|
CheckinPayThresold float64 `toml:"checkin_pay_thresold"`
|
|
CheckinOndutyPayDay string `toml:"checkin_onduty_pay_day"`
|
|
|
|
EnterpriseAgent string `toml:"enterprise_agent"`
|
|
EnterpriseSecret string `toml:"enterprise_secret"`
|
|
HrAgent string `toml:"hr_agent"`
|
|
HrSecret string `toml:"hr_secret"`
|
|
PaySecret string `toml:"pay_secret"`
|
|
PayAgent string `toml:"pay_agent"`
|
|
ApproveAgent string `toml:"approve_agent"`
|
|
ApproveSecret string `toml:"approve_secret"`
|
|
}
|
|
|
|
type WxPay struct {
|
|
PayKeyPem string `toml:"pay_key_pem"`
|
|
PayCertPem string `toml:"pay_cert_pem"`
|
|
PayMchId string `toml:"pay_mchid"`
|
|
PaySerialNumber string `toml:"pay_serial_number"`
|
|
PayApiKeyV3 string `toml:"pay_api_key_v3"`
|
|
PayApiKeyV2 string `toml:"pay_api_key_v2"`
|
|
}
|
|
|
|
type Config struct {
|
|
Server *Server `toml:"server"`
|
|
Mysql *Mysql `toml:"mysql"`
|
|
Redis *Redis `toml:"redis"`
|
|
QyWeixin *QyWeixin `toml:"qyweixin"`
|
|
WxPay *WxPay `toml:"wxpay"`
|
|
}
|
|
|
|
func GetEnv() string {
|
|
return configEnv
|
|
}
|
|
|
|
func IsProdEnv() bool {
|
|
return configEnv == "prod"
|
|
}
|
|
|
|
func IsDevEnv() bool {
|
|
return configEnv == "dev"
|
|
}
|
|
|
|
func IsTestEnv() bool {
|
|
return configEnv == "test"
|
|
}
|
|
|
|
func GetConfig() *Config {
|
|
return config
|
|
}
|
|
|
|
func LoadServerConfig() {
|
|
configEnv = os.Getenv("CONFIG_ENV")
|
|
if configEnv == "" {
|
|
configEnv = "prod"
|
|
}
|
|
|
|
var envConfig Config
|
|
|
|
viper.SetConfigFile("conf/server.conf." + configEnv)
|
|
viper.SetConfigType("toml")
|
|
viper.AutomaticEnv()
|
|
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
|
viper.SetEnvPrefix("conf")
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
panic(err)
|
|
}
|
|
if err := viper.Unmarshal(&envConfig, func(decoderConfig *mapstructure.DecoderConfig) {
|
|
decoderConfig.TagName = "toml"
|
|
}); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
config = &envConfig
|
|
log.Infof("load real config[%s] ", goutil.EncodeJSONIndent(config))
|
|
}
|