com.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package utils
  2. import (
  3. "context"
  4. "crypto/rsa"
  5. "database/sql"
  6. _ "github.com/go-sql-driver/mysql"
  7. "github.com/gorilla/websocket"
  8. "github.com/redis/go-redis/v9"
  9. "github.com/wechatpay-apiv3/wechatpay-go/services/payments/native"
  10. "log"
  11. "sync"
  12. )
  13. const (
  14. HttpOk = 200
  15. HttpAuthFail = 403
  16. HttpNotFound = 404
  17. HttpError = 500
  18. FullPatten = "QWERTYUIOPLKJHGFDSAZXCVBNM0123456789zxcvbnmlkjhgfdsaqwertyuiop-_"
  19. NumberPatten = "0123456789"
  20. AlphaPatten = "QWERTYUIOPLKJHGFDSAZXCVBNMzxcvbnmlkjhgfdsaqwertyuiop"
  21. AlphaNumPatten = "QWERTYUIOPLKJHGFDSAZXCVBNM0123456789zxcvbnmlkjhgfdsaqwertyuiop"
  22. UppercasePatten = "QWERTYUIOPLKJHGFDSAZXCVBNM"
  23. LowercasePatten = "zxcvbnmlkjhgfdsaqwertyuiop"
  24. RedisNil = redis.Nil
  25. )
  26. type WsMsg struct {
  27. Event string `json:"event"`
  28. Data any `json:"data"`
  29. }
  30. type Response struct {
  31. Status bool `json:"status"`
  32. Msg string `json:"msg"`
  33. Data any `json:"data"`
  34. }
  35. type JsonType = map[string]any
  36. type Config struct {
  37. Release bool `json:"release"`
  38. ServerAddr string `json:"server_addr"`
  39. ServerPrefix string `json:"server_prefix"`
  40. TimeFormat string `json:"time_format"`
  41. MysqlHost string `json:"mysql_host"`
  42. MysqlPort int `json:"mysql_port"`
  43. MysqlUser string `json:"mysql_user"`
  44. MysqlPass string `json:"mysql_pass"`
  45. MysqlDatabase string `json:"mysql_database"`
  46. RedisHost string `json:"redis_host"`
  47. RedisPort int `json:"redis_port"`
  48. RedisPass string `json:"redis_pass"`
  49. RedisDatabase int `json:"redis_database"`
  50. WxPayTitle string `json:"wx_pay_title"`
  51. WxMerchantAcc string `json:"wx_merchant_acc"`
  52. WxAppId string `json:"wx_app_id"`
  53. WxApiCertSeq string `json:"wx_api_cert_seq"`
  54. WxApiCertPath string `json:"wx_api_cert_path"`
  55. WxApiV3Key string `json:"wx_api_v3_key"`
  56. VipScanApi string `json:"vip_scan_api"`
  57. VipPayApi string `json:"vip_pay_api"`
  58. VipCallback string `json:"vip_callback"`
  59. ServerPrivate string `json:"server_private"`
  60. ServerPublic string `json:"server_public"`
  61. ClientPrivate string `json:"client_private"`
  62. ClientPublic string `json:"client_public"`
  63. }
  64. // sys
  65. var (
  66. ServerPrefix string
  67. Logger *log.Logger
  68. )
  69. // vip
  70. var (
  71. VipScanApi string
  72. VipPayApi string
  73. VipCallback string
  74. )
  75. // database
  76. var (
  77. Redis *redis.Client
  78. Mysql *sql.DB
  79. )
  80. // de-encrypt, SerPri->CliPub, CliPri->SerPub
  81. var (
  82. ClientPri string
  83. ClientPub string
  84. ServerPri *rsa.PrivateKey
  85. ServerPub *rsa.PublicKey
  86. )
  87. // wechat pay
  88. var (
  89. WxAppId string
  90. WxMchId string
  91. WxV3Key string
  92. WxTitle string
  93. WxCertSeq string
  94. WxPrivateKey *rsa.PrivateKey
  95. //WxCertPath string
  96. WxPaySrv native.NativeApiService
  97. WxPayCli context.Context
  98. //WxCrtHdr *notify.Handler
  99. )
  100. type SellerDevice struct {
  101. Online bool
  102. Conn *websocket.Conn
  103. }
  104. // websocket
  105. var (
  106. UpgradeHttp2Ws = websocket.Upgrader{
  107. ReadBufferSize: 1024,
  108. WriteBufferSize: 1024,
  109. CheckOrigin: CheckOrigin,
  110. }
  111. SellerDevices = make(map[string]*SellerDevice)
  112. SellerLock sync.Mutex
  113. ManagerWss = make(map[string]*websocket.Conn)
  114. ManagerLock sync.Mutex
  115. WorkerWss = make(map[string]*websocket.Conn)
  116. WorkerLock sync.Mutex
  117. DebugWss = make(map[string]*websocket.Conn)
  118. DebugLock sync.Mutex
  119. )