123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package utils
  2. import (
  3. "github.com/zjxpcyc/wechat/mini"
  4. "github.com/zjxpcyc/wechat/wx"
  5. )
  6. var wxClients map[string]*wx.Client
  7. var miniClients map[string]*mini.Client
  8. type WechatUser struct {
  9. OpenID string `json:"openid"`
  10. NickName string `json:"nickname"`
  11. Sex float64 `json:"sex"`
  12. Province string `json:"province"`
  13. City string `json:"city"`
  14. Country string `json:"country"`
  15. HeadImgURL string `json:"headimgurl"`
  16. UnionID string `json:"unionid"`
  17. }
  18. // WxClientSingleton 初始化
  19. func WxClientSingleton(org string, cert map[string]string) {
  20. if wxClients == nil {
  21. wxClients = map[string]*wx.Client{
  22. org: wx.NewClient(cert),
  23. }
  24. } else {
  25. if _, ok := wxClients[org]; !ok {
  26. wxClients[org] = wx.NewClient(cert)
  27. }
  28. }
  29. }
  30. // MiniClientSingleton 初始化
  31. func MiniClientSingleton(org string, cert map[string]string) {
  32. if miniClients == nil {
  33. miniClients = map[string]*mini.Client{
  34. org: mini.NewClient(cert),
  35. }
  36. } else {
  37. if _, ok := miniClients[org]; !ok {
  38. miniClients[org] = mini.NewClient(cert)
  39. }
  40. }
  41. }
  42. // WxClientFor 微信客户端
  43. func WxClientFor(org string) *wx.Client {
  44. return wxClients[org]
  45. }
  46. // MiniClientFor 小程序客户端
  47. func MiniClientFor(org string) *mini.Client {
  48. return miniClients[org]
  49. }
  50. // GetWxAppID 获取微信ID
  51. func GetWxAppID(org string) string {
  52. return wxClients[org].GetAppID()
  53. }
  54. func WechatInit() {
  55. logger := GetDefaultLogger()
  56. wx.SetLogInst(logger)
  57. mini.SetLogInst(logger)
  58. }
  59. // MapToWechatUser 映射微信人员
  60. func MapToWechatUser(data map[string]interface{}) *WechatUser {
  61. subscribe, has := data["subscribe"]
  62. if has {
  63. if subscribe == nil {
  64. return nil
  65. }
  66. sub := subscribe.(float64)
  67. if sub == 0 {
  68. return nil
  69. }
  70. }
  71. user := WechatUser{
  72. OpenID: data["openid"].(string),
  73. }
  74. if data["sex"] != nil {
  75. user.Sex = data["sex"].(float64)
  76. }
  77. if data["nickname"] != nil {
  78. user.NickName = data["nickname"].(string)
  79. }
  80. if data["province"] != nil {
  81. user.Province = data["province"].(string)
  82. }
  83. if data["city"] != nil {
  84. user.City = data["city"].(string)
  85. }
  86. if data["country"] != nil {
  87. user.Country = data["country"].(string)
  88. }
  89. if data["headimgurl"] != nil {
  90. user.HeadImgURL = data["headimgurl"].(string)
  91. }
  92. if data["unionid"] != nil {
  93. user.UnionID = data["unionid"].(string)
  94. }
  95. return &user
  96. }