package msgTransfer import ( "context" "fmt" "slowwild/internal/constants" "slowwild/internal/svc" msgChat "git.banshen.xyz/huangguangrong/slow_wild_queue/types" "github.com/zeromicro/go-zero/core/logx" ) 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 *msgChat.Push) error { var err error switch data.ChatType { case msgChat.SingleChatType: err = b.single(ctx, data) case msgChat.GroupChatType: err = b.group(ctx, data) } return err } func (b *BaseMsgTransfer) single(ctx context.Context, data *msgChat.Push) error { // 重新投送回消息队列,消费者接到之后直接推送到客户端 fmt.Println("single 推送消息队列") b.svcCtx.MsgPushToClientTransfer.Push(&msgChat.MessagePushData{ FrameType: msgChat.FrameData, Id: data.MsgID, Method: "push", FormID: constants.SystemUserId, UserID: data.RecvID, Data: data, }) return nil } func (b *BaseMsgTransfer) group(ctx context.Context, data *msgChat.Push) error { // 查询群用户 // socialLogic := paopaosociallogic.NewGetGroupMembersLogic(ctx, b.svcCtx) // members, err := socialLogic.GetGroupMembers(&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 nil }