Skip to content

Commit 4e11434

Browse files
committed
add group admin count and user count to list api
1 parent 513cd2c commit 4e11434

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

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

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

1617
import com.github.f4b6a3.uuid.UuidCreator;
1718
import lombok.RequiredArgsConstructor;
@@ -35,6 +36,7 @@
3536
import org.lowcoder.sdk.exception.BizError;
3637
import org.springframework.stereotype.Service;
3738

39+
import reactor.core.publisher.Flux;
3840
import reactor.core.publisher.Mono;
3941
import reactor.util.function.Tuple2;
4042

@@ -189,7 +191,14 @@ public Mono<List<GroupView>> getGroups() {
189191
}
190192
return groupService.getByOrgId(orgId)
191193
.sort()
192-
.flatMapSequential(group -> GroupView.from(group, memberRole.getValue()))
194+
.flatMapSequential(group -> groupMemberService.getAllGroupAdmin(group.getId())
195+
.zipWith(groupMemberService.getGroupMembers(group.getId(), 0, -1))
196+
.flatMap(tuple -> {
197+
var adminMembers = tuple.getT1();
198+
var users = tuple.getT2();
199+
return GroupView.from(group, memberRole.getValue(), adminMembers.size(), users.size());
200+
})
201+
)
193202
.collectList();
194203
}
195204
return groupMemberService.getUserGroupMembersInOrg(orgId, orgMember.getUserId())
@@ -198,8 +207,14 @@ public Mono<List<GroupView>> getGroups() {
198207
Map<String, GroupMember> groupMemberMap = collectMap(groupMembers, GroupMember::getGroupId, it -> it);
199208
return groupService.getByIds(groupIds)
200209
.sort()
201-
.flatMapSequential(group -> GroupView.from(group,
202-
groupMemberMap.get(group.getId()).getRole().getValue()))
210+
.flatMapSequential(group -> {
211+
var adminMembers = groupMembers.stream().filter(groupMember -> groupMember.getGroupId().equals(group.getId()) && groupMember.getRole() == MemberRole.ADMIN).toList();
212+
var allMembers = groupMembers.stream().filter(groupMember -> groupMember.getGroupId().equals(group.getId())).toList();
213+
return GroupView.from(group,
214+
groupMemberMap.get(group.getId()).getRole().getValue(),
215+
allMembers.size(),
216+
adminMembers.size());
217+
})
203218
.collectList();
204219
});
205220
});

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
public Mono<ResponseView<GroupView>> create(@Valid @RequestBody CreateGroupRequest newGroup) {
5252
return groupApiService.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
private String dynamicRule;
2424
private boolean isSyncGroup;
2525
private boolean isSyncDelete;
26+
private int adminUserCount;
27+
private int userCount;
2628

27-
public static Mono<GroupView> from(Group group, String memberRole) {
29+
public static Mono<GroupView> from(Group group, String memberRole, int adminCount, int userCount) {
2830
return Mono.deferContextual(contextView -> {
2931
Locale locale = LocaleUtils.getLocale(contextView);
3032
GroupView groupView = 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
return Mono.just(groupView);
4347
});

0 commit comments

Comments
 (0)