userlistlogic.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/jybase/encrypt"
  4. util "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/entity"
  5. . "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/init"
  6. "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/service"
  7. "context"
  8. "time"
  9. quitl "app.yhyue.com/moapp/jybase/common"
  10. "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/internal/svc"
  11. "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/messagecenter"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. type UserListLogic struct {
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. logx.Logger
  18. }
  19. func NewUserListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserListLogic {
  20. return &UserListLogic{
  21. ctx: ctx,
  22. svcCtx: svcCtx,
  23. Logger: logx.WithContext(ctx),
  24. }
  25. }
  26. // UserList 用户列表查询
  27. func (l *UserListLogic) UserList(in *messagecenter.UserReq) (*messagecenter.UserResp, error) {
  28. // todo: add your logic here and delete this line
  29. m := service.MessaggeService{}
  30. nowIndex := 0
  31. queryAgain:
  32. data, count, err := m.UserList(in)
  33. if err != nil {
  34. return nil, err
  35. }
  36. var result = []*messagecenter.UserEntity{}
  37. //聊天内容为空,插入默认客服聊天内容
  38. if (count == 0 || data == nil || len(*data) == 0) && in.UserType == 2 && in.QueryType != 1 && nowIndex < 1 {
  39. if insertDefaultChat(in) {
  40. nowIndex++
  41. goto queryAgain
  42. }
  43. }
  44. if data != nil && len(*data) > 0 {
  45. for _, v := range *data {
  46. var tim time.Time
  47. if quitl.InterfaceToStr(v["create_time"]) != "" {
  48. tim, _ = time.ParseInLocation(util.Date_Full_Layout, quitl.InterfaceToStr(v["create_time"]), time.Local)
  49. } else {
  50. tim, _ = time.ParseInLocation(util.Date_Full_Layout, quitl.InterfaceToStr(v["timestamp"]), time.Local)
  51. }
  52. groupMember, _ := v["groupMember"].([]string)
  53. userResp := messagecenter.UserEntity{
  54. Name: quitl.ObjToString(v["name"]),
  55. Title: quitl.ObjToString(v["title"]),
  56. Type: quitl.Int64All(v["type"]),
  57. Link: quitl.ObjToString(v["link"]),
  58. Content: quitl.ObjToString(v["content"]),
  59. CreateTime: tim.Unix(),
  60. UserType: quitl.Int64All(v["userType"]),
  61. Number: quitl.Int64All(v["number"]),
  62. UserId: encrypt.SE.Encode2Hex(quitl.InterfaceToStr(v["id"])),
  63. Headimg: quitl.ObjToString(v["headimg"]),
  64. GroupMember: groupMember,
  65. IsTourist: quitl.Int64All(v["is_tourist"]),
  66. }
  67. result = append(result, &userResp)
  68. }
  69. }
  70. return &messagecenter.UserResp{Data: result, Count: count}, nil
  71. }
  72. // insertDefaultChat 为防止聊天内容为空,影响工作台展示,插入默认机器人聊天内容
  73. func insertDefaultChat(in *messagecenter.UserReq) bool {
  74. m := service.MessaggeService{}
  75. //创建会话
  76. if createOk, sessionId := m.CreateChatSession(&messagecenter.ChatSessionReq{
  77. EntId: C.DefaultMsg.SendFromId,
  78. //CustomerServiceId: C.DefaultMsg.SendFromId,
  79. UserId: in.NewUserId,
  80. AppId: "10000",
  81. //CustomerserviceName: "xxxxx",
  82. }); createOk {
  83. //同步数据库
  84. saveMessageOk, _, _, _, _ := m.SaveMessage(&messagecenter.MessageEntity{
  85. OwnType: 2,
  86. //Title: req.Title,
  87. //SendId: C.DefaultMsg.SendFromId,
  88. Content: C.DefaultMsg.MsgContent,
  89. Item: 8, //聊天内容
  90. Type: 1, //文本内容
  91. //Link: req.Link,
  92. Appid: "10000",
  93. ItemType: 4,
  94. ReceiveId: in.NewUserId,
  95. NewUserId: in.NewUserId,
  96. EntUserId: in.EntUserId,
  97. SendId: sessionId,
  98. })
  99. if saveMessageOk {
  100. return true
  101. }
  102. }
  103. return false
  104. }