msgTransfer.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package msgTransfer
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/zeromicro/go-zero/core/logx"
  6. "paopaoimrpc/apps/client/paopaosocial"
  7. "paopaoimtask/internal/svc"
  8. "paopaoimtask/pkg/constants"
  9. "paopaoimws/websocket"
  10. "paopaoimws/ws"
  11. )
  12. type baseMsgTransfer struct {
  13. svcCtx *svc.ServiceContext
  14. logx.Logger
  15. }
  16. func NewBaseMsgTransfer(svc *svc.ServiceContext) *baseMsgTransfer {
  17. return &baseMsgTransfer{
  18. svcCtx: svc,
  19. Logger: logx.WithContext(context.Background()),
  20. }
  21. }
  22. func (b *baseMsgTransfer) Transfer(ctx context.Context, data *ws.Push) error {
  23. var err error
  24. switch data.ChatType {
  25. case constants.SingleChatType:
  26. err = b.single(ctx, data)
  27. case constants.GroupChatType:
  28. err = b.group(ctx, data)
  29. }
  30. return err
  31. }
  32. func (b *baseMsgTransfer) single(ctx context.Context, data *ws.Push) error {
  33. return b.svcCtx.WsClient.Send(websocket.Message{
  34. FrameType: websocket.FrameData,
  35. Method: "push",
  36. FormID: constants.SYSTEM_ROOT_UID,
  37. Data: data,
  38. Id: data.MsgID,
  39. })
  40. }
  41. func (b *baseMsgTransfer) group(ctx context.Context, data *ws.Push) error {
  42. // 查询群用户
  43. fmt.Println("接收者id: ", data.RecvID)
  44. fmt.Println("发送者id: ", data.SendID)
  45. members, err := b.svcCtx.PaoPaoSocial.GetGroupMembers(ctx, &paopaosocial.GetGroupMembersReq{
  46. GroupId: data.RecvID,
  47. UserId: data.SendID,
  48. })
  49. if err != nil {
  50. return err
  51. }
  52. data.RecvIDs = make([]int64, 0, members.Count)
  53. for _, item := range members.List {
  54. if item.UserId == data.SendID {
  55. continue
  56. }
  57. data.RecvIDs = append(data.RecvIDs, item.UserId)
  58. }
  59. return b.svcCtx.WsClient.Send(websocket.Message{
  60. FrameType: websocket.FrameData,
  61. Method: "push",
  62. FormID: constants.SYSTEM_ROOT_UID,
  63. Data: data,
  64. Id: data.MsgID,
  65. })
  66. }