3030import org .lowcoder .domain .group .service .GroupService ;
3131import org .lowcoder .domain .organization .model .MemberRole ;
3232import org .lowcoder .domain .organization .model .OrgMember ;
33+ import org .lowcoder .domain .organization .service .OrgMemberService ;
34+ import org .lowcoder .domain .organization .service .OrganizationService ;
3335import org .lowcoder .domain .user .model .User ;
3436import org .lowcoder .domain .user .service .UserService ;
3537import 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