Skip to content

Commit 831abed

Browse files
committed
modify admin user count for all user group
1 parent 4e11434 commit 831abed

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

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

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.lowcoder.domain.group.service.GroupService;
3131
import org.lowcoder.domain.organization.model.MemberRole;
3232
import org.lowcoder.domain.organization.model.OrgMember;
33+
import org.lowcoder.domain.organization.service.OrgMemberService;
34+
import org.lowcoder.domain.organization.service.OrganizationService;
3335
import org.lowcoder.domain.user.model.User;
3436
import org.lowcoder.domain.user.service.UserService;
3537
import org.lowcoder.infra.util.TupleUtils;
@@ -50,6 +52,8 @@ public class GroupApiServiceImpl implements GroupApiService {
5052
private final UserService userService;
5153
private final GroupService groupService;
5254
private final AbstractBizThresholdChecker bizThresholdChecker;
55+
private final OrganizationService organizationService;
56+
private final OrgMemberService orgMemberService;
5357

5458
@Override
5559
public Mono<GroupMemberAggregateView> getGroupMembers(String groupId, int page, int count) {
@@ -182,6 +186,7 @@ public Mono<List<GroupView>> getGroups() {
182186
return sessionUserService.getVisitorOrgMemberCache()
183187
.flatMap(orgMember -> {
184188
String orgId = orgMember.getOrgId();
189+
Mono<Integer> orgAdminCountMono = orgMemberService.getAllOrgAdmins(orgId).map(List::size);
185190
if (orgMember.isAdmin() || orgMember.isSuperAdmin()) {
186191
MemberRole memberRole;
187192
if(orgMember.isAdmin()) {
@@ -193,27 +198,43 @@ public Mono<List<GroupView>> getGroups() {
193198
.sort()
194199
.flatMapSequential(group -> groupMemberService.getAllGroupAdmin(group.getId())
195200
.zipWith(groupMemberService.getGroupMembers(group.getId(), 0, -1))
201+
.zipWith(orgAdminCountMono, TupleUtils::merge)
196202
.flatMap(tuple -> {
197203
var adminMembers = tuple.getT1();
198204
var users = tuple.getT2();
199-
return GroupView.from(group, memberRole.getValue(), adminMembers.size(), users.size());
205+
var orgAdminCount = tuple.getT3();
206+
if(group.isAllUsersGroup()) {
207+
return GroupView.from(group, memberRole.getValue(), orgAdminCount, users.size());
208+
} else {
209+
return GroupView.from(group, memberRole.getValue(), adminMembers.size(), users.size());
210+
}
200211
})
201212
)
202213
.collectList();
203214
}
204215
return groupMemberService.getUserGroupMembersInOrg(orgId, orgMember.getUserId())
205-
.flatMap(groupMembers -> {
216+
.zipWith(orgAdminCountMono)
217+
.flatMap(tuple -> {
218+
List<GroupMember> groupMembers = tuple.getT1();
219+
int orgAdminCount = tuple.getT2();
206220
List<String> groupIds = collectList(groupMembers, GroupMember::getGroupId);
207221
Map<String, GroupMember> groupMemberMap = collectMap(groupMembers, GroupMember::getGroupId, it -> it);
208222
return groupService.getByIds(groupIds)
209223
.sort()
210224
.flatMapSequential(group -> {
211225
var adminMembers = groupMembers.stream().filter(groupMember -> groupMember.getGroupId().equals(group.getId()) && groupMember.getRole() == MemberRole.ADMIN).toList();
212226
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());
227+
if(group.isAllUsersGroup()) {
228+
return GroupView.from(group,
229+
groupMemberMap.get(group.getId()).getRole().getValue(),
230+
orgAdminCount,
231+
allMembers.size());
232+
} else {
233+
return GroupView.from(group,
234+
groupMemberMap.get(group.getId()).getRole().getValue(),
235+
adminMembers.size(),
236+
allMembers.size());
237+
}
217238
})
218239
.collectList();
219240
});

0 commit comments

Comments
 (0)