diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 4af4d3c03..b1ea0aa03 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -484,7 +484,7 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbgroup.GetGr if req.Keyword == "" { total, members, err = s.db.PageGetGroupMember(ctx, req.GroupID, req.Pagination) } else { - total, members, err = s.db.FindGroupMemberByKeyword(ctx, req.GroupID, req.Keyword, req.Pagination) + members, err = s.db.FindGroupMemberAll(ctx, req.GroupID) } if err != nil { return nil, err @@ -492,6 +492,26 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbgroup.GetGr if err := s.PopulateGroupMember(ctx, members...); err != nil { return nil, err } + if req.Keyword != "" { + groupMembers := make([]*relationtb.GroupMemberModel, 0) + for _, member := range members { + if member.UserID == req.Keyword { + groupMembers = append(groupMembers, member) + total++ + continue + } + if member.Nickname == req.Keyword { + groupMembers = append(groupMembers, member) + total++ + continue + } + } + + GMembers := utils.Paginate(groupMembers, int(req.Pagination.GetPageNumber()), int(req.Pagination.GetShowNumber())) + resp.Members = utils.Batch(convert.Db2PbGroupMember, GMembers) + resp.Total = uint32(total) + return resp, nil + } resp.Total = uint32(total) resp.Members = utils.Batch(convert.Db2PbGroupMember, members) return resp, nil @@ -1069,6 +1089,7 @@ func (s *groupServer) GetGroups(ctx context.Context, req *pbgroup.GetGroupsReq) var groups []*relationtb.GroupModel for _, v := range group { if v.Status == constant.GroupStatusDismissed { + resp.Total-- continue } groups = append(groups, v) diff --git a/pkg/common/db/controller/group.go b/pkg/common/db/controller/group.go index 4fe586b0d..decd868d6 100644 --- a/pkg/common/db/controller/group.go +++ b/pkg/common/db/controller/group.go @@ -45,7 +45,6 @@ type GroupDatabase interface { FindGroupMemberUser(ctx context.Context, groupIDs []string, userID string) (groupMembers []*relationtb.GroupMemberModel, err error) // * FindGroupMemberRoleLevels(ctx context.Context, groupID string, roleLevels []int32) (groupMembers []*relationtb.GroupMemberModel, err error) // * FindGroupMemberAll(ctx context.Context, groupID string) (groupMembers []*relationtb.GroupMemberModel, err error) // * - FindGroupMemberByKeyword(ctx context.Context, groupID string, keyword string, pagination pagination.Pagination) (int64, []*relationtb.GroupMemberModel, error) FindGroupsOwner(ctx context.Context, groupIDs []string) ([]*relationtb.GroupMemberModel, error) FindGroupMemberUserID(ctx context.Context, groupID string) ([]string, error) FindGroupMemberNum(ctx context.Context, groupID string) (uint32, error) @@ -120,34 +119,6 @@ func (g *groupDatabase) FindGroupMemberAll(ctx context.Context, groupID string) return g.cache.GetAllGroupMembersInfo(ctx, groupID) } -func (g *groupDatabase) FindGroupMemberByKeyword(ctx context.Context, groupID string, keyword string, pagination pagination.Pagination) (int64, []*relationtb.GroupMemberModel, error) { - members, err := g.cache.GetAllGroupMembersInfo(ctx, groupID) - if err != nil { - return 0, nil, err - } - - var total int64 - groupMembers := make([]*relationtb.GroupMemberModel, 0) - for _, member := range members { - if member.Nickname == keyword { - groupMembers = append(groupMembers, member) - total++ - continue - } - if member.UserID == keyword { - groupMembers = append(groupMembers, member) - total++ - continue - } - } - GMembers := utils.Paginate(groupMembers, int(pagination.GetPageNumber()), int(pagination.GetShowNumber())) - if len(GMembers) == 0 { - return int64(len(groupMembers)), nil, nil - } - - return total, GMembers, nil -} - func (g *groupDatabase) FindGroupsOwner(ctx context.Context, groupIDs []string) ([]*relationtb.GroupMemberModel, error) { return g.cache.GetGroupsOwner(ctx, groupIDs) } diff --git a/pkg/common/db/mgo/user.go b/pkg/common/db/mgo/user.go index 66b962d9d..27ca264dd 100644 --- a/pkg/common/db/mgo/user.go +++ b/pkg/common/db/mgo/user.go @@ -17,7 +17,6 @@ package mgo import ( "context" "github.com/OpenIMSDK/protocol/user" - "go.mongodb.org/mongo-driver/bson/primitive" "time" "github.com/OpenIMSDK/tools/mgoutil" @@ -71,7 +70,7 @@ func (u *UserMgo) TakeNotification(ctx context.Context, level int64) (user []*re } func (u *UserMgo) TakeByNickname(ctx context.Context, nickname string) (user []*relation.UserModel, err error) { - return mgoutil.Find[*relation.UserModel](ctx, u.coll, bson.E{Key: "nickname", Value: bson.M{"$regex": primitive.Regex{Pattern: ".*" + nickname + ".*", Options: "i"}}}) + return mgoutil.Find[*relation.UserModel](ctx, u.coll, bson.M{"nickname": nickname}) } func (u *UserMgo) Page(ctx context.Context, pagination pagination.Pagination) (count int64, users []*relation.UserModel, err error) {