userlistlogic.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. queryAgain:
  31. data, count, err := m.UserList(in)
  32. if err != nil {
  33. return nil, err
  34. }
  35. var result = []*messagecenter.UserEntity{}
  36. //聊天内容为空,插入默认客服聊天内容
  37. if (count == 0 || len(*data) == 0) && in.UserType == 2 {
  38. if insertDefaultChat(in) {
  39. goto queryAgain
  40. }
  41. }
  42. if data != nil && len(*data) > 0 {
  43. for _, v := range *data {
  44. var tim time.Time
  45. if quitl.InterfaceToStr(v["create_time"]) != "" {
  46. tim, _ = time.ParseInLocation(util.Date_Full_Layout, quitl.InterfaceToStr(v["create_time"]), time.Local)
  47. } else {
  48. tim, _ = time.ParseInLocation(util.Date_Full_Layout, quitl.InterfaceToStr(v["timestamp"]), time.Local)
  49. }
  50. groupMember, _ := v["groupMember"].([]string)
  51. userResp := messagecenter.UserEntity{
  52. Name: quitl.ObjToString(v["name"]),
  53. Title: quitl.ObjToString(v["title"]),
  54. Type: quitl.Int64All(v["type"]),
  55. Link: quitl.ObjToString(v["link"]),
  56. Content: quitl.ObjToString(v["content"]),
  57. CreateTime: tim.Unix(),
  58. UserType: quitl.Int64All(v["userType"]),
  59. Number: quitl.Int64All(v["number"]),
  60. UserId: encrypt.SE.Encode2Hex(quitl.InterfaceToStr(v["id"])),
  61. Headimg: quitl.ObjToString(v["headimg"]),
  62. GroupMember: groupMember,
  63. }
  64. result = append(result, &userResp)
  65. }
  66. }
  67. return &messagecenter.UserResp{Data: result, Count: count}, nil
  68. }
  69. // insertDefaultChat 为防止聊天内容为空,影响工作台展示,插入默认机器人聊天内容
  70. func insertDefaultChat(in *messagecenter.UserReq) bool {
  71. m := service.MessaggeService{}
  72. //创建会话
  73. if createOk, sessionId := m.CreateChatSession(&messagecenter.ChatSessionReq{
  74. EntId: C.DefaultMsg.SendFromId,
  75. //CustomerServiceId: C.DefaultMsg.SendFromId,
  76. UserId: in.NewUserId,
  77. AppId: "10000",
  78. //CustomerserviceName: "xxxxx",
  79. }); createOk {
  80. //同步数据库
  81. saveMessageOk, _, _, _, _ := m.SaveMessage(&messagecenter.MessageEntity{
  82. OwnType: 2,
  83. //Title: req.Title,
  84. //SendId: C.DefaultMsg.SendFromId,
  85. Content: C.DefaultMsg.MsgContent,
  86. Item: 8, //聊天内容
  87. Type: 1, //文本内容
  88. //Link: req.Link,
  89. Appid: "10000",
  90. ItemType: 4,
  91. ReceiveId: in.NewUserId,
  92. NewUserId: in.NewUserId,
  93. EntUserId: in.EntUserId,
  94. SendId: sessionId,
  95. })
  96. if saveMessageOk {
  97. return true
  98. }
  99. }
  100. return false
  101. }