Skip to content

Commit 6db11bc

Browse files
committed
Fixed pagination for myorg endpoint.
1 parent 6d4cd53 commit 6db11bc

File tree

1 file changed

+17
-20
lines changed
  • server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement

1 file changed

+17
-20
lines changed

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

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import reactor.core.publisher.Flux;
3131
import reactor.core.publisher.Mono;
3232

33+
import java.util.List;
34+
3335
import static org.lowcoder.sdk.exception.BizError.INVALID_USER_STATUS;
3436
import static org.lowcoder.sdk.util.ExceptionUtils.ofError;
3537

@@ -70,30 +72,25 @@ public Mono<ResponseView<?>> getUserProfile(ServerWebExchange exchange) {
7072

7173
@Override
7274
public Mono<ResponseView<?>> getUserOrgs(ServerWebExchange exchange,
73-
@RequestParam(required = false) String orgName,
74-
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
75-
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
75+
@RequestParam(required = false) String orgName,
76+
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
77+
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
7678
return sessionUserService.getVisitor()
7779
.flatMap(user -> {
78-
// Get all active organizations for the user
7980
Flux<OrgMember> orgMemberFlux = orgMemberService.getAllActiveOrgs(user.getId());
80-
81-
// If orgName filter is provided, filter organizations by name
82-
if (StringUtils.isNotBlank(orgName)) {
83-
return orgMemberFlux
84-
.flatMap(orgMember -> organizationService.getById(orgMember.getOrgId()))
85-
.filter(org -> StringUtils.containsIgnoreCase(org.getName(), orgName))
86-
.map(OrgView::new)
87-
.collectList()
88-
.map(orgs -> PageResponseView.success(orgs, pageNum, pageSize, orgs.size()));
89-
}
90-
91-
// If no filter, return all organizations
92-
return orgMemberFlux
81+
82+
Flux<OrgView> orgViewFlux = orgMemberFlux
9383
.flatMap(orgMember -> organizationService.getById(orgMember.getOrgId()))
94-
.map(OrgView::new)
95-
.collectList()
96-
.map(orgs -> PageResponseView.success(orgs, pageNum, pageSize, orgs.size()));
84+
.filter(org -> StringUtils.isBlank(orgName) || StringUtils.containsIgnoreCase(org.getName(), orgName))
85+
.map(OrgView::new);
86+
87+
return orgViewFlux.collectList().map(orgs -> {
88+
int total = orgs.size();
89+
int fromIndex = Math.max((pageNum - 1) * pageSize, 0);
90+
int toIndex = Math.min(fromIndex + pageSize, total);
91+
List<OrgView> pagedOrgs = fromIndex < toIndex ? orgs.subList(fromIndex, toIndex) : List.of();
92+
return PageResponseView.success(pagedOrgs, pageNum, pageSize, total);
93+
});
9794
})
9895
.map(ResponseView::success);
9996
}

0 commit comments

Comments
 (0)