| @@ -6,14 +6,39 @@ import ( | |||
| "io/ioutil" | |||
| "log" | |||
| "net/http" | |||
| "time" | |||
| ) | |||
| func onSubscribe(in InWechatMsg) { | |||
| openID := in.header.FromUserName | |||
| //getUser fromCRM | |||
| info := WechatUserInfo{} | |||
| info.getUserInfo(in.header.FromUserName, "zh-CN") | |||
| log.Println(openID + " information get above onSubscribe") | |||
| //check whether we have his own record in the CRM system | |||
| info, found, err := crmFindOpenID("weid") | |||
| log.Println(info) | |||
| //existing user | |||
| if found && err == nil { | |||
| sendGreeting4ExistingUser(in, info) | |||
| return | |||
| } | |||
| //new user | |||
| if !found && err == nil { //something is seriously wrong | |||
| //get user info from wechat | |||
| info := WechatUserInfo{} | |||
| err := info.getUserInfo(openID, "zh_CN") | |||
| if err != nil { | |||
| log.Printf("ERROR: failed to get userinfo [%s] ", openID) | |||
| log.Println(err) | |||
| //registerNewUser(openID) | |||
| } else { | |||
| //registerNewUserWithInfo(openID, info) | |||
| } | |||
| //AskUserFillupBasicInfo() | |||
| } | |||
| //some error | |||
| if err != nil { | |||
| } | |||
| } | |||
| //WechatUserInfo response for wechat user info. | |||
| @@ -34,17 +59,24 @@ type WechatUserInfo struct { | |||
| TagIDList []int32 `json:"tagid_list"` | |||
| } | |||
| func (m *WechatUserInfo) getUserInfo(openID string, lang string) { | |||
| func (m *WechatUserInfo) getUserInfo(openID string, lang string) (err error) { | |||
| url := m.getURL(openID, lang) | |||
| resp, err := http.Get(url) | |||
| if err != nil { | |||
| *m = WechatUserInfo{} | |||
| return err | |||
| } | |||
| b, err := ioutil.ReadAll(resp.Body) | |||
| err = json.Unmarshal(b, m) | |||
| log.Println(m) | |||
| return nil | |||
| } | |||
| //lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语 | |||
| func (m *WechatUserInfo) getURL(openID, lang string) string { | |||
| if lang != "zh_CN" && lang != "zh_TW" && lang != "en" { | |||
| log.Printf("WechatUserInfo/getURL: Unknow Lang %s, change to zh_CN", lang) | |||
| lang = "zh_CN" | |||
| } | |||
| atk, _ := GetAccessToken() | |||
| u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s", atk, openID, lang) | |||
| return u | |||
| @@ -53,3 +85,23 @@ func (m *WechatUserInfo) getURL(openID, lang string) string { | |||
| func (m *WechatUserInfo) save2CRM() { | |||
| } | |||
| func askUserFillupBasicInfo(in InWechatMsg) { | |||
| first := "欢迎加入海外学子之家,这里凝聚着哈工大人在澳洲的,勤奋,努力和奋斗" | |||
| url := "http://wechat.hitxy.org.au/profile_newly_register" | |||
| remark := "如果您是首次加入本社区,请点击详情完善您的个人资料" | |||
| communityName := "哈工大澳洲校友会" | |||
| joinDate := time.Now().Format("2006-Jan-02") | |||
| templateSendJoinCommunity(in.header.FromUserName, url, first, remark, communityName, joinDate) | |||
| } | |||
| func sendGreeting4ExistingUser(in InWechatMsg, info crmLeadInfo) { | |||
| first := "欢迎" + info.Name + "返回澳洲校友会" | |||
| url := "http://wechat.hitxy.org.au/profile_newly_register" | |||
| remark := "" | |||
| communityName := "哈工大澳洲校友会" | |||
| joinDate := info.getCreatedAt().Format("2006-Jan-02") | |||
| templateSendJoinCommunity(in.header.FromUserName, url, first, remark, communityName, joinDate) | |||
| } | |||