| "io/ioutil" | "io/ioutil" | ||||
| "log" | "log" | ||||
| "net/http" | "net/http" | ||||
| "time" | |||||
| ) | ) | ||||
| func onSubscribe(in InWechatMsg) { | func onSubscribe(in InWechatMsg) { | ||||
| openID := in.header.FromUserName | 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. | //WechatUserInfo response for wechat user info. | ||||
| TagIDList []int32 `json:"tagid_list"` | 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) | url := m.getURL(openID, lang) | ||||
| resp, err := http.Get(url) | resp, err := http.Get(url) | ||||
| if err != nil { | if err != nil { | ||||
| *m = WechatUserInfo{} | |||||
| return err | |||||
| } | } | ||||
| b, err := ioutil.ReadAll(resp.Body) | b, err := ioutil.ReadAll(resp.Body) | ||||
| err = json.Unmarshal(b, m) | err = json.Unmarshal(b, m) | ||||
| log.Println(m) | |||||
| return nil | |||||
| } | } | ||||
| //lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语 | //lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语 | ||||
| func (m *WechatUserInfo) getURL(openID, lang string) string { | 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() | atk, _ := GetAccessToken() | ||||
| u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s", atk, openID, lang) | u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s", atk, openID, lang) | ||||
| return u | return u | ||||
| func (m *WechatUserInfo) save2CRM() { | 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) | |||||
| } |