config.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. //type User struct {
  21. // Id int64 `xorm:"'id'" json:"id"`
  22. // Username string `xorm:"'username'" json:"username"`
  23. // Password string `xorm:"'password'" json:"password"`
  24. // Creation_time int `xorm:"'creation_time'" json:"creation_Time"`
  25. // Login_time int `xorm:"'login_time'" json:"login_Time"`
  26. // Status int `xorm:"'status'" json:"status"`
  27. // Role_id int `xorm:"'role_id'" json:"role_id"`
  28. // Phone string `xorm:"'phone'" json:"phone"`
  29. // Email string `xorm:"'email'" json:"email"`
  30. // Name string `xorm:"'name'" json:"name"`
  31. // Avatar string `xorm:"'avatar'" json:"avatar"`
  32. // RecommendCode string `xorm:"'recommend_code'" json:"recommend_code"`
  33. //}
  34. //
  35. //func (receiver User) String() string {
  36. // return fmt.Sprintf("User{Id:%d, Username:%s, Password:%s, Creation_time:%d, Login_time:%d, Status:%d, Role_id:%d, Phone:%s, Email:%s, Name:%s, Avatar:%s, RecommendCode:%s}", receiver.Id, receiver.Username, receiver.Password, receiver.Creation_time, receiver.Login_time, receiver.Status, receiver.Role_id, receiver.Phone, receiver.Email, receiver.Name, receiver.Avatar, receiver.RecommendCode)
  37. //}
  38. //
  39. //type Role struct {
  40. // Id int `xorm:"'id'" json:"id"`
  41. // Role_name string `xorm:"'role_name'" json:"role_Name"`
  42. //}
  43. //type Role_authority struct {
  44. // Authority_id int `xorm:"'authority_id'" json:"authority_id"`
  45. // Role_id int `xorm:"'role_id'" json:"role_id"`
  46. //}
  47. //type Authority struct {
  48. // Id int `xorm:"'id'" json:"id"`
  49. // Authority_name string `xorm:"'authority_name'" json:"authority_Name"`
  50. // Authority_path string `xorm:"'authority_path'" json:"authority_Path"`
  51. //}
  52. //
  53. //type MysqlData struct {
  54. // User `xorm:"extends"`
  55. // Role `xorm:"extends"`
  56. // Role_authority `xorm:"extends"`
  57. // Authority `xorm:"extends"`
  58. //}
  59. func ConfigInit() {
  60. //获取项目的执行路径
  61. path, err := os.Getwd()
  62. if err != nil {
  63. panic(err)
  64. }
  65. config := viper.New()
  66. config.AddConfigPath(path + "/configs") //设置读取的文件路径
  67. config.SetConfigName("config") //设置读取的文件名
  68. config.SetConfigType("yaml") //设置文件的类型
  69. //尝试进行配置读取
  70. if err := config.ReadInConfig(); err != nil {
  71. panic(err)
  72. }
  73. 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")))
  74. 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")))
  75. Engine.Ping() //连接测试
  76. //TODO 显示sql
  77. Engine.ShowSQL(true)
  78. Engine.Logger().ShowSQL(true)
  79. RedisDb = redis.NewClient(&redis.Options{
  80. Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址
  81. Password: "", // Redis密码,如果没有则为空字符串
  82. DB: 0, // 使用默认DB
  83. })
  84. //开启debug模式
  85. Config = config
  86. fmt.Println("xorm 数据库orm框架初始化成功")
  87. PayConfigInit()
  88. }
  89. func ConfigInitByUrl(configUrl string) {
  90. //获取项目的执行路径
  91. config := viper.New()
  92. config.AddConfigPath(configUrl + "\\configs") //设置读取的文件路径
  93. config.SetConfigName("config") //设置读取的文件名
  94. config.SetConfigType("yaml") //设置文件的类型
  95. //尝试进行配置读取
  96. if err := config.ReadInConfig(); err != nil {
  97. panic(err)
  98. }
  99. 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")))
  100. 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")))
  101. Engine.Ping() //连接测试
  102. //TODO 显示sql
  103. Engine.ShowSQL(true)
  104. Engine.Logger().ShowSQL(true)
  105. RedisDb = redis.NewClient(&redis.Options{
  106. Addr: fmt.Sprintf("%s:%s", config.Get("redis.host"), config.Get("redis.port")), // Redis地址
  107. Password: "", // Redis密码,如果没有则为空字符串
  108. DB: 0, // 使用默认DB
  109. })
  110. Config = config
  111. fmt.Println("xorm 数据库orm框架初始化成功")
  112. }
  113. type WxPayConfig struct {
  114. MchID string
  115. MchCertificateSerialNumber string
  116. MchAPIv3Key string
  117. PrivateKey *rsa.PrivateKey
  118. }
  119. func (w WxPayConfig) String() string {
  120. return fmt.Sprintf("MchID:%s, MchCertificateSerialNumber:%s, MchAPIv3Key:%s",
  121. w.MchID, w.MchCertificateSerialNumber, w.MchAPIv3Key)
  122. }
  123. // PayConfigInit 微信支付配置
  124. func PayConfigInit() {
  125. WxPay.MchID = cast.ToString(Config.Get("pay.wx.mchID"))
  126. WxPay.MchCertificateSerialNumber = cast.ToString(Config.Get("pay.wx.mchCertificateSerialNumber"))
  127. WxPay.MchAPIv3Key = cast.ToString(Config.Get("pay.wx.mchAPIv3Key"))
  128. var err error
  129. WxPay.PrivateKey, err = utils.LoadPrivateKeyWithPath(cast.ToString(Config.Get("pay.wx.mchPrivateKeyPath")))
  130. if err != nil {
  131. //load merchant private key error =>加载商户私钥错误
  132. log.Fatal("load merchant private key error")
  133. }
  134. fmt.Println("wx_pay 微信支付配置初始化成功")
  135. }