Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3cefa1f

Browse files
author
Thomasr
committed
Fixed pagination for myorg endpoint.
1 parent6db11bc commit3cefa1f

File tree

4 files changed

+53
-14
lines changed

4 files changed

+53
-14
lines changed

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
importorg.lowcoder.domain.organization.model.OrganizationState;
77
importorg.springframework.data.mongodb.repository.ReactiveMongoRepository;
88
importorg.springframework.stereotype.Repository;
9+
importorg.springframework.data.domain.Pageable;
10+
importjava.util.List;
911

1012
importreactor.core.publisher.Flux;
1113
importreactor.core.publisher.Mono;
@@ -31,4 +33,7 @@ public interface OrganizationRepository extends ReactiveMongoRepository<Organiza
3133

3234
Flux<Organization>findByOrganizationDomainIsNotNull();
3335
Mono<Boolean>existsBySlug(Stringslug);
36+
37+
Flux<Organization>findByIdInAndNameContainingIgnoreCase(List<String>ids,Stringname,Pageablepageable);
38+
Mono<Long>countByIdInAndNameContainingIgnoreCase(List<String>ids,Stringname);
3439
}

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
importorg.lowcoder.infra.annotation.NonEmptyMono;
99
importorg.lowcoder.infra.annotation.PossibleEmptyMono;
1010
importorg.springframework.http.codec.multipart.Part;
11+
importorg.springframework.data.domain.Pageable;
1112

1213
importreactor.core.publisher.Flux;
1314
importreactor.core.publisher.Mono;
@@ -52,4 +53,7 @@ public interface OrganizationService {
5253
Mono<Boolean>updateCommonSettings(StringorgId,Stringkey,Objectvalue);
5354

5455
Mono<Organization>updateSlug(StringorganizationId,StringnewSlug);
56+
57+
Flux<Organization>findUserOrgs(StringuserId,StringorgName,Pageablepageable);
58+
Mono<Long>countUserOrgs(StringuserId,StringorgName);
5559
}

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
importorg.lowcoder.domain.user.repository.UserRepository;
1919
importorg.lowcoder.domain.util.SlugUtils;
2020
importorg.lowcoder.infra.annotation.PossibleEmptyMono;
21+
importorg.lowcoder.infra.birelation.BiRelationService;
22+
importorg.lowcoder.infra.birelation.BiRelation;
2123
importorg.lowcoder.infra.mongo.MongoUpsertHelper;
2224
importorg.lowcoder.sdk.config.CommonConfig;
2325
importorg.lowcoder.sdk.config.dynamic.Conf;
@@ -31,6 +33,7 @@
3133
importorg.springframework.data.mongodb.core.query.Update;
3234
importorg.springframework.http.codec.multipart.Part;
3335
importorg.springframework.stereotype.Service;
36+
importorg.springframework.data.domain.Pageable;
3437
importreactor.core.publisher.Flux;
3538
importreactor.core.publisher.Mono;
3639

@@ -41,6 +44,7 @@
4144
importstaticorg.lowcoder.domain.organization.model.OrganizationState.DELETED;
4245
importstaticorg.lowcoder.domain.util.QueryDslUtils.fieldName;
4346
importstaticorg.lowcoder.sdk.exception.BizError.UNABLE_TO_FIND_VALID_ORG;
47+
importstaticorg.lowcoder.infra.birelation.BiRelationBizType.ORG_MEMBER;
4448
importstaticorg.lowcoder.sdk.util.ExceptionUtils.deferredError;
4549
importstaticorg.lowcoder.sdk.util.ExceptionUtils.ofError;
4650
importstaticorg.lowcoder.sdk.util.LocaleUtils.getLocale;
@@ -62,6 +66,7 @@ public class OrganizationServiceImpl implements OrganizationService {
6266
privatefinalApplicationContextapplicationContext;
6367
privatefinalCommonConfigcommonConfig;
6468
privatefinalConfigCenterconfigCenter;
69+
privatefinalBiRelationServicebiRelationService;
6570

6671
@PostConstruct
6772
privatevoidinit()
@@ -315,4 +320,31 @@ public Mono<Organization> updateSlug(String organizationId, String newSlug) {
315320
});
316321
});
317322
}
323+
324+
@Override
325+
publicFlux<Organization>findUserOrgs(StringuserId,StringorgName,Pageablepageable) {
326+
returnbiRelationService.getByTargetId(ORG_MEMBER,userId)
327+
.map(BiRelation::getSourceId)
328+
.collectList()
329+
.flatMapMany(orgIds -> {
330+
if (orgIds.isEmpty()) {
331+
returnFlux.empty();
332+
}
333+
returnrepository.findByIdInAndNameContainingIgnoreCase(orgIds,orgName,pageable);
334+
});
335+
}
336+
337+
@Override
338+
publicMono<Long>countUserOrgs(StringuserId,StringorgName) {
339+
Stringfilter =orgName ==null ?"" :orgName;
340+
returnbiRelationService.getByTargetId(ORG_MEMBER,userId)
341+
.map(BiRelation::getSourceId)
342+
.collectList()
343+
.flatMap(orgIds -> {
344+
if (orgIds.isEmpty()) {
345+
returnMono.just(0L);
346+
}
347+
returnrepository.countByIdInAndNameContainingIgnoreCase(orgIds,filter);
348+
});
349+
}
318350
}

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

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727
importorg.springframework.http.codec.multipart.Part;
2828
importorg.springframework.web.bind.annotation.*;
2929
importorg.springframework.web.server.ServerWebExchange;
30+
importorg.springframework.data.domain.Pageable;
31+
importorg.springframework.data.domain.PageRequest;
32+
3033
importreactor.core.publisher.Flux;
3134
importreactor.core.publisher.Mono;
3235

@@ -77,20 +80,15 @@ public Mono<ResponseView<?>> getUserOrgs(ServerWebExchange exchange,
7780
@RequestParam(required =false,defaultValue ="10")IntegerpageSize) {
7881
returnsessionUserService.getVisitor()
7982
.flatMap(user -> {
80-
Flux<OrgMember>orgMemberFlux =orgMemberService.getAllActiveOrgs(user.getId());
81-
82-
Flux<OrgView>orgViewFlux =orgMemberFlux
83-
.flatMap(orgMember ->organizationService.getById(orgMember.getOrgId()))
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-
});
83+
Pageablepageable =PageRequest.of(pageNum -1,pageSize);
84+
Stringfilter =orgName ==null ?"" :orgName;
85+
returnorganizationService.findUserOrgs(user.getId(),filter,pageable)
86+
.map(OrgView::new)
87+
.collectList()
88+
.zipWith(organizationService.countUserOrgs(user.getId(),filter))
89+
.map(tuple ->PageResponseView.success(
90+
tuple.getT1(),pageNum,pageSize,tuple.getT2().intValue()
91+
));
9492
})
9593
.map(ResponseView::success);
9694
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp