msgTransfer.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package msgTransfer
  2. import (
  3. "context"
  4. "fmt"
  5. "slowwild/internal/constants"
  6. "slowwild/internal/svc"
  7. msgChat "git.banshen.xyz/huangguangrong/slow_wild_queue/types"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. )
  10. type BaseMsgTransfer struct {
  11. svcCtx *svc.ServiceContext
  12. logx.Logger
  13. }
  14. func NewBaseMsgTransfer(svc *svc.ServiceContext) *BaseMsgTransfer {
  15. return &BaseMsgTransfer{
  16. svcCtx: svc,
  17. Logger: logx.WithContext(context.Background()),
  18. }
  19. }
  20. func (b *BaseMsgTransfer) Transfer(ctx context.Context, data *msgChat.Push) error {
  21. var err error
  22. switch data.ChatType {
  23. case msgChat.SingleChatType:
  24. err = b.single(ctx, data)
  25. case msgChat.GroupChatType:
  26. err = b.group(ctx, data)
  27. }
  28. return err
  29. }
  30. func (b *BaseMsgTransfer) single(ctx context.Context, data *msgChat.Push) error {
  31. // 重新投送回消息队列,消费者接到之后直接推送到客户端
  32. fmt.Println("single 推送消息队列")
  33. b.svcCtx.MsgPushToClientTransfer.Push(&msgChat.MessagePushData{
  34. FrameType: msgChat.FrameData,
  35. Id: data.MsgID,
  36. Method: "push",
  37. FormID: constants.SystemUserId,
  38. UserID: data.RecvID,
  39. Data: data,
  40. })
  41. return nil
  42. }
  43. func (b *BaseMsgTransfer) group(ctx context.Context, data *msgChat.Push) error {
  44. // 查询群用户
  45. // socialLogic := paopaosociallogic.NewGetGroupMembersLogic(ctx, b.svcCtx)
  46. // members, err := socialLogic.GetGroupMembers(&paopaosocial.GetGroupMembersReq{
  47. // GroupId: data.RecvID,
  48. // UserId: data.SendID,
  49. // })
  50. // if err != nil {
  51. // return err
  52. // }
  53. // data.RecvIDs = make([]int64, 0, members.Count)
  54. // for _, item := range members.List {
  55. // if item.UserId == data.SendID {
  56. // continue
  57. // }
  58. // data.RecvIDs = append(data.RecvIDs, item.UserId)
  59. // }
  60. // // 重新投送到消息队列,消费者接收到消息之后立即推送出去
  61. return nil
  62. }