|
|
|
@@ -0,0 +1,113 @@ |
|
|
|
package main |
|
|
|
|
|
|
|
import ( |
|
|
|
"fmt" |
|
|
|
"log" |
|
|
|
"strings" |
|
|
|
) |
|
|
|
|
|
|
|
type procSearchMemberDef struct { |
|
|
|
chatProcedureID |
|
|
|
} |
|
|
|
|
|
|
|
var procSearchMember = procSearchMemberDef{} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) init(ss *openIDSessionData) { |
|
|
|
ss.Procedure = m.getID() |
|
|
|
ss.refreshExpire(600) |
|
|
|
} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) clean(ss *openIDSessionData) { |
|
|
|
ss.Procedure = "" |
|
|
|
} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) start(ss *openIDSessionData, in *InWechatMsg) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) serve(ss *openIDSessionData, in *InWechatMsg) { |
|
|
|
switch msg := in.body.(type) { |
|
|
|
case TextMsg: |
|
|
|
if m.endingCommand(ss, msg.Content) { |
|
|
|
return |
|
|
|
} |
|
|
|
str, _ := BuildTextMsg(ss.OpenID, "搜索 "+msg.Content+"... ...") |
|
|
|
in.replyXML(str) |
|
|
|
m.displayUserInfo(ss, msg.Content) |
|
|
|
case PicMsg: |
|
|
|
//str := buildPicMsg(ss.OpenID, msg.MediaId) |
|
|
|
xml, _ := BuildKFTransferAnyOneMsg(ss.OpenID) |
|
|
|
in.replyXML(xml) |
|
|
|
kfSendPicByMediaID(ss.OpenID, msg.MediaId) |
|
|
|
kfSendTxt(ss.OpenID, "已转接校友会理事会,稍后答复您") |
|
|
|
case VoiceMsg: |
|
|
|
name := strings.TrimSuffix(msg.Recognition, "。") |
|
|
|
str, _ := BuildTextMsg(ss.OpenID, "搜索 "+name+"... ...") |
|
|
|
in.replyXML(str) |
|
|
|
m.displayUserInfo(ss, name) |
|
|
|
case EventMsg: |
|
|
|
if msg.Event == "LOCATION" { |
|
|
|
onLocation(in) |
|
|
|
} |
|
|
|
default: |
|
|
|
str := fmt.Sprintf("搜索功能结束") |
|
|
|
kfSendTxtAs(ss.OpenID, str, "孙鹏") |
|
|
|
m.clean(ss) |
|
|
|
} |
|
|
|
} |
|
|
|
func (m *procSearchMemberDef) summary(ss *openIDSessionData) { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) intro(ss *openIDSessionData, in *InWechatMsg) { |
|
|
|
msg := "请输入(读出)他/她的姓名或者照片" |
|
|
|
in.replyText("") |
|
|
|
kfSendTxtAs(ss.OpenID, msg, "孙鹏") |
|
|
|
} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) displayUserInfo(ss *openIDSessionData, name string) { |
|
|
|
total, list, err := crmFindEntityByAttr("Lead", "lastName", name) |
|
|
|
if total <= 0 || err != nil { |
|
|
|
kfSendTxtAs(ss.OpenID, "很抱歉,没有找到相关信息", "孙鹏") |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
search, ok := list.([]crmdLead) |
|
|
|
if !ok { |
|
|
|
log.Printf("ERROR: 搜索 %s 结果异常, total=%d, ", name, total) |
|
|
|
kfSendTxt(ss.OpenID, "很抱歉,没有找到相关信息") |
|
|
|
return |
|
|
|
} |
|
|
|
for _, v := range search { |
|
|
|
email := "无" |
|
|
|
if v.EmailAddress != "" { |
|
|
|
email = v.EmailAddress |
|
|
|
} |
|
|
|
|
|
|
|
phone := "无" |
|
|
|
if v.PhoneNumber != "" { |
|
|
|
email = v.PhoneNumber |
|
|
|
} |
|
|
|
|
|
|
|
description := "无" |
|
|
|
if v.Description != "" { |
|
|
|
description = v.Description |
|
|
|
} |
|
|
|
msg := fmt.Sprintf("%s\n电邮:%s\n电话:%s\n介绍:%s\n", name, email, phone, description) |
|
|
|
kfSendTxtAs(ss.OpenID, msg, "孙鹏") |
|
|
|
} |
|
|
|
ss.refreshExpire(600) |
|
|
|
} |
|
|
|
|
|
|
|
func (m *procSearchMemberDef) endingCommand(ss *openIDSessionData, cmd string) (stop bool) { |
|
|
|
stop = false |
|
|
|
|
|
|
|
if cmd == "结束" || cmd == "." || cmd == "。" { |
|
|
|
stop = true |
|
|
|
m.clean(ss) |
|
|
|
str := fmt.Sprintf("搜索功能结束") |
|
|
|
kfSendTxtAs(ss.OpenID, str, "孙鹏") |
|
|
|
} |
|
|
|
|
|
|
|
return |
|
|
|
} |