140 lines
3.4 KiB
Go
140 lines
3.4 KiB
Go
package config
|
||
|
||
import (
|
||
"github.com/BurntSushi/toml"
|
||
"github.com/qit-team/snow-core/config"
|
||
"os"
|
||
)
|
||
|
||
const (
|
||
ProdEnv = "production" //线上环境
|
||
BetaEnv = "beta" //beta环境
|
||
DevEnv = "develop" //开发环境
|
||
LocalEnv = "local" //本地环境
|
||
)
|
||
|
||
var srvConf *Config
|
||
|
||
// ------------------------配置文件解析
|
||
type Config struct {
|
||
ServiceName string `toml:"ServiceName"`
|
||
Env string `toml:"Env"`
|
||
Debug bool `toml:"Debug"`
|
||
PrometheusCollectEnable bool `toml:"PrometheusCollectEnable"`
|
||
SkyWalkingOapServer string `toml:"SkyWalkingOapServer"`
|
||
Log config.LogConfig `toml:"Log"`
|
||
Redis config.RedisConfig `toml:"Redis"`
|
||
Mns config.MnsConfig `toml:"AliMns"`
|
||
Db config.DbConfig `toml:"Db"`
|
||
Api config.ApiConfig `toml:"Api"`
|
||
Admin config.ApiConfig `toml:"Admin"`
|
||
Nacos Nacos `toml:"Nacas"`
|
||
Rpc Rpc `toml:"Rpc"`
|
||
AppKey string `toml:"AppKey"`
|
||
Sm2 Sm2 `toml:"Sm2"`
|
||
OpenApiMarketConfig MarketConfig `toml:"MarketConfig"`
|
||
OpenApi OpenApi `toml:"OpenApi"`
|
||
Jwt Jwt `toml:"Jwt"`
|
||
AliOss AliOss `toml:"AliOss"`
|
||
YouChu YouChuConfig `toml:"YouChu"`
|
||
}
|
||
|
||
type YouChuConfig struct {
|
||
LoginHost string //登录地址
|
||
OrderHost string //订单地址
|
||
NotifyUrl string
|
||
MilkUrl string //奶茶专区跳转链接
|
||
VoucherUrl string //代金券链接
|
||
MerchantId string //合作方编号
|
||
MchtNo string //上单商户号
|
||
AppID string //appid
|
||
SopPublicKey string //服开公钥
|
||
SopPrivateKey string //服开私钥
|
||
}
|
||
|
||
type AliOss struct {
|
||
AccessKey string
|
||
AccessKeySecret string
|
||
EndPoint string
|
||
BucKet string
|
||
Domain string
|
||
Dir string
|
||
}
|
||
|
||
type Jwt struct {
|
||
SecretKey string
|
||
}
|
||
|
||
type OpenApi struct {
|
||
MerchantId string
|
||
SecretKey string
|
||
IsProd bool
|
||
NotifyUrl string
|
||
TimeOut int
|
||
}
|
||
|
||
type MarketConfig struct {
|
||
AppId string `json:"app_id"` //APP ID
|
||
Sign string `json:"sign"` //签名
|
||
ReqCode string `json:"req_code"` //固定值:voucher.create
|
||
MemId string `json:"mem_id"` //商户号
|
||
PosId string `json:"pos_id"` //商户方平台号
|
||
Host string `json:"-"`
|
||
SecretKey string
|
||
}
|
||
|
||
type Sm2 struct {
|
||
PublicKey string
|
||
PrivateKey string
|
||
}
|
||
|
||
type Rpc struct {
|
||
User string
|
||
}
|
||
type Nacos struct {
|
||
Url string
|
||
Port int64
|
||
}
|
||
|
||
func newConfig() *Config {
|
||
return new(Config)
|
||
}
|
||
|
||
// ------------------------ 加载配置 ------------------------//
|
||
func Load(path string) (*Config, error) {
|
||
_, err := os.Stat(path)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
conf := newConfig()
|
||
if _, err := toml.DecodeFile(path, conf); err != nil {
|
||
return nil, err
|
||
}
|
||
srvConf = conf
|
||
return conf, nil
|
||
}
|
||
|
||
// 当前配置
|
||
func GetConf() *Config {
|
||
return srvConf
|
||
}
|
||
|
||
// 是否调试模式
|
||
func IsDebug() bool {
|
||
return srvConf.Debug
|
||
}
|
||
|
||
// 当前环境,默认本地开发
|
||
func GetEnv() string {
|
||
if srvConf.Env == "" {
|
||
return LocalEnv
|
||
}
|
||
return srvConf.Env
|
||
}
|
||
|
||
// 是否当前环境
|
||
func IsEnvEqual(env string) bool {
|
||
return GetEnv() == env
|
||
}
|