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

Commitfcf6596

Browse files
authored
Merge pull request#1283 from lowcoder-org/feature/group_api
Group API with adminUserCount & userCount
2 parents513cd2c +831abed commitfcf6596

File tree

3 files changed

+46
-6
lines changed

3 files changed

+46
-6
lines changed

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

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
importjava.util.List;
1313
importjava.util.Map;
1414
importjava.util.Objects;
15+
importjava.util.stream.Collectors;
1516

1617
importcom.github.f4b6a3.uuid.UuidCreator;
1718
importlombok.RequiredArgsConstructor;
@@ -29,12 +30,15 @@
2930
importorg.lowcoder.domain.group.service.GroupService;
3031
importorg.lowcoder.domain.organization.model.MemberRole;
3132
importorg.lowcoder.domain.organization.model.OrgMember;
33+
importorg.lowcoder.domain.organization.service.OrgMemberService;
34+
importorg.lowcoder.domain.organization.service.OrganizationService;
3235
importorg.lowcoder.domain.user.model.User;
3336
importorg.lowcoder.domain.user.service.UserService;
3437
importorg.lowcoder.infra.util.TupleUtils;
3538
importorg.lowcoder.sdk.exception.BizError;
3639
importorg.springframework.stereotype.Service;
3740

41+
importreactor.core.publisher.Flux;
3842
importreactor.core.publisher.Mono;
3943
importreactor.util.function.Tuple2;
4044

@@ -48,6 +52,8 @@ public class GroupApiServiceImpl implements GroupApiService {
4852
privatefinalUserServiceuserService;
4953
privatefinalGroupServicegroupService;
5054
privatefinalAbstractBizThresholdCheckerbizThresholdChecker;
55+
privatefinalOrganizationServiceorganizationService;
56+
privatefinalOrgMemberServiceorgMemberService;
5157

5258
@Override
5359
publicMono<GroupMemberAggregateView>getGroupMembers(StringgroupId,intpage,intcount) {
@@ -180,6 +186,7 @@ public Mono<List<GroupView>> getGroups() {
180186
returnsessionUserService.getVisitorOrgMemberCache()
181187
.flatMap(orgMember -> {
182188
StringorgId =orgMember.getOrgId();
189+
Mono<Integer>orgAdminCountMono =orgMemberService.getAllOrgAdmins(orgId).map(List::size);
183190
if (orgMember.isAdmin() ||orgMember.isSuperAdmin()) {
184191
MemberRolememberRole;
185192
if(orgMember.isAdmin()) {
@@ -189,17 +196,46 @@ public Mono<List<GroupView>> getGroups() {
189196
}
190197
returngroupService.getByOrgId(orgId)
191198
.sort()
192-
.flatMapSequential(group ->GroupView.from(group,memberRole.getValue()))
199+
.flatMapSequential(group ->groupMemberService.getAllGroupAdmin(group.getId())
200+
.zipWith(groupMemberService.getGroupMembers(group.getId(),0, -1))
201+
.zipWith(orgAdminCountMono,TupleUtils::merge)
202+
.flatMap(tuple -> {
203+
varadminMembers =tuple.getT1();
204+
varusers =tuple.getT2();
205+
varorgAdminCount =tuple.getT3();
206+
if(group.isAllUsersGroup()) {
207+
returnGroupView.from(group,memberRole.getValue(),orgAdminCount,users.size());
208+
}else {
209+
returnGroupView.from(group,memberRole.getValue(),adminMembers.size(),users.size());
210+
}
211+
})
212+
)
193213
.collectList();
194214
}
195215
returngroupMemberService.getUserGroupMembersInOrg(orgId,orgMember.getUserId())
196-
.flatMap(groupMembers -> {
216+
.zipWith(orgAdminCountMono)
217+
.flatMap(tuple -> {
218+
List<GroupMember>groupMembers =tuple.getT1();
219+
intorgAdminCount =tuple.getT2();
197220
List<String>groupIds =collectList(groupMembers,GroupMember::getGroupId);
198221
Map<String,GroupMember>groupMemberMap =collectMap(groupMembers,GroupMember::getGroupId,it ->it);
199222
returngroupService.getByIds(groupIds)
200223
.sort()
201-
.flatMapSequential(group ->GroupView.from(group,
202-
groupMemberMap.get(group.getId()).getRole().getValue()))
224+
.flatMapSequential(group -> {
225+
varadminMembers =groupMembers.stream().filter(groupMember ->groupMember.getGroupId().equals(group.getId()) &&groupMember.getRole() ==MemberRole.ADMIN).toList();
226+
varallMembers =groupMembers.stream().filter(groupMember ->groupMember.getGroupId().equals(group.getId())).toList();
227+
if(group.isAllUsersGroup()) {
228+
returnGroupView.from(group,
229+
groupMemberMap.get(group.getId()).getRole().getValue(),
230+
orgAdminCount,
231+
allMembers.size());
232+
}else {
233+
returnGroupView.from(group,
234+
groupMemberMap.get(group.getId()).getRole().getValue(),
235+
adminMembers.size(),
236+
allMembers.size());
237+
}
238+
})
203239
.collectList();
204240
});
205241
});

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class GroupController implements GroupEndpoints
5151
publicMono<ResponseView<GroupView>>create(@Valid@RequestBodyCreateGroupRequestnewGroup) {
5252
returngroupApiService.create(newGroup)
5353
.delayUntil(group ->businessEventPublisher.publishGroupCreateEvent(group))
54-
.flatMap(group ->GroupView.from(group,MemberRole.ADMIN.getValue()))
54+
.flatMap(group ->GroupView.from(group,MemberRole.ADMIN.getValue(),1,1))
5555
.map(ResponseView::success);
5656
}
5757

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ public class GroupView {
2323
privateStringdynamicRule;
2424
privatebooleanisSyncGroup;
2525
privatebooleanisSyncDelete;
26+
privateintadminUserCount;
27+
privateintuserCount;
2628

27-
publicstaticMono<GroupView>from(Groupgroup,StringmemberRole) {
29+
publicstaticMono<GroupView>from(Groupgroup,StringmemberRole,intadminCount,intuserCount) {
2830
returnMono.deferContextual(contextView -> {
2931
Localelocale =LocaleUtils.getLocale(contextView);
3032
GroupViewgroupView =GroupView.builder()
@@ -38,6 +40,8 @@ public static Mono<GroupView> from(Group group, String memberRole) {
3840
.dynamicRule(group.getDynamicRule())
3941
.isSyncGroup(group.isSyncGroup())
4042
.isSyncDelete(group.isSyncDeleted())
43+
.adminUserCount(adminCount)
44+
.userCount(userCount)
4145
.build();
4246
returnMono.just(groupView);
4347
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp