TopicService.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package service
  2. import (
  3. "fmt"
  4. . "jjl-tools/tinodeService/dao"
  5. "strconv"
  6. )
  7. type Topics struct {
  8. Id int
  9. PageNum int
  10. PageSize int
  11. CompanyId int
  12. SkillGroups string
  13. GroupId int
  14. Uid string
  15. StartTime string
  16. EndTime string
  17. Name string
  18. Content string
  19. Quality int
  20. FirstReplyInterval int
  21. //查询会话记录
  22. Topic string
  23. Sid string
  24. CreateTime string
  25. MsgNum int
  26. ChannelId int
  27. CategoryId int
  28. IsReply int
  29. }
  30. //获取会话详细记录
  31. func (tp *Topics) GetMessageList() (mesList []Messages, err error) {
  32. mesDao := MessageDao{}
  33. //获取总条数
  34. mesList, err = mesDao.GetMessagesList(tp.Topic, tp.Sid, tp.CreateTime, tp.PageSize)
  35. return
  36. }
  37. //获取会话开始时间, 结束时间
  38. func (tp *Topics) GetChatRecordStartEndTime() map[string]interface{} {
  39. chatDao := ChatRecordDao{}
  40. chatList, err := chatDao.GetGroupByChatRecordLists(tp.Topic, tp.Sid)
  41. if err != nil {
  42. fmt.Println("数据为空或获取会话信息错误, topic:", tp.Topic, ", sid:", tp.Sid, ", err=", err)
  43. }
  44. insDao := InspectionDao{}
  45. list := make(map[string]interface{})
  46. endDes := map[string]string{
  47. "1": "客服结束",
  48. "2": "用户结束",
  49. "3": "用户超时自动关闭",
  50. "4": "客服异常关闭",
  51. "5": "用户异常关闭",
  52. }
  53. for _, v := range chatList {
  54. //判断 v.SID 是否数字, 默认是用户发送的 - 2, 如果是全数组则是客服发送的 - 1
  55. call_start_type := 2
  56. if _, err := strconv.ParseFloat(v.SID, 64); err == nil {
  57. call_start_type = 1
  58. }
  59. vUser,_ := strconv.ParseInt(v.USER_ID, 10, 64)
  60. vVistor,_ := strconv.ParseInt(v.VISITOR_ID, 10, 64)
  61. customer, _ := insDao.GetUserFromRedis(1, vUser)
  62. user, _ := insDao.GetUserFromRedis(2, vVistor)
  63. cInfo := map[string]interface{}{
  64. "call_start_time": v.CREATE_TIME,
  65. "call_end_time": v.CallEndTime,
  66. "call_end_type": v.CallEndType,
  67. "call_end_des": endDes[v.CallEndType],
  68. "call_start_type": call_start_type,
  69. "customer_nickname": customer.Realname, //客服昵称
  70. "user_nickname": user.Realname, //用户昵称
  71. }
  72. list[v.SID] = cInfo
  73. }
  74. return list
  75. }