diff --git a/internal/rpc/group/fill.go b/internal/rpc/group/fill.go new file mode 100644 index 000000000..0e3abff43 --- /dev/null +++ b/internal/rpc/group/fill.go @@ -0,0 +1,79 @@ +package group + +import ( + "context" + relationTb "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation" + "github.com/OpenIMSDK/Open-IM-Server/pkg/utils" +) + +func (s *groupServer) FindGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32) ([]*relationTb.GroupMemberModel, error) { + members, err := s.GroupDatabase.FindGroupMember(ctx, groupIDs, userIDs, roleLevels) + if err != nil { + return nil, err + } + emptyUserIDs := make(map[string]struct{}) + for _, member := range members { + if member.Nickname == "" || member.FaceURL == "" { + emptyUserIDs[member.UserID] = struct{}{} + } + } + if len(emptyUserIDs) > 0 { + users, err := s.User.GetPublicUserInfoMap(ctx, utils.Keys(emptyUserIDs), true) + if err != nil { + return nil, err + } + for i, member := range members { + user, ok := users[member.UserID] + if !ok { + continue + } + if member.Nickname == "" { + members[i].Nickname = user.Nickname + } + if member.FaceURL == "" { + members[i].FaceURL = user.FaceURL + } + } + } + return members, nil +} + +func (s *groupServer) TakeGroupMember(ctx context.Context, groupID string, userID string) (*relationTb.GroupMemberModel, error) { + member, err := s.GroupDatabase.TakeGroupMember(ctx, groupID, userID) + if err != nil { + return nil, err + } + if member.Nickname == "" || member.FaceURL == "" { + user, err := s.User.GetPublicUserInfo(ctx, userID) + if err != nil { + return nil, err + } + if member.Nickname == "" { + member.Nickname = user.Nickname + } + if member.FaceURL == "" { + member.FaceURL = user.FaceURL + } + } + return member, nil +} + +func (s *groupServer) TakeGroupOwner(ctx context.Context, groupID string) (*relationTb.GroupMemberModel, error) { + owner, err := s.GroupDatabase.TakeGroupOwner(ctx, groupID) + if err != nil { + return nil, err + } + if owner.Nickname == "" || owner.FaceURL == "" { + user, err := s.User.GetUserInfo(ctx, owner.UserID) + if err != nil { + return nil, err + } + if owner.Nickname == "" { + owner.Nickname = user.Nickname + } + if owner.FaceURL == "" { + owner.FaceURL = user.FaceURL + } + } + return owner, nil +} diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 3e9ff3b64..06fbff476 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -230,44 +230,6 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR return resp, nil } -func (s *groupServer) FindGroupMember(ctx context.Context, groupIDs []string, userIDs []string, roleLevels []int32) ([]*relationTb.GroupMemberModel, error) { - members, err := s.GroupDatabase.FindGroupMember(ctx, groupIDs, userIDs, roleLevels) - if err != nil { - return nil, err - } - emptyUserIDs := make(map[string]int) - for i, member := range members { - if member.Nickname == "" { - emptyUserIDs[member.UserID] = i - } - } - if len(emptyUserIDs) > 0 { - users, err := s.User.GetPublicUserInfos(ctx, utils.Keys(emptyUserIDs), true) - if err != nil { - return nil, err - } - for _, user := range users { - members[emptyUserIDs[user.UserID]].Nickname = user.Nickname - } - } - return members, nil -} - -func (s *groupServer) TakeGroupOwner(ctx context.Context, groupID string) (*relationTb.GroupMemberModel, error) { - owner, err := s.GroupDatabase.TakeGroupOwner(ctx, groupID) - if err != nil { - return nil, err - } - if owner.Nickname == "" { - user, err := s.User.GetUserInfo(ctx, owner.UserID) - if err != nil { - return nil, err - } - owner.Nickname = user.Nickname - } - return owner, nil -} - func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJoinedGroupListReq) (*pbGroup.GetJoinedGroupListResp, error) { resp := &pbGroup.GetJoinedGroupListResp{} if err := tokenverify.CheckAccessV3(ctx, req.FromUserID); err != nil { @@ -448,8 +410,6 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) { resp := &pbGroup.GetGroupMemberListResp{} - //total, members, err := s.GroupDatabase.PageGroupMember(ctx, []string{req.GroupID}, nil, utils.If(req.Filter >= 0, []int32{req.Filter}, nil), req.Pagination.PageNumber, req.Pagination.ShowNumber) - //total, members, err := s.GroupDatabase.PageGroupMember(ctx, []string{req.GroupID}, nil, nil, req.Pagination.PageNumber, req.Pagination.ShowNumber) total, members, err := s.GroupDatabase.PageGetGroupMember(ctx, req.GroupID, req.Pagination.PageNumber, req.Pagination.ShowNumber) log.ZDebug(ctx, "GetGroupMemberList", "total", total, "members", members, "length", len(members)) if err != nil { @@ -473,21 +433,6 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGr return resp, nil } -func (s *groupServer) TakeGroupMember(ctx context.Context, groupID string, userID string) (*relationTb.GroupMemberModel, error) { - member, err := s.GroupDatabase.TakeGroupMember(ctx, groupID, userID) - if err != nil { - return nil, err - } - if member.Nickname == "" { - user, err := s.User.GetPublicUserInfo(ctx, userID) - if err != nil { - return nil, err - } - member.Nickname = user.Nickname - } - return member, nil -} - func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGroupMemberReq) (*pbGroup.KickGroupMemberResp, error) { resp := &pbGroup.KickGroupMemberResp{} group, err := s.GroupDatabase.TakeGroup(ctx, req.GroupID)