diff --git a/eventSubscribe.go b/eventSubscribe.go index 3a4acf6..7e396f4 100644 --- a/eventSubscribe.go +++ b/eventSubscribe.go @@ -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) + +}