Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

112 lines
2.8KB

  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. articles := []sendNewsArticle{}
  71. //main photo
  72. articles = append(articles, v.getBasicUserInfoPhoto())
  73. //email
  74. articles = append(articles, v.getBasicUserInfoEmail())
  75. //phone
  76. articles = append(articles, v.getBasicUserInfoPhone())
  77. kfSendNews(ss.OpenID, "总标题", "总描述", articles)
  78. if v.Description != "" {
  79. msg := fmt.Sprintf("%s简介:%s\n", name, v.Description)
  80. kfSendTxtAs(ss.OpenID, msg, "孙鹏")
  81. }
  82. }
  83. ss.refreshExpire(600)
  84. }
  85. func (m *procSearchMemberDef) endingCommand(ss *openIDSessionData, cmd string) (stop bool) {
  86. stop = false
  87. if cmd == "结束" || cmd == "." || cmd == "。" {
  88. stop = true
  89. m.clean(ss)
  90. str := fmt.Sprintf("搜索功能结束")
  91. kfSendTxtAs(ss.OpenID, str, "孙鹏")
  92. }
  93. return
  94. }