userlistlogic.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 || 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. }
  66. result = append(result, &userResp)
  67. }
  68. }
  69. return &messagecenter.UserResp{Data: result, Count: count}, nil
  70. }
  71. // insertDefaultChat 为防止聊天内容为空,影响工作台展示,插入默认机器人聊天内容
  72. func insertDefaultChat(in *messagecenter.UserReq) bool {
  73. m := service.MessaggeService{}
  74. //创建会话
  75. if createOk, sessionId := m.CreateChatSession(&messagecenter.ChatSessionReq{
  76. EntId: C.DefaultMsg.SendFromId,
  77. //CustomerServiceId: C.DefaultMsg.SendFromId,
  78. UserId: in.NewUserId,
  79. AppId: "10000",
  80. //CustomerserviceName: "xxxxx",
  81. }); createOk {
  82. //同步数据库
  83. saveMessageOk, _, _, _, _ := m.SaveMessage(&messagecenter.MessageEntity{
  84. OwnType: 2,
  85. //Title: req.Title,
  86. //SendId: C.DefaultMsg.SendFromId,
  87. Content: C.DefaultMsg.MsgContent,
  88. Item: 8, //聊天内容
  89. Type: 1, //文本内容
  90. //Link: req.Link,
  91. Appid: "10000",
  92. ItemType: 4,
  93. ReceiveId: in.NewUserId,
  94. NewUserId: in.NewUserId,
  95. EntUserId: in.EntUserId,
  96. SendId: sessionId,
  97. })
  98. if saveMessageOk {
  99. return true
  100. }
  101. }
  102. return false
  103. }