config.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package configs
  2. import (
  3. "crypto/rsa"
  4. "fmt"
  5. "github.com/go-redis/redis/v8"
  6. _ "github.com/go-sql-driver/mysql"
  7. "github.com/spf13/cast"
  8. "github.com/spf13/viper"
  9. "github.com/wechatpay-apiv3/wechatpay-go/utils"
  10. "log"
  11. "os"
  12. "xorm.io/xorm"
  13. )
  14. var (
  15. Config *viper.Viper
  16. Engine *xorm.Engine
  17. RedisDb *redis.Client
  18. WxPay WxPayConfig
  19. )
  20. func ConfigInit() {
  21. //获取项目的执行路径
  22. path, err := os.Getwd()
  23. if err != nil {
  24. panic(err)
  25. }
  26. config := viper.New()
  27. config.AddConfigPath(path + "/configs") //设置读取的文件路径
  28. config.SetConfigName("config") //设置读取的文件名
  29. config.SetConfigType("yaml") //设置文件的类型
  30. //尝试进行配置读取
  31. if err := config.ReadInConfig(); err != nil {
  32. panic(err)
  33. }
  34. 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")))
  35. 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")))
  36. Engine.Ping() //连接测试
  37. //TODO 显示sql
  38. Engine.ShowSQL(true)
  39. Engine.Logger().ShowSQL(true)
  40. RedisDb = redis.NewClient(&redis.Options{
  41. Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址
  42. Password: "", // Redis密码,如果没有则为空字符串
  43. DB: 0, // 使用默认DB
  44. })
  45. //开启debug模式
  46. Config = config
  47. fmt.Println("xorm 数据库orm框架初始化成功")
  48. //PayConfigInit()
  49. }
  50. func ConfigInitByUrl(configUrl string) {
  51. //获取项目的执行路径
  52. config := viper.New()
  53. config.AddConfigPath(configUrl + "\\configs") //设置读取的文件路径
  54. config.SetConfigName("config") //设置读取的文件名
  55. config.SetConfigType("yaml") //设置文件的类型
  56. //尝试进行配置读取
  57. if err := config.ReadInConfig(); err != nil {
  58. panic(err)
  59. }
  60. 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")))
  61. 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")))
  62. Engine.Ping() //连接测试
  63. //TODO 显示sql
  64. Engine.ShowSQL(true)
  65. Engine.Logger().ShowSQL(true)
  66. RedisDb = redis.NewClient(&redis.Options{
  67. Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址
  68. Password: "", // Redis密码,如果没有则为空字符串
  69. DB: 0, // 使用默认DB
  70. })
  71. Config = config
  72. fmt.Println("xorm 数据库orm框架初始化成功")
  73. }
  74. type WxPayConfig struct {
  75. MchID string
  76. MchCertificateSerialNumber string
  77. MchAPIv3Key string
  78. PrivateKey *rsa.PrivateKey
  79. }
  80. func (w WxPayConfig) String() string {
  81. return fmt.Sprintf("MchID:%s, MchCertificateSerialNumber:%s, MchAPIv3Key:%s",
  82. w.MchID, w.MchCertificateSerialNumber, w.MchAPIv3Key)
  83. }
  84. // PayConfigInit 微信支付配置
  85. func PayConfigInit() {
  86. WxPay.MchID = cast.ToString(Config.Get("pay.wx.mchID"))
  87. WxPay.MchCertificateSerialNumber = cast.ToString(Config.Get("pay.wx.mchCertificateSerialNumber"))
  88. WxPay.MchAPIv3Key = cast.ToString(Config.Get("pay.wx.mchAPIv3Key"))
  89. var err error
  90. WxPay.PrivateKey, err = utils.LoadPrivateKeyWithPath(cast.ToString(Config.Get("pay.wx.mchPrivateKeyPath")))
  91. if err != nil {
  92. //load merchant private key error =>加载商户私钥错误
  93. log.Fatal("load merchant private key error")
  94. }
  95. fmt.Println("wx_pay 微信支付配置初始化成功")
  96. }