Skip to content

Commit d509dc7

Browse files
dragonpooludomikula
authored andcommitted
Fixed pagination for myorg endpoint.
1 parent 68b9513 commit d509dc7

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy