package configs import ( "crypto/rsa" "fmt" "github.com/go-redis/redis/v8" _ "github.com/go-sql-driver/mysql" "github.com/spf13/cast" "github.com/spf13/viper" "github.com/wechatpay-apiv3/wechatpay-go/utils" "log" "os" "xorm.io/xorm" ) var ( Config *viper.Viper Engine *xorm.Engine RedisDb *redis.Client WxPay WxPayConfig ) func ConfigInit() { //获取项目的执行路径 path, err := os.Getwd() if err != nil { panic(err) } config := viper.New() config.AddConfigPath(path + "/configs") //设置读取的文件路径 config.SetConfigName("config") //设置读取的文件名 config.SetConfigType("yaml") //设置文件的类型 //尝试进行配置读取 if err := config.ReadInConfig(); err != nil { panic(err) } fmt.Println(fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database"))) Engine, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database"))) Engine.Ping() //连接测试 //TODO 显示sql Engine.ShowSQL(true) Engine.Logger().ShowSQL(true) RedisDb = redis.NewClient(&redis.Options{ Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址 Password: "", // Redis密码,如果没有则为空字符串 DB: 0, // 使用默认DB }) //开启debug模式 Config = config fmt.Println("xorm 数据库orm框架初始化成功") //PayConfigInit() } func ConfigInitByUrl(configUrl string) { //获取项目的执行路径 config := viper.New() config.AddConfigPath(configUrl + "\\configs") //设置读取的文件路径 config.SetConfigName("config") //设置读取的文件名 config.SetConfigType("yaml") //设置文件的类型 //尝试进行配置读取 if err := config.ReadInConfig(); err != nil { panic(err) } fmt.Println(fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database"))) Engine, _ := xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8", config.Get("mysql.user"), config.Get("mysql.password"), config.Get("mysql.host"), config.Get("mysql.port"), config.Get("mysql.database"))) Engine.Ping() //连接测试 //TODO 显示sql Engine.ShowSQL(true) Engine.Logger().ShowSQL(true) RedisDb = redis.NewClient(&redis.Options{ Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址 Password: "", // Redis密码,如果没有则为空字符串 DB: 0, // 使用默认DB }) Config = config fmt.Println("xorm 数据库orm框架初始化成功") } type WxPayConfig struct { MchID string MchCertificateSerialNumber string MchAPIv3Key string PrivateKey *rsa.PrivateKey } func (w WxPayConfig) String() string { return fmt.Sprintf("MchID:%s, MchCertificateSerialNumber:%s, MchAPIv3Key:%s", w.MchID, w.MchCertificateSerialNumber, w.MchAPIv3Key) } // PayConfigInit 微信支付配置 func PayConfigInit() { WxPay.MchID = cast.ToString(Config.Get("pay.wx.mchID")) WxPay.MchCertificateSerialNumber = cast.ToString(Config.Get("pay.wx.mchCertificateSerialNumber")) WxPay.MchAPIv3Key = cast.ToString(Config.Get("pay.wx.mchAPIv3Key")) var err error WxPay.PrivateKey, err = utils.LoadPrivateKeyWithPath(cast.ToString(Config.Get("pay.wx.mchPrivateKeyPath"))) if err != nil { //load merchant private key error =>加载商户私钥错误 log.Fatal("load merchant private key error") } fmt.Println("wx_pay 微信支付配置初始化成功") }