package msgTransfer import ( "context" "fmt" "github.com/zeromicro/go-zero/core/logx" "paopaoimrpc/apps/client/paopaosocial" "paopaoimtask/internal/svc" "paopaoimtask/pkg/constants" "paopaoimws/websocket" "paopaoimws/ws" ) type baseMsgTransfer struct { svcCtx *svc.ServiceContext logx.Logger } func NewBaseMsgTransfer(svc *svc.ServiceContext) *baseMsgTransfer { return &baseMsgTransfer{ svcCtx: svc, Logger: logx.WithContext(context.Background()), } } func (b *baseMsgTransfer) Transfer(ctx context.Context, data *ws.Push) error { var err error switch data.ChatType { case constants.SingleChatType: err = b.single(ctx, data) case constants.GroupChatType: err = b.group(ctx, data) } return err } func (b *baseMsgTransfer) single(ctx context.Context, data *ws.Push) error { return b.svcCtx.WsClient.Send(websocket.Message{ FrameType: websocket.FrameData, Method: "push", FormID: constants.SYSTEM_ROOT_UID, Data: data, Id: data.MsgID, }) } func (b *baseMsgTransfer) group(ctx context.Context, data *ws.Push) error { // 查询群用户 fmt.Println("接收者id: ", data.RecvID) fmt.Println("发送者id: ", data.SendID) members, err := b.svcCtx.PaoPaoSocial.GetGroupMembers(ctx, &paopaosocial.GetGroupMembersReq{ GroupId: data.RecvID, UserId: data.SendID, }) if err != nil { return err } data.RecvIDs = make([]int64, 0, members.Count) for _, item := range members.List { if item.UserId == data.SendID { continue } data.RecvIDs = append(data.RecvIDs, item.UserId) } return b.svcCtx.WsClient.Send(websocket.Message{ FrameType: websocket.FrameData, Method: "push", FormID: constants.SYSTEM_ROOT_UID, Data: data, Id: data.MsgID, }) }