From aac13ebae2ac576c7c264c7f319fb028bc5468be Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Tue, 6 Jun 2023 20:32:09 +0800 Subject: [PATCH 1/4] GroupApplicationResponse --- internal/rpc/group/group.go | 11 +++++------ pkg/errs/code.go | 1 + pkg/errs/predefine.go | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index ebd08a59c..84c13e88f 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -724,7 +724,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup return nil, err } if groupRequest.HandleResult != 0 { - return nil, errs.ErrArgs.Wrap("group request already processed") + return nil, errs.ErrGroupRequestHandled.Wrap("group request already processed") } var inGroup bool _, err = s.GroupDatabase.TakeGroupMember(ctx, req.GroupID, req.FromUserID) @@ -733,17 +733,16 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup } else if !s.IsNotFound(err) { return nil, err } - user, err := s.User.GetPublicUserInfo(ctx, req.FromUserID) - if err != nil { + if _, err := s.User.GetPublicUserInfo(ctx, req.FromUserID); err != nil { return nil, err } var member *relationTb.GroupMemberModel if (!inGroup) && req.HandleResult == constant.GroupResponseAgree { member = &relationTb.GroupMemberModel{ GroupID: req.GroupID, - UserID: user.UserID, - Nickname: user.Nickname, - FaceURL: user.FaceURL, + UserID: req.FromUserID, + Nickname: "", + FaceURL: "", RoleLevel: constant.GroupOrdinaryUsers, JoinTime: time.Now(), JoinSource: groupRequest.JoinSource, diff --git a/pkg/errs/code.go b/pkg/errs/code.go index 0a5b932f0..a17c09afa 100644 --- a/pkg/errs/code.go +++ b/pkg/errs/code.go @@ -56,6 +56,7 @@ const ( OwnerNotAllowedQuitError = 1207 //群主不能退群 GroupTypeNotSupport = 1208 GroupNoOwner = 1209 + GroupRequestHandled = 1210 // 关系链错误码 CanNotAddYourselfError = 1301 //不能添加自己为好友 diff --git a/pkg/errs/predefine.go b/pkg/errs/predefine.go index 5b7cfbd88..3fee637eb 100644 --- a/pkg/errs/predefine.go +++ b/pkg/errs/predefine.go @@ -62,4 +62,5 @@ var ( ErrFileUploadedComplete = NewCodeError(FileUploadedCompleteError, "FileUploadedComplete") ErrFileUploadedExpired = NewCodeError(FileUploadedExpiredError, "FileUploadedExpiredError") + ErrGroupRequestHandled = NewCodeError(GroupRequestHandled, "GroupRequestHandled") ) From 8d892da5a7fe3876b84345b9b09defb585c154a6 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 6 Jun 2023 20:32:54 +0800 Subject: [PATCH 2/4] fix: platform client conn delete --- internal/msggateway/user_map.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/msggateway/user_map.go b/internal/msggateway/user_map.go index c173d8e05..56ad7a594 100644 --- a/internal/msggateway/user_map.go +++ b/internal/msggateway/user_map.go @@ -40,12 +40,12 @@ func (u *UserMap) Get(key string, platformID int) ([]*Client, bool, bool) { func (u *UserMap) Set(key string, v *Client) { allClients, existed := u.m.Load(key) if existed { - log.ZDebug(context.Background(), "Set existed", "user_id", key, "client", v) + log.ZDebug(context.Background(), "Set existed", "user_id", key, "client", *v) oldClients := allClients.([]*Client) oldClients = append(oldClients, v) u.m.Store(key, oldClients) } else { - log.ZDebug(context.Background(), "Set not existed", "user_id", key, "client", v) + log.ZDebug(context.Background(), "Set not existed", "user_id", key, "client", *v) var clients []*Client clients = append(clients, v) u.m.Store(key, clients) From 8beb5c2e7bbb527c223b7ecbeb08326d0ae1bdab Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Tue, 6 Jun 2023 20:41:07 +0800 Subject: [PATCH 3/4] GroupApplicationResponse --- internal/rpc/group/group.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 84c13e88f..adcb236cc 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -764,6 +764,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup if !inGroup { groupMember := &relationTb.GroupMemberModel{} groupMember.GroupID = group.GroupID + groupMember.UserID = req.FromUserID groupMember.RoleLevel = constant.GroupOrdinaryUsers groupMember.OperatorUserID = mcontext.GetOpUserID(ctx) groupMember.JoinSource = groupRequest.JoinSource From 1f0aca8441c99498b3dbf9b5753bfec44469ae93 Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Tue, 6 Jun 2023 20:51:19 +0800 Subject: [PATCH 4/4] GroupApplicationResponse --- internal/rpc/group/group.go | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index adcb236cc..a8d31a02c 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -761,30 +761,12 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup switch req.HandleResult { case constant.GroupResponseAgree: s.Notification.GroupApplicationAcceptedNotification(ctx, req) - if !inGroup { - groupMember := &relationTb.GroupMemberModel{} - groupMember.GroupID = group.GroupID - groupMember.UserID = req.FromUserID - groupMember.RoleLevel = constant.GroupOrdinaryUsers - groupMember.OperatorUserID = mcontext.GetOpUserID(ctx) - groupMember.JoinSource = groupRequest.JoinSource - groupMember.InviterUserID = groupRequest.InviterUserID - groupMember.JoinTime = time.Now() - groupMember.MuteEndTime = time.Unix(0, 0) - if err := CallbackBeforeMemberJoinGroup(ctx, groupMember, group.Ex); err != nil && err != errs.ErrCallbackContinue { - return nil, err - } - if err := s.GroupDatabase.CreateGroup(ctx, nil, []*relationTb.GroupMemberModel{groupMember}); err != nil { - return nil, err - } - if err := s.conversationRpcClient.GroupChatFirstCreateConversation(ctx, req.GroupID, []string{req.FromUserID}); err != nil { - return nil, err - } - s.Notification.MemberEnterNotification(ctx, req) - } case constant.GroupResponseRefuse: s.Notification.GroupApplicationRejectedNotification(ctx, req) } + if member != nil { + s.Notification.MemberEnterNotification(ctx, req) + } return &pbGroup.GroupApplicationResponseResp{}, nil }