Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

108 lines
3.1KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "net/http"
  8. "time"
  9. )
  10. func onSubscribe(in InWechatMsg) {
  11. openID := in.header.FromUserName
  12. //check whether we have his own record in the CRM system
  13. info, found, err := crmFindOpenID("weid")
  14. log.Println(info)
  15. //existing user
  16. if found && err == nil {
  17. sendGreeting4ExistingUser(in, info)
  18. return
  19. }
  20. //new user
  21. if !found && err == nil { //something is seriously wrong
  22. //get user info from wechat
  23. info := WechatUserInfo{}
  24. err := info.getUserInfo(openID, "zh_CN")
  25. if err != nil {
  26. log.Printf("ERROR: failed to get userinfo [%s] ", openID)
  27. log.Println(err)
  28. //registerNewUser(openID)
  29. } else {
  30. //registerNewUserWithInfo(openID, info)
  31. }
  32. //AskUserFillupBasicInfo()
  33. }
  34. //some error
  35. if err != nil {
  36. }
  37. }
  38. //WechatUserInfo response for wechat user info.
  39. type WechatUserInfo struct {
  40. Subscribe int32 `json:"subscribe"`
  41. OpenID string `json:"openid"`
  42. NickName string `json:"nickname"`
  43. Sex int32 `json:"sex"` //0 未知 1 男 2 女
  44. Language string `json:"language"`
  45. City string `json:"city"`
  46. Province string `json:"province"`
  47. Country string `json:"country"`
  48. Avatar string `json:"headimgurl"`
  49. SubscribeTime int32 `json:"subscribe_time"`
  50. UnionID string `json:"unionid"`
  51. Remark string `json:"remark"`
  52. GroupID int32 `json:"groupid"`
  53. TagIDList []int32 `json:"tagid_list"`
  54. }
  55. func (m *WechatUserInfo) getUserInfo(openID string, lang string) (err error) {
  56. url := m.getURL(openID, lang)
  57. resp, err := http.Get(url)
  58. if err != nil {
  59. *m = WechatUserInfo{}
  60. return err
  61. }
  62. b, err := ioutil.ReadAll(resp.Body)
  63. err = json.Unmarshal(b, m)
  64. return nil
  65. }
  66. //lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
  67. func (m *WechatUserInfo) getURL(openID, lang string) string {
  68. if lang != "zh_CN" && lang != "zh_TW" && lang != "en" {
  69. log.Printf("WechatUserInfo/getURL: Unknow Lang %s, change to zh_CN", lang)
  70. lang = "zh_CN"
  71. }
  72. atk, _ := GetAccessToken()
  73. u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s", atk, openID, lang)
  74. return u
  75. }
  76. func (m *WechatUserInfo) save2CRM() {
  77. }
  78. func askUserFillupBasicInfo(in InWechatMsg) {
  79. first := "欢迎加入海外学子之家,这里凝聚着哈工大人在澳洲的,勤奋,努力和奋斗"
  80. url := "http://wechat.hitxy.org.au/profile_newly_register"
  81. remark := "如果您是首次加入本社区,请点击详情完善您的个人资料"
  82. communityName := "哈工大澳洲校友会"
  83. joinDate := time.Now().Format("2006-Jan-02")
  84. templateSendJoinCommunity(in.header.FromUserName, url, first, remark, communityName, joinDate)
  85. }
  86. func sendGreeting4ExistingUser(in InWechatMsg, info crmLeadInfo) {
  87. first := "欢迎" + info.Name + "返回澳洲校友会"
  88. url := "http://wechat.hitxy.org.au/profile_newly_register"
  89. remark := ""
  90. communityName := "哈工大澳洲校友会"
  91. joinDate := info.getCreatedAt().Format("2006-Jan-02")
  92. templateSendJoinCommunity(in.header.FromUserName, url, first, remark, communityName, joinDate)
  93. }