com.go 3.0 KB

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