Skip to content

Commit b9217f7

Browse files
authored
feat: improve get admin role memberIDs implement. (openimsdk#2666)
* feat: implement GetSpecifiedUserGroupRequestInfo interface. * update mongo config. * feat: improve get admin role memberIDs implement. * remove unused contents. * remove unused contents. * remove todo implement.
1 parent 80a46b3 commit b9217f7

File tree

7 files changed

+9
-40
lines changed

7 files changed

+9
-40
lines changed

internal/rpc/group/group.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,6 @@ type groupServer struct {
6666
webhookClient *webhook.Client
6767
}
6868

69-
func (s *groupServer) GetSpecifiedUserGroupRequestInfo(ctx context.Context, req *pbgroup.GetSpecifiedUserGroupRequestInfoReq) (*pbgroup.GetSpecifiedUserGroupRequestInfoResp, error) {
70-
//TODO implement me
71-
panic("implement me")
72-
}
73-
7469
type Config struct {
7570
RpcConfig config.Group
7671
RedisConfig config.Redis
@@ -1756,14 +1751,21 @@ func (g *groupServer) GetGroupUsersReqApplicationList(ctx context.Context, req *
17561751
func (g *groupServer) GetSpecifiedUserGroupRequestInfo(ctx context.Context, req *pbgroup.GetSpecifiedUserGroupRequestInfoReq) (*pbgroup.GetSpecifiedUserGroupRequestInfoResp, error) {
17571752
opUserID := mcontext.GetOpUserID(ctx)
17581753

1754+
owners, err := g.db.FindGroupsOwner(ctx, []string{req.GroupID})
1755+
if err != nil {
1756+
return nil, err
1757+
}
1758+
17591759
if req.UserID != opUserID {
17601760
req.UserID = mcontext.GetOpUserID(ctx)
1761-
memberIDs, err := g.db.GetGroupAdminLevelMemberIDs(ctx, req.GroupID)
1761+
adminIDs, err := g.db.GetGroupRoleLevelMemberIDs(ctx, req.GroupID, constant.GroupAdmin)
17621762
if err != nil {
17631763
return nil, err
17641764
}
17651765

1766-
if !datautil.Contain(req.UserID, memberIDs...) {
1766+
adminIDs = append(adminIDs, owners[0].UserID)
1767+
1768+
if !datautil.Contain(req.UserID, adminIDs...) {
17671769
return nil, errs.ErrNoPermission.WrapMsg("opUser no permission")
17681770
}
17691771
}
@@ -1786,11 +1788,6 @@ func (g *groupServer) GetSpecifiedUserGroupRequestInfo(ctx context.Context, req
17861788
return nil, err
17871789
}
17881790

1789-
owners, err := g.db.FindGroupsOwner(ctx, []string{req.GroupID})
1790-
if err != nil {
1791-
return nil, err
1792-
}
1793-
17941791
groupMemberNum, err := g.db.MapGroupMemberNum(ctx, []string{req.GroupID})
17951792
if err != nil {
17961793
return nil, err

pkg/common/storage/cache/cachekey/group.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,6 @@ func GetGroupRoleLevelMemberIDsKey(groupID string, roleLevel int32) string {
6161
return GroupRoleLevelMemberIDsKey + groupID + "-" + strconv.Itoa(int(roleLevel))
6262
}
6363

64-
func GetGroupAdminLevelMemberIDsKey(groupID string) string {
65-
return GroupAdminLevelMemberIDsKey + groupID
66-
}
67-
6864
func GetGroupMemberMaxVersionKey(groupID string) string {
6965
return GroupMemberMaxVersionKey + groupID
7066
}

pkg/common/storage/cache/group.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ type GroupCache interface {
4949
FindGroupMemberUser(ctx context.Context, groupIDs []string, userID string) ([]*model.GroupMember, error)
5050

5151
GetGroupRoleLevelMemberIDs(ctx context.Context, groupID string, roleLevel int32) ([]string, error)
52-
GetGroupAdminLevelMemberIDs(ctx context.Context, groupID string) ([]string, error)
5352
GetGroupOwner(ctx context.Context, groupID string) (*model.GroupMember, error)
5453
GetGroupsOwner(ctx context.Context, groupIDs []string) ([]*model.GroupMember, error)
5554
DelGroupRoleLevel(groupID string, roleLevel []int32) GroupCache

pkg/common/storage/cache/redis/group.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,6 @@ func (g *GroupCacheRedis) getGroupRoleLevelMemberIDsKey(groupID string, roleLeve
111111
return cachekey.GetGroupRoleLevelMemberIDsKey(groupID, roleLevel)
112112
}
113113

114-
func (g *GroupCacheRedis) getGroupAdminLevelMemberIDsKey(groupID string) string {
115-
return cachekey.GetGroupAdminLevelMemberIDsKey(groupID)
116-
}
117-
118114
func (g *GroupCacheRedis) getGroupMemberMaxVersionKey(groupID string) string {
119115
return cachekey.GetGroupMemberMaxVersionKey(groupID)
120116
}
@@ -332,12 +328,6 @@ func (g *GroupCacheRedis) GetGroupRoleLevelMemberIDs(ctx context.Context, groupI
332328
})
333329
}
334330

335-
func (g *GroupCacheRedis) GetGroupAdminLevelMemberIDs(ctx context.Context, groupID string) ([]string, error) {
336-
return getCache(ctx, g.rcClient, g.getGroupAdminLevelMemberIDsKey(groupID), g.expireTime, func(ctx context.Context) ([]string, error) {
337-
return g.groupMemberDB.FindAdminLevelUserIDs(ctx, groupID)
338-
})
339-
}
340-
341331
func (g *GroupCacheRedis) GetGroupRoleLevelMemberInfo(ctx context.Context, groupID string, roleLevel int32) ([]*model.GroupMember, error) {
342332
userIDs, err := g.GetGroupRoleLevelMemberIDs(ctx, groupID, roleLevel)
343333
if err != nil {

pkg/common/storage/controller/group.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ type GroupDatabase interface {
7171
PageGroupRequest(ctx context.Context, groupIDs []string, pagination pagination.Pagination) (int64, []*model.GroupRequest, error)
7272
// GetGroupRoleLevelMemberIDs retrieves user IDs of group members with a specific role level.
7373
GetGroupRoleLevelMemberIDs(ctx context.Context, groupID string, roleLevel int32) ([]string, error)
74-
// GetGroupAdminLevelMemberIDs retrieves user IDs of group members with an admin role level.
75-
GetGroupAdminLevelMemberIDs(ctx context.Context, groupID string) ([]string, error)
7674

7775
// PageGetJoinGroup paginates through groups that a user has joined.
7876
PageGetJoinGroup(ctx context.Context, userID string, pagination pagination.Pagination) (total int64, totalGroupMembers []*model.GroupMember, err error)
@@ -182,10 +180,6 @@ func (g *groupDatabase) GetGroupRoleLevelMemberIDs(ctx context.Context, groupID
182180
return g.cache.GetGroupRoleLevelMemberIDs(ctx, groupID, roleLevel)
183181
}
184182

185-
func (g *groupDatabase) GetGroupAdminLevelMemberIDs(ctx context.Context, groupID string) ([]string, error) {
186-
return g.cache.GetGroupAdminLevelMemberIDs(ctx, groupID)
187-
}
188-
189183
func (g *groupDatabase) CreateGroup(ctx context.Context, groups []*model.Group, groupMembers []*model.GroupMember) error {
190184
if len(groups)+len(groupMembers) == 0 {
191185
return nil

pkg/common/storage/database/group_member.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ type GroupMember interface {
3434
TakeOwner(ctx context.Context, groupID string) (groupMember *model.GroupMember, err error)
3535
SearchMember(ctx context.Context, keyword string, groupID string, pagination pagination.Pagination) (total int64, groupList []*model.GroupMember, err error)
3636
FindRoleLevelUserIDs(ctx context.Context, groupID string, roleLevel int32) ([]string, error)
37-
FindAdminLevelUserIDs(ctx context.Context, groupID string) ([]string, error)
3837
FindUserJoinedGroupID(ctx context.Context, userID string) (groupIDs []string, err error)
3938
TakeGroupMemberNum(ctx context.Context, groupID string) (count int64, err error)
4039
FindUserManagedGroupID(ctx context.Context, userID string) (groupIDs []string, err error)

pkg/common/storage/database/mgo/group_member.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,6 @@ func (g *GroupMemberMgo) FindRoleLevelUserIDs(ctx context.Context, groupID strin
187187
return mongoutil.Find[string](ctx, g.coll, bson.M{"group_id": groupID, "role_level": roleLevel}, options.Find().SetProjection(bson.M{"_id": 0, "user_id": 1}))
188188
}
189189

190-
func (g *GroupMemberMgo) FindAdminLevelUserIDs(ctx context.Context, groupID string) ([]string, error) {
191-
return mongoutil.Find[string](ctx, g.coll,
192-
bson.M{"group_id": groupID, "role_level": bson.M{"$gte": constant.GroupAdmin}},
193-
options.Find().SetProjection(bson.M{"_id": 0, "user_id": 1}))
194-
}
195-
196190
func (g *GroupMemberMgo) SearchMember(ctx context.Context, keyword string, groupID string, pagination pagination.Pagination) (int64, []*model.GroupMember, error) {
197191
filter := bson.M{"group_id": groupID, "nickname": bson.M{"$regex": keyword}}
198192
return mongoutil.FindPage[*model.GroupMember](ctx, g.coll, filter, pagination, options.Find().SetSort(g.memberSort()))

0 commit comments

Comments
 (0)