From 0c63223aa5e09bfbd3449fe9f80ffbc3572a2256 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Tue, 22 Apr 2025 16:49:03 +0800 Subject: [PATCH] feat: GroupApplicationAgreeMemberEnterNotification splitting, rpc body size limit --- internal/rpc/group/group.go | 23 ++++++++++++++++++----- internal/rpc/group/notification.go | 12 +----------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 63d9336d5..455b77635 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -448,12 +448,25 @@ func (g *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite return nil, err } - if err := g.db.CreateGroup(ctx, nil, groupMembers); err != nil { - return nil, err - } + const singleQuantity = 50 + for start := 0; start < len(groupMembers); start += singleQuantity { + end := start + singleQuantity + if end > len(groupMembers) { + end = len(groupMembers) + } + currentMembers := groupMembers[start:end] - if err = g.notification.GroupApplicationAgreeMemberEnterNotification(ctx, req.GroupID, req.SendMessage, opUserID, req.InvitedUserIDs...); err != nil { - return nil, err + if err := g.db.CreateGroup(ctx, nil, currentMembers); err != nil { + return nil, err + } + + userIDs := datautil.Slice(currentMembers, func(e *model.GroupMember) string { + return e.UserID + }) + + if err = g.notification.GroupApplicationAgreeMemberEnterNotification(ctx, req.GroupID, req.SendMessage, opUserID, userIDs...); err != nil { + return nil, err + } } return &pbgroup.InviteUserToGroupResp{}, nil } diff --git a/internal/rpc/group/notification.go b/internal/rpc/group/notification.go index 8c5ecb2f6..43becf4f2 100644 --- a/internal/rpc/group/notification.go +++ b/internal/rpc/group/notification.go @@ -522,17 +522,7 @@ func (g *NotificationSender) MemberKickedNotification(ctx context.Context, tips } func (g *NotificationSender) GroupApplicationAgreeMemberEnterNotification(ctx context.Context, groupID string, SendMessage *bool, invitedOpUserID string, entrantUserID ...string) error { - const singleQuantity = 50 - for start := 0; start < len(entrantUserID); start += singleQuantity { - end := start + singleQuantity - if end > len(entrantUserID) { - end = len(entrantUserID) - } - if err := g.groupApplicationAgreeMemberEnterNotification(ctx, groupID, SendMessage, invitedOpUserID, entrantUserID[start:end]...); err != nil { - return err - } - } - return nil + return g.groupApplicationAgreeMemberEnterNotification(ctx, groupID, SendMessage, invitedOpUserID, entrantUserID...) } func (g *NotificationSender) groupApplicationAgreeMemberEnterNotification(ctx context.Context, groupID string, SendMessage *bool, invitedOpUserID string, entrantUserID ...string) error {