diff --git a/eventSubscribe.go b/eventSubscribe.go index 9261c94..7006e7a 100644 --- a/eventSubscribe.go +++ b/eventSubscribe.go @@ -2,7 +2,6 @@ package main import ( "encoding/json" - "errors" "fmt" "io/ioutil" "log" @@ -22,12 +21,13 @@ func onSubscribe(in InWechatMsg) { //existing user if found { + crmLeadSetStatusNew(info.ID) sendGreeting4ExistingUser(in, info) } else { //new user //get user info from wechat info := WechatUserInfo{} info.getUserInfo(openID, "zh_CN") - info.registerNewLeadWithInfo(in) + info.registerNewLeadWithInfo(in.header.FromUserName) in.askUserFillupBasicInfo() } //some error happened @@ -100,12 +100,7 @@ func sendGreeting4ExistingUser(in InWechatMsg, info crmdLead) { } -func (m *WechatUserInfo) registerNewLeadWithInfo(in InWechatMsg) (newuser crmdLead, err error) { - if in.header.FromUserName == "" { - log.Println("Error: trying to register user without OpenID") - err = errors.New("registerNewLeadWithInfo: no user OpenID") - return - } +func (m *WechatUserInfo) registerNewLeadWithInfo(openID string) (newuser crmdLead, err error) { u := crmdLead{} u.FirstName = "\u0020" //a visible space @@ -115,8 +110,9 @@ func (m *WechatUserInfo) registerNewLeadWithInfo(in InWechatMsg) (newuser crmdLe u.LastName = m.NickName } u.Password = "password" - u.WechatHitxyID = in.header.FromUserName + u.WechatHitxyID = openID u.Status = "New" + u.AvatarID, _ = m.uploadAvatar() data, _ := json.Marshal(u) entity, err := crmCreateEntity("Lead", data) @@ -126,6 +122,19 @@ func (m *WechatUserInfo) registerNewLeadWithInfo(in InWechatMsg) (newuser crmdLe return } +func (m *WechatUserInfo) uploadAvatar() (avatarID string, err error) { + tmpfile, _, err := saveURL(m.Avatar) + if err != nil { + return + } + attach, err := crmCreateAttachment(tmpfile) + if err != nil { + return + } + avatarID = attach.ID + return +} + //when user left func onUnSubscribe(in InWechatMsg) { info, found, err := crmFindLeadByOpenID(in.header.FromUserName) diff --git a/eventSubscribe_test.go b/eventSubscribe_test.go index b455834..8d7aeec 100644 --- a/eventSubscribe_test.go +++ b/eventSubscribe_test.go @@ -75,7 +75,7 @@ func TestRegisterNewUser(t *testing.T) { in.header.FromUserName = "abc" s := WechatUserInfo{} json.Unmarshal([]byte(msg), &s) - newuser, err := s.registerNewLeadWithInfo(in) + newuser, err := s.registerNewLeadWithInfo(in.header.FromUserName) AssertEqual(t, err, nil, "should be successfully added new user") AssertEqual(t, newuser.WechatHitxyID, in.header.FromUserName, "wechatOpenID mismatch") log.Printf("created temp Lead %s ", newuser.ID)