package config import ( "net" "git.apinb.com/bsm-sdk/core/conf" "git.apinb.com/bsm-sdk/core/crypto/encipher" "git.apinb.com/bsm-sdk/core/env" ) var ( Spec SrvConfig // 全局配置实例 ) // SrvConfig 服务配置结构体 type SrvConfig struct { conf.Base `yaml:",inline"` // 基础配置 Databases *conf.DBConf `yaml:"Databases"` // 数据库配置 MicroService *conf.MicroServiceConf `yaml:"MicroService"` // 微服务配置 Rpc map[string]conf.RpcConf `yaml:"Rpc"` // RPC配置 Gateway *conf.GatewayConf `yaml:"Gateway"` // 网关配置 Apm *conf.ApmConf `yaml:"APM"` // APM监控配置 Etcd *conf.EtcdConf `yaml:"Etcd"` // Etcd配置 WeChat *WeChatConf `yaml:"WeChat"` // 微信支付配置 Alipay *AlipayConf `yaml:"Alipay"` // 支付宝配置 Wallet *WalletConfig `yaml:"Wallet"` // 钱包配置 QrCodeSavePath string `yaml:"QrCodeSavePath"` // 二维码保存路径 } // WeChatConf 微信支付配置 type WeChatConf struct { AppID string `yaml:"AppID"` // 微信应用ID AppSecret string `yaml:"AppSecret"` // 微信应用密钥 SerialNo string `yaml:"SerialNo"` // 证书序列号 APIV3Key string `yaml:"APIV3Key"` // APIv3密钥 PrivateKey string `yaml:"PrivateKey"` // 私钥 NotifyURL string `yaml:"NotifyURL"` // 回调通知地址 Currency string `yaml:"Currency"` // 货币类型 MchID string `yaml:"MchID"` // 商户号 SubMchID string `yaml:"SubMchID"` // 子商户号 OpenID string `yaml:"OpenID"` // 用户OpenID } // AlipayConf 支付宝配置 type AlipayConf struct { AppID string `yaml:"AppID"` // 支付宝应用ID AppSecret string `yaml:"AppSecret"` // 应用密钥 PrivateKey string `yaml:"PrivateKey"` // 应用私钥 IsProd bool `yaml:"IsProd"` // 是否生产环境 NotifyURL string `yaml:"NotifyURL"` // 异步通知地址 ReturnURL string `yaml:"ReturnURL"` // 同步跳转地址 QuitURL string `yaml:"QuitURL"` // 退出地址 PublicKeyRsa2Byte string `yaml:"PublicKeyRsa2Byte"` // 支付宝公钥 CertPublicKey string `yaml:"CertPublicKey"` // 应用公钥证书 CertRoot string `yaml:"CertRoot"` // 根证书 CertPublicKeyRsa2 string `yaml:"CertPublicKeyRsa2"` // 应用公钥证书RSA2 } // WalletConfig 钱包配置 type WalletConfig struct { Name string `yaml:"Name"` // 钱包名称 URL string `yaml:"URL"` // 钱包URL PublicKey string `yaml:"PublicKey"` // 公钥 YMDHMS string `yaml:"YMDHMS"` // 时间格式 YMD string `yaml:"YMD"` // 日期格式 AlipyIsOpen bool `yaml:"AlipyIsOpen"` // 支付宝是否开启 WalletIsOpen bool `yaml:"WalletIsOpen"` // 钱包是否开启 WechatpayIsOpen bool `yaml:"WechatpayIsOpen"` // 微信支付是否开启 } // New 初始化配置 func New(srvKey string) { // 初始化配置,创建一个新的配置实例 conf.New(srvKey, &Spec) // 配置校验:服务IP和端口 Spec.Port = conf.CheckPort(Spec.Port) Spec.BindIP = conf.CheckIP(Spec.BindIP) Spec.Addr = net.JoinHostPort(Spec.BindIP, Spec.Port) // 配置校验 服务名称地址及监听地址不能为空 conf.NotNil(Spec.Service, Spec.Cache) // 初始化加密SecretKey encipher.New(env.Runtime.JwtSecretKey) conf.PrintInfo(Spec.Addr) }