|
30 | 30 | importreactor.core.publisher.Flux;
|
31 | 31 | importreactor.core.publisher.Mono;
|
32 | 32 |
|
| 33 | +importjava.util.List; |
| 34 | + |
33 | 35 | importstaticorg.lowcoder.sdk.exception.BizError.INVALID_USER_STATUS;
|
34 | 36 | importstaticorg.lowcoder.sdk.util.ExceptionUtils.ofError;
|
35 | 37 |
|
@@ -70,30 +72,25 @@ public Mono<ResponseView<?>> getUserProfile(ServerWebExchange exchange) {
|
70 | 72 |
|
71 | 73 | @Override
|
72 | 74 | publicMono<ResponseView<?>>getUserOrgs(ServerWebExchangeexchange,
|
73 |
| -@RequestParam(required =false)StringorgName, |
74 |
| -@RequestParam(required =false,defaultValue ="1")IntegerpageNum, |
75 |
| -@RequestParam(required =false,defaultValue ="10")IntegerpageSize) { |
| 75 | +@RequestParam(required =false)StringorgName, |
| 76 | +@RequestParam(required =false,defaultValue ="1")IntegerpageNum, |
| 77 | +@RequestParam(required =false,defaultValue ="10")IntegerpageSize) { |
76 | 78 | returnsessionUserService.getVisitor()
|
77 | 79 | .flatMap(user -> {
|
78 |
| -// Get all active organizations for the user |
79 | 80 | Flux<OrgMember>orgMemberFlux =orgMemberService.getAllActiveOrgs(user.getId());
|
80 |
| - |
81 |
| -// If orgName filter is provided, filter organizations by name |
82 |
| -if (StringUtils.isNotBlank(orgName)) { |
83 |
| -returnorgMemberFlux |
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 |
| -returnorgMemberFlux |
| 81 | + |
| 82 | +Flux<OrgView>orgViewFlux =orgMemberFlux |
93 | 83 | .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 | +returnorgViewFlux.collectList().map(orgs -> { |
| 88 | +inttotal =orgs.size(); |
| 89 | +intfromIndex =Math.max((pageNum -1) *pageSize,0); |
| 90 | +inttoIndex =Math.min(fromIndex +pageSize,total); |
| 91 | +List<OrgView>pagedOrgs =fromIndex <toIndex ?orgs.subList(fromIndex,toIndex) :List.of(); |
| 92 | +returnPageResponseView.success(pagedOrgs,pageNum,pageSize,total); |
| 93 | + }); |
97 | 94 | })
|
98 | 95 | .map(ResponseView::success);
|
99 | 96 | }
|
|