Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

114 lines
2.7KB

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "strings"
  6. )
  7. type procSearchMemberDef struct {
  8. chatProcedureID
  9. }
  10. var procSearchMember = procSearchMemberDef{}
  11. func (m *procSearchMemberDef) init(ss *openIDSessionData) {
  12. ss.Procedure = m.getID()
  13. ss.refreshExpire(600)
  14. }
  15. func (m *procSearchMemberDef) clean(ss *openIDSessionData) {
  16. ss.Procedure = ""
  17. }
  18. func (m *procSearchMemberDef) start(ss *openIDSessionData, in *InWechatMsg) {
  19. }
  20. func (m *procSearchMemberDef) serve(ss *openIDSessionData, in *InWechatMsg) {
  21. switch msg := in.body.(type) {
  22. case TextMsg:
  23. if m.endingCommand(ss, msg.Content) {
  24. return
  25. }
  26. str, _ := BuildTextMsg(ss.OpenID, "搜索 "+msg.Content+"... ...")
  27. in.replyXML(str)
  28. m.displayUserInfo(ss, msg.Content)
  29. case PicMsg:
  30. //str := buildPicMsg(ss.OpenID, msg.MediaId)
  31. xml, _ := BuildKFTransferAnyOneMsg(ss.OpenID)
  32. in.replyXML(xml)
  33. kfSendPicByMediaID(ss.OpenID, msg.MediaId)
  34. kfSendTxt(ss.OpenID, "已转接校友会理事会,稍后答复您")
  35. case VoiceMsg:
  36. name := strings.TrimSuffix(msg.Recognition, "。")
  37. str, _ := BuildTextMsg(ss.OpenID, "搜索 "+name+"... ...")
  38. in.replyXML(str)
  39. m.displayUserInfo(ss, name)
  40. case EventMsg:
  41. if msg.Event == "LOCATION" {
  42. onLocation(in)
  43. }
  44. default:
  45. str := fmt.Sprintf("搜索功能结束")
  46. kfSendTxtAs(ss.OpenID, str, "孙鹏")
  47. m.clean(ss)
  48. }
  49. }
  50. func (m *procSearchMemberDef) summary(ss *openIDSessionData) {
  51. }
  52. func (m *procSearchMemberDef) intro(ss *openIDSessionData, in *InWechatMsg) {
  53. msg := "请输入(读出)他/她的姓名或者照片"
  54. in.replyText("")
  55. kfSendTxtAs(ss.OpenID, msg, "孙鹏")
  56. }
  57. func (m *procSearchMemberDef) displayUserInfo(ss *openIDSessionData, name string) {
  58. total, list, err := crmFindEntityByAttr("Lead", "lastName", name)
  59. if total <= 0 || err != nil {
  60. kfSendTxtAs(ss.OpenID, "很抱歉,没有找到相关信息", "孙鹏")
  61. return
  62. }
  63. search, ok := list.([]crmdLead)
  64. if !ok {
  65. log.Printf("ERROR: 搜索 %s 结果异常, total=%d, ", name, total)
  66. kfSendTxt(ss.OpenID, "很抱歉,没有找到相关信息")
  67. return
  68. }
  69. for _, v := range search {
  70. email := "无"
  71. if v.EmailAddress != "" {
  72. email = v.EmailAddress
  73. }
  74. phone := "无"
  75. if v.PhoneNumber != "" {
  76. email = v.PhoneNumber
  77. }
  78. description := "无"
  79. if v.Description != "" {
  80. description = v.Description
  81. }
  82. msg := fmt.Sprintf("%s\n电邮:%s\n电话:%s\n介绍:%s\n", name, email, phone, description)
  83. kfSendTxtAs(ss.OpenID, msg, "孙鹏")
  84. }
  85. ss.refreshExpire(600)
  86. }
  87. func (m *procSearchMemberDef) endingCommand(ss *openIDSessionData, cmd string) (stop bool) {
  88. stop = false
  89. if cmd == "结束" || cmd == "." || cmd == "。" {
  90. stop = true
  91. m.clean(ss)
  92. str := fmt.Sprintf("搜索功能结束")
  93. kfSendTxtAs(ss.OpenID, str, "孙鹏")
  94. }
  95. return
  96. }