Skip to content

Commit 6854120

Browse files
committed
add pagination to groupmember, orgmember
1 parent a707145 commit 6854120

File tree

10 files changed

+43
-20
lines changed

10 files changed

+43
-20
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/group/service/GroupMemberService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
public interface GroupMemberService {
1414

15-
Mono<List<GroupMember>> getGroupMembers(String groupId, int page, int count);
15+
Mono<List<GroupMember>> getGroupMembers(String groupId);
1616

1717
Mono<Boolean> addMember(String orgId, String groupId, String userId, MemberRole memberRole);
1818

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/group/service/GroupMemberServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class GroupMemberServiceImpl implements GroupMemberService {
2929
private final MongoUpsertHelper mongoUpsertHelper;
3030

3131
@Override
32-
public Mono<List<GroupMember>> getGroupMembers(String groupId, int page, int count) {
32+
public Mono<List<GroupMember>> getGroupMembers(String groupId) {
3333
return biRelationService.getBySourceId(GROUP_MEMBER, groupId)
3434
.map(GroupMember::from)
3535
.collectList();

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/solution/SuggestAppAdminSolutionServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ private Mono<List<String>> getSuggestAdminIds(int limit, List<ResourcePermission
6363

6464
Set<String> adminUserIdSet = newHashSet(adminUserIds);
6565
return Flux.fromIterable(adminGroupIds)
66-
.flatMap(groupId -> groupMemberService.getGroupMembers(groupId, 1, 100))
66+
.flatMap(groupMemberService::getGroupMembers)
6767
.flatMapIterable(list -> list)
6868
.map(GroupMember::getUserId)
6969
.filter(it -> !adminUserIdSet.contains(it))

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/bizthreshold/AbstractBizThresholdChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private boolean orgAppCountBelowThreshold(String orgId, long orgAppCount) {
9898

9999
public Mono<Void> checkMaxDeveloperCount(String orgId, String developGroupId, String userId) {
100100
return orgMemberService.getAllOrgAdmins(orgId)
101-
.zipWith(groupMemberService.getGroupMembers(developGroupId, 1, 100))
101+
.zipWith(groupMemberService.getGroupMembers(developGroupId))
102102
.zipWith(getMaxDeveloperCount(), TupleUtils::merge)
103103
.flatMap(tuple -> {
104104
List<OrgMember> t1 = tuple.getT1();

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/GroupApiServiceImpl.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import com.github.f4b6a3.uuid.UuidCreator;
1818
import lombok.RequiredArgsConstructor;
19+
import org.apache.commons.lang3.tuple.Pair;
1920
import org.lowcoder.api.bizthreshold.AbstractBizThresholdChecker;
2021
import org.lowcoder.api.home.SessionUserService;
2122
import org.lowcoder.api.usermanagement.view.CreateGroupRequest;
@@ -77,16 +78,16 @@ public Mono<GroupMemberAggregateView> getGroupMembers(String groupId, int page,
7778
return groupAndOrgMemberInfo
7879
.filter(this::hasReadPermission)
7980
.switchIfEmpty(deferredError(BizError.NOT_AUTHORIZED, NOT_AUTHORIZED))
80-
.flatMap(groupMember -> groupMemberService.getGroupMembers(groupId, page, count))
81-
.<List<GroupMemberView>> flatMap(members -> {
81+
.flatMap(groupMember -> groupMemberService.getGroupMembers(groupId))
82+
.<Pair<List<GroupMemberView>, Integer>> flatMap(members -> {
8283
if (members.isEmpty()) {
83-
return Mono.just(emptyList());
84+
return Mono.just(Pair.of(emptyList(), 0));
8485
}
8586

8687
List<String> userIds = collectList(members, GroupMember::getUserId);
8788
Mono<Map<String, User>> userMapMono = userService.getByIds(userIds);
88-
return userMapMono.map(map ->
89-
members.stream()
89+
return userMapMono.map(map -> {
90+
var list = members.stream()
9091
.map(orgMember -> {
9192
User user = map.get(orgMember.getUserId());
9293
if (user == null) {
@@ -95,13 +96,20 @@ public Mono<GroupMemberAggregateView> getGroupMembers(String groupId, int page,
9596
return new GroupMemberView(orgMember, user);
9697
})
9798
.filter(Objects::nonNull)
98-
.toList());
99+
.toList();
100+
var pageTotal = list.size();
101+
list = list.subList(page * count, Math.min(page * count + count, pageTotal));
102+
return Pair.of(list, pageTotal);
103+
});
99104
})
100105
.zipWith(visitorRoleMono)
101106
.map(tuple -> {
102-
List<GroupMemberView> t1 = tuple.getT1();
107+
Pair<List<GroupMemberView>, Integer> t1 = tuple.getT1();
103108
return GroupMemberAggregateView.builder()
104-
.members(t1)
109+
.members(t1.getLeft())
110+
.total(t1.getRight())
111+
.pageNum(page)
112+
.pageSize(count)
105113
.visitorRole(tuple.getT2().getValue())
106114
.build();
107115
});
@@ -196,7 +204,7 @@ public Mono<List<GroupView>> getGroups() {
196204
}
197205
return groupService.getByOrgId(orgId)
198206
.sort()
199-
.flatMapSequential(group -> groupMemberService.getGroupMembers(group.getId(), 0, -1)
207+
.flatMapSequential(group -> groupMemberService.getGroupMembers(group.getId())
200208
.zipWith(orgAdminsMono)
201209
.flatMap(tuple -> {
202210
var users = tuple.getT1().stream().filter(user -> user.getRole() != MemberRole.SUPER_ADMIN).toList();

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/GroupController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public Mono<GroupListResponseView<List<GroupView>>> getOrgGroups(@RequestParam(r
8484
.map(OrgMember::getOrgId)
8585
.flatMap(orgId -> orgMemberService.getOrganizationMembers(orgId)
8686
.collectList()
87-
.zipWith(groupService.getDevGroup(orgId).flatMap(devGroup -> groupMemberService.getGroupMembers(devGroup.getId(), 0, -1)))
87+
.zipWith(groupService.getDevGroup(orgId).flatMap(devGroup -> groupMemberService.getGroupMembers(devGroup.getId())))
8888
.map(tuple -> {
8989
List<OrgMember> orgMembers = tuple.getT1();
9090
List<GroupMember> devMembers = tuple.getT2();
@@ -119,7 +119,7 @@ public Mono<GroupListResponseView<List<GroupView>>> getOrgGroups(@RequestParam(r
119119

120120
@Override
121121
public Mono<ResponseView<GroupMemberAggregateView>> getGroupMembers(@PathVariable String groupId,
122-
@RequestParam(name = "page", required = false, defaultValue = "1") int page,
122+
@RequestParam(name = "page", required = false, defaultValue = "0") int page,
123123
@RequestParam(name = "count", required = false, defaultValue = "100") int count) {
124124
String objectId = gidService.convertGroupIdToObjectId(groupId);
125125
return groupApiService.getGroupMembers(objectId, page, count)

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/GroupEndpoints.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public Mono<GroupListResponseView<List<GroupView>>> getOrgGroups(@RequestParam(r
7474
)
7575
@GetMapping("/{groupId}/members")
7676
public Mono<ResponseView<GroupMemberAggregateView>> getGroupMembers(@PathVariable String groupId,
77-
@RequestParam(name = "page", required = false, defaultValue = "1") int page,
77+
@RequestParam(name = "page", required = false, defaultValue = "0") int page,
7878
@RequestParam(name = "count", required = false, defaultValue = "100") int count);
7979

8080
@Operation(

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrgApiServiceImpl.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.extern.slf4j.Slf4j;
44
import org.apache.commons.collections4.SetUtils;
55
import org.apache.commons.lang3.StringUtils;
6+
import org.apache.commons.lang3.tuple.Pair;
67
import org.lowcoder.api.authentication.dto.OrganizationDomainCheckResult;
78
import org.lowcoder.api.bizthreshold.AbstractBizThresholdChecker;
89
import org.lowcoder.api.config.ConfigView;
@@ -92,7 +93,8 @@ private Mono<OrgMemberListView> getOrgMemberListView(String orgId, int page, int
9293
.collect(Collectors.toList());
9394
Mono<Map<String, User>> users = userService.getByIds(userIds);
9495

95-
return users.map(map -> orgMembers.stream()
96+
return users.map(map -> {
97+
var list = orgMembers.stream()
9698
.map(orgMember -> {
9799
User user = map.get(orgMember.getUserId());
98100
if (user == null) {
@@ -102,15 +104,22 @@ private Mono<OrgMemberListView> getOrgMemberListView(String orgId, int page, int
102104
return build(user, orgMember);
103105
})
104106
.filter(Objects::nonNull)
105-
.collect(Collectors.toList())
106-
);
107+
.collect(Collectors.toList());
108+
var pageTotal = list.size();
109+
list = list.subList(page * count, Math.min(page * count + count, pageTotal));
110+
return Pair.of(list, pageTotal);
111+
});
107112
})
108113
.zipWith(sessionUserService.getVisitorOrgMemberCache())
109114
.map(tuple -> {
110-
List<OrgMemberView> orgMemberViews = tuple.getT1();
115+
List<OrgMemberView> orgMemberViews = tuple.getT1().getLeft();
116+
var pageTotal = tuple.getT1().getRight();
111117
OrgMember orgMember = tuple.getT2();
112118
return OrgMemberListView.builder()
113119
.members(orgMemberViews)
120+
.total(pageTotal)
121+
.pageNum(page)
122+
.pageSize(count)
114123
.visitorRole(orgMember.getRole().getValue())
115124
.build();
116125
});

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/view/GroupMemberAggregateView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@
1010
public class GroupMemberAggregateView {
1111
private String visitorRole;
1212
private List<GroupMemberView> members;
13+
private Integer total;
14+
private Integer pageNum;
15+
private Integer pageSize;
1316
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/view/OrgMemberListView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ public class OrgMemberListView {
1313

1414
private String visitorRole;
1515
private List<OrgMemberView> members;
16+
private Integer total;
17+
private Integer pageNum;
18+
private Integer pageSize;
1619

1720
@Getter
1821
@SuperBuilder

0 commit comments

Comments
 (0)