package utils import ( "github.com/zjxpcyc/wechat/mini" "github.com/zjxpcyc/wechat/wx" ) var wxClients map[string]*wx.Client var miniClients map[string]*mini.Client type WechatUser struct { OpenID string `json:"openid"` NickName string `json:"nickname"` Sex float64 `json:"sex"` Province string `json:"province"` City string `json:"city"` Country string `json:"country"` HeadImgURL string `json:"headimgurl"` UnionID string `json:"unionid"` } // WxClientSingleton 初始化 func WxClientSingleton(org string, cert map[string]string) { if wxClients == nil { wxClients = map[string]*wx.Client{ org: wx.NewClient(cert), } } else { if _, ok := wxClients[org]; !ok { wxClients[org] = wx.NewClient(cert) } } } // MiniClientSingleton 初始化 func MiniClientSingleton(org string, cert map[string]string) { if miniClients == nil { miniClients = map[string]*mini.Client{ org: mini.NewClient(cert), } } else { if _, ok := miniClients[org]; !ok { miniClients[org] = mini.NewClient(cert) } } } // WxClientFor 微信客户端 func WxClientFor(org string) *wx.Client { return wxClients[org] } // MiniClientFor 小程序客户端 func MiniClientFor(org string) *mini.Client { return miniClients[org] } // GetWxAppID 获取微信ID func GetWxAppID(org string) string { return wxClients[org].GetAppID() } func WechatInit() { logger := GetDefaultLogger() wx.SetLogInst(logger) mini.SetLogInst(logger) } // MapToWechatUser 映射微信人员 func MapToWechatUser(data map[string]interface{}) *WechatUser { subscribe, has := data["subscribe"] if has { if subscribe == nil { return nil } sub := subscribe.(float64) if sub == 0 { return nil } } user := WechatUser{ OpenID: data["openid"].(string), } if data["sex"] != nil { user.Sex = data["sex"].(float64) } if data["nickname"] != nil { user.NickName = data["nickname"].(string) } if data["province"] != nil { user.Province = data["province"].(string) } if data["city"] != nil { user.City = data["city"].(string) } if data["country"] != nil { user.Country = data["country"].(string) } if data["headimgurl"] != nil { user.HeadImgURL = data["headimgurl"].(string) } if data["unionid"] != nil { user.UnionID = data["unionid"].(string) } return &user }