Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

117 lines
2.9KB

  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) (processed bool) {
  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. processed = true
  30. case PicMsg:
  31. //str := buildPicMsg(ss.OpenID, msg.MediaId)
  32. xml, _ := BuildKFTransferAnyOneMsg(ss.OpenID)
  33. in.replyXML(xml)
  34. kfSendPicByMediaID(ss.OpenID, msg.MediaId)
  35. kfSendTxt(ss.OpenID, "已转接校友会理事会,稍后答复您")
  36. processed = true
  37. case VoiceMsg:
  38. name := strings.TrimSuffix(msg.Recognition, "。")
  39. str, _ := BuildTextMsg(ss.OpenID, "搜索 "+name+"... ...")
  40. in.replyXML(str)
  41. m.displayUserInfo(ss, name)
  42. processed = true
  43. case EventMsg:
  44. if msg.Event == "LOCATION" {
  45. onLocation(in)
  46. processed = true
  47. }
  48. default:
  49. str := fmt.Sprintf("搜索功能结束")
  50. kfSendTxtAs(ss.OpenID, str, "孙鹏")
  51. processed = false
  52. }
  53. return
  54. }
  55. func (m *procSearchMemberDef) summary(ss *openIDSessionData) {
  56. }
  57. func (m *procSearchMemberDef) intro(ss *openIDSessionData, in *InWechatMsg) {
  58. msg := "请输入(读出)他/她的姓名或者照片"
  59. in.replyText("")
  60. kfSendTxtAs(ss.OpenID, msg, "孙鹏")
  61. }
  62. func (m *procSearchMemberDef) displayUserInfo(ss *openIDSessionData, name string) {
  63. total, list, err := crmFindEntityByAttr("Lead", "lastName", name)
  64. if total <= 0 || err != nil {
  65. kfSendTxtAs(ss.OpenID, "很抱歉,没有找到相关信息", "孙鹏")
  66. return
  67. }
  68. search, ok := list.([]crmdLead)
  69. if !ok {
  70. log.Printf("ERROR: 搜索 %s 结果异常, total=%d, ", name, total)
  71. kfSendTxt(ss.OpenID, "很抱歉,没有找到相关信息")
  72. return
  73. }
  74. for _, v := range search {
  75. articles := []sendNewsArticle{}
  76. //main photo
  77. articles = append(articles, v.getBasicUserInfoPhoto())
  78. //email
  79. articles = append(articles, v.getBasicUserInfoEmail())
  80. //phone
  81. articles = append(articles, v.getBasicUserInfoPhone())
  82. kfSendNews(ss.OpenID, "总标题", "总描述", articles)
  83. if v.Description != "" {
  84. msg := fmt.Sprintf("%s简介:%s\n", name, v.Description)
  85. kfSendTxtAs(ss.OpenID, msg, "孙鹏")
  86. }
  87. }
  88. ss.refreshExpire(600)
  89. }
  90. func (m *procSearchMemberDef) endingCommand(ss *openIDSessionData, cmd string) (stop bool) {
  91. stop = false
  92. if cmd == "结束" || cmd == "." || cmd == "。" {
  93. stop = true
  94. m.clean(ss)
  95. str := fmt.Sprintf("搜索功能结束")
  96. kfSendTxtAs(ss.OpenID, str, "孙鹏")
  97. }
  98. return
  99. }