From 2e39bd1d9cfed0ec7e6395cb6b7ed085c357f85f Mon Sep 17 00:00:00 2001 From: hawklin2017 <32898629+hawklin2017@users.noreply.github.com> Date: Wed, 20 May 2026 22:21:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A5=BD=E5=8F=8Bremark?= =?UTF-8?q?=EF=BC=8C=E9=80=9A=E7=9F=A5=E7=BE=A4=E8=B5=84=E6=96=99=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rpc/group/group.go | 18 ++++++++++++++++++ internal/rpc/relation/friend.go | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 94de70abf..47f860ca1 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -153,6 +153,24 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg return nil } +func (s *groupServer) NotificationFriendRemarkUpdate(ctx context.Context, req *pbgroup.NotificationFriendRemarkUpdateReq) (*pbgroup.NotificationFriendRemarkUpdateResp, error) { + ownerGroupIDs, err := s.db.FindJoinGroupID(ctx, req.OwnerUserID) + if err != nil { + return nil, err + } + if len(ownerGroupIDs) == 0 { + return &pbgroup.NotificationFriendRemarkUpdateResp{}, nil + } + commonMembers, err := s.db.FindGroupMemberUser(ctx, ownerGroupIDs, req.FriendUserID) + if err != nil { + return nil, err + } + for _, member := range commonMembers { + s.notification.GroupMemberInfoSetNotification(ctx, member.GroupID, req.FriendUserID) + } + return &pbgroup.NotificationFriendRemarkUpdateResp{}, nil +} + func (s *groupServer) NotificationUserInfoUpdate(ctx context.Context, req *pbgroup.NotificationUserInfoUpdateReq) (*pbgroup.NotificationUserInfoUpdateResp, error) { members, err := s.db.FindGroupMemberUser(ctx, nil, req.UserID) if err != nil { diff --git a/internal/rpc/relation/friend.go b/internal/rpc/relation/friend.go index 40d4112ed..5b5cf4cf5 100644 --- a/internal/rpc/relation/friend.go +++ b/internal/rpc/relation/friend.go @@ -20,6 +20,7 @@ import ( "github.com/openimsdk/open-im-server/v3/pkg/notification/common_user" "github.com/openimsdk/open-im-server/v3/pkg/rpcli" + pbgroup "github.com/openimsdk/protocol/group" "github.com/openimsdk/tools/mq/memamq" @@ -65,6 +66,7 @@ type friendServer struct { queue *memamq.MemoryQueue userClient *rpcli.UserClient conversationClient *rpcli.ConversationClient + groupClient *rpcli.GroupClient } type Config struct { @@ -126,6 +128,10 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg if err != nil { return err } + groupConn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Group) + if err != nil { + return err + } userClient := rpcli.NewUserClient(userConn) database := controller.NewFriendDatabase( @@ -159,6 +165,7 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg queue: memamq.NewMemoryQueue(16, 1024*1024), userClient: userClient, conversationClient: rpcli.NewConversationClient(conversationConn), + groupClient: rpcli.NewGroupClient(groupConn), }) return nil } @@ -330,6 +337,15 @@ func (s *friendServer) SetFriendRemark(ctx context.Context, req *relation.SetFri s.webhookAfterSetFriendRemark(ctx, &s.config.WebhooksConfig.AfterSetFriendRemark, req) s.notificationSender.FriendRemarkSetNotification(ctx, req.OwnerUserID, req.FriendUserID) + go func() { + noCancelCtx := context.WithoutCancel(ctx) + if _, err := s.groupClient.NotificationFriendRemarkUpdate(noCancelCtx, &pbgroup.NotificationFriendRemarkUpdateReq{ + OwnerUserID: req.OwnerUserID, + FriendUserID: req.FriendUserID, + }); err != nil { + log.ZError(noCancelCtx, "NotificationFriendRemarkUpdate", err, "ownerUserID", req.OwnerUserID, "friendUserID", req.FriendUserID) + } + }() return &relation.SetFriendRemarkResp{}, nil }