|
|
|
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
import ( |
|
|
"encoding/json" |
|
|
"encoding/json" |
|
|
"errors" |
|
|
|
|
|
"fmt" |
|
|
"fmt" |
|
|
"io/ioutil" |
|
|
"io/ioutil" |
|
|
"log" |
|
|
"log" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//existing user |
|
|
//existing user |
|
|
if found { |
|
|
if found { |
|
|
|
|
|
crmLeadSetStatusNew(info.ID) |
|
|
sendGreeting4ExistingUser(in, info) |
|
|
sendGreeting4ExistingUser(in, info) |
|
|
} else { //new user |
|
|
} else { //new user |
|
|
//get user info from wechat |
|
|
//get user info from wechat |
|
|
info := WechatUserInfo{} |
|
|
info := WechatUserInfo{} |
|
|
info.getUserInfo(openID, "zh_CN") |
|
|
info.getUserInfo(openID, "zh_CN") |
|
|
info.registerNewLeadWithInfo(in) |
|
|
|
|
|
|
|
|
info.registerNewLeadWithInfo(in.header.FromUserName) |
|
|
in.askUserFillupBasicInfo() |
|
|
in.askUserFillupBasicInfo() |
|
|
} |
|
|
} |
|
|
//some error happened |
|
|
//some error happened |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
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 := crmdLead{} |
|
|
u.FirstName = "\u0020" //a visible space |
|
|
u.FirstName = "\u0020" //a visible space |
|
|
|
|
|
|
|
|
u.LastName = m.NickName |
|
|
u.LastName = m.NickName |
|
|
} |
|
|
} |
|
|
u.Password = "password" |
|
|
u.Password = "password" |
|
|
u.WechatHitxyID = in.header.FromUserName |
|
|
|
|
|
|
|
|
u.WechatHitxyID = openID |
|
|
u.Status = "New" |
|
|
u.Status = "New" |
|
|
|
|
|
u.AvatarID, _ = m.uploadAvatar() |
|
|
|
|
|
|
|
|
data, _ := json.Marshal(u) |
|
|
data, _ := json.Marshal(u) |
|
|
entity, err := crmCreateEntity("Lead", data) |
|
|
entity, err := crmCreateEntity("Lead", data) |
|
|
|
|
|
|
|
|
return |
|
|
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 |
|
|
//when user left |
|
|
func onUnSubscribe(in InWechatMsg) { |
|
|
func onUnSubscribe(in InWechatMsg) { |
|
|
info, found, err := crmFindLeadByOpenID(in.header.FromUserName) |
|
|
info, found, err := crmFindLeadByOpenID(in.header.FromUserName) |