Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,048 changes: 529 additions & 519 deletions protocol/user/user.pb.go

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions protocol/user/user.proto
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ message getPaginationUsersReq {
sdkws.RequestPagination pagination = 2;
string userID = 3;
string nickName = 4;
optional string ex = 5; // Filter by ex field (exact match)
}

message getPaginationUsersResp {
Expand Down
4 changes: 2 additions & 2 deletions server/internal/rpc/user/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,14 +251,14 @@ func (s *userServer) AccountCheck(ctx context.Context, req *pbuser.AccountCheckR
}

func (s *userServer) GetPaginationUsers(ctx context.Context, req *pbuser.GetPaginationUsersReq) (resp *pbuser.GetPaginationUsersResp, err error) {
if req.UserID == "" && req.NickName == "" {
if req.UserID == "" && req.NickName == "" && req.GetEx() == "" {
total, users, err := s.db.PageFindUser(ctx, constant.IMOrdinaryUser, constant.AppOrdinaryUsers, req.Pagination)
if err != nil {
return nil, err
}
return &pbuser.GetPaginationUsersResp{Total: int32(total), Users: convert.UsersDB2Pb(users)}, err
} else {
total, users, err := s.db.PageFindUserWithKeyword(ctx, constant.IMOrdinaryUser, constant.AppOrdinaryUsers, req.UserID, req.NickName, req.Pagination)
total, users, err := s.db.PageFindUserWithKeyword(ctx, constant.IMOrdinaryUser, constant.AppOrdinaryUsers, req.UserID, req.NickName, req.GetEx(), req.Pagination)
if err != nil {
return nil, err
}
Expand Down
6 changes: 3 additions & 3 deletions server/pkg/common/storage/controller/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ type UserDatabase interface {
// FindUser
PageFindUser(ctx context.Context, level1 int64, level2 int64, pagination pagination.Pagination) (count int64, users []*model.User, err error)
// FindUser with keyword
PageFindUserWithKeyword(ctx context.Context, level1 int64, level2 int64, userID string, nickName string, pagination pagination.Pagination) (count int64, users []*model.User, err error)
PageFindUserWithKeyword(ctx context.Context, level1 int64, level2 int64, userID, nickName, ex string, pagination pagination.Pagination) (count int64, users []*model.User, err error)
// Page If not found, no error is returned
Page(ctx context.Context, pagination pagination.Pagination) (count int64, users []*model.User, err error)
// IsExist true as long as one exists
Expand Down Expand Up @@ -170,8 +170,8 @@ func (u *userDatabase) PageFindUser(ctx context.Context, level1 int64, level2 in
return u.userDB.PageFindUser(ctx, level1, level2, pagination)
}

func (u *userDatabase) PageFindUserWithKeyword(ctx context.Context, level1 int64, level2 int64, userID, nickName string, pagination pagination.Pagination) (count int64, users []*model.User, err error) {
return u.userDB.PageFindUserWithKeyword(ctx, level1, level2, userID, nickName, pagination)
func (u *userDatabase) PageFindUserWithKeyword(ctx context.Context, level1 int64, level2 int64, userID, nickName, ex string, pagination pagination.Pagination) (count int64, users []*model.User, err error) {
return u.userDB.PageFindUserWithKeyword(ctx, level1, level2, userID, nickName, ex, pagination)
}

// IsExist Does userIDs exist? As long as there is one, it will be true.
Expand Down
6 changes: 6 additions & 0 deletions server/pkg/common/storage/database/mgo/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func (u *UserMgo) PageFindUserWithKeyword(
level2 int64,
userID string,
nickName string,
ex string,
pagination pagination.Pagination,
) (count int64, users []*model.User, err error) {
// Initialize the base query with level conditions
Expand All @@ -121,6 +122,11 @@ func (u *UserMgo) PageFindUserWithKeyword(
query["$and"] = append(query["$and"].([]bson.M), bson.M{"$or": userConditions})
}

// Add ex condition if provided (exact match)
if ex != "" {
query["$and"] = append(query["$and"].([]bson.M), bson.M{"ex": ex})
}

// Perform the paginated search
return mongoutil.FindPage[*model.User](ctx, u.coll, query, pagination)
}
Expand Down
2 changes: 1 addition & 1 deletion server/pkg/common/storage/database/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ type User interface {
TakeByNickname(ctx context.Context, nickname string) (user []*model.User, err error)
Page(ctx context.Context, pagination pagination.Pagination) (count int64, users []*model.User, err error)
PageFindUser(ctx context.Context, level1 int64, level2 int64, pagination pagination.Pagination) (count int64, users []*model.User, err error)
PageFindUserWithKeyword(ctx context.Context, level1 int64, level2 int64, userID, nickName string, pagination pagination.Pagination) (count int64, users []*model.User, err error)
PageFindUserWithKeyword(ctx context.Context, level1 int64, level2 int64, userID, nickName, ex string, pagination pagination.Pagination) (count int64, users []*model.User, err error)
Exist(ctx context.Context, userID string) (exist bool, err error)
GetAllUserID(ctx context.Context, pagination pagination.Pagination) (count int64, userIDs []string, err error)
GetUserGlobalRecvMsgOpt(ctx context.Context, userID string) (opt int, err error)
Expand Down