@@ -186,7 +186,7 @@ public Mono<List<GroupView>> getGroups() {
186186 return sessionUserService .getVisitorOrgMemberCache ()
187187 .flatMap (orgMember -> {
188188 String orgId = orgMember .getOrgId ();
189- Mono <Integer > orgAdminCountMono = orgMemberService .getAllOrgAdmins (orgId ). map ( List :: size );
189+ Mono <List < OrgMember >> orgAdminsMono = orgMemberService .getAllOrgAdmins (orgId );
190190 if (orgMember .isAdmin () || orgMember .isSuperAdmin ()) {
191191 MemberRole memberRole ;
192192 if (orgMember .isAdmin ()) {
@@ -196,44 +196,45 @@ public Mono<List<GroupView>> getGroups() {
196196 }
197197 return groupService .getByOrgId (orgId )
198198 .sort ()
199- .flatMapSequential (group -> groupMemberService .getAllGroupAdmin (group .getId ())
200- .zipWith (groupMemberService .getGroupMembers (group .getId (), 0 , -1 ))
201- .zipWith (orgAdminCountMono , TupleUtils ::merge )
199+ .flatMapSequential (group -> groupMemberService .getGroupMembers (group .getId (), 0 , -1 )
200+ .zipWith (orgAdminsMono )
202201 .flatMap (tuple -> {
203- var adminMembers = tuple .getT1 ();
204- var users = tuple .getT2 ();
205- var orgAdminCount = tuple . getT3 ();
202+ var users = tuple .getT1 ();
203+ var orgAdmins = tuple .getT2 ();
204+ var adminMembers = orgAdmins . stream (). filter ( orgAdmin -> users . stream (). anyMatch ( member -> member . getUserId (). equals ( orgAdmin . getUserId ()))). toList ();
206205 if (group .isAllUsersGroup ()) {
207- return GroupView .from (group , memberRole .getValue (), orgAdminCount , users .size ());
206+ return GroupView .from (group , memberRole .getValue (), orgAdmins . size () , users .size (), users . stream (). map ( GroupMember :: getUserId ). toList ());
208207 } else {
209- return GroupView .from (group , memberRole .getValue (), adminMembers .size (), users .size ());
208+ return GroupView .from (group , memberRole .getValue (), adminMembers .size (), users .size (), users . stream (). map ( GroupMember :: getUserId ). toList () );
210209 }
211210 })
212211 )
213212 .collectList ();
214213 }
215214 return groupMemberService .getUserGroupMembersInOrg (orgId , orgMember .getUserId ())
216- .zipWith (orgAdminCountMono )
215+ .zipWith (orgAdminsMono )
217216 .flatMap (tuple -> {
218217 List <GroupMember > groupMembers = tuple .getT1 ();
219- int orgAdminCount = tuple .getT2 ();
218+ List < OrgMember > orgAdmins = tuple .getT2 ();
220219 List <String > groupIds = collectList (groupMembers , GroupMember ::getGroupId );
221220 Map <String , GroupMember > groupMemberMap = collectMap (groupMembers , GroupMember ::getGroupId , it -> it );
222221 return groupService .getByIds (groupIds )
223222 .sort ()
224223 .flatMapSequential (group -> {
225- var adminMembers = groupMembers .stream ().filter (groupMember -> groupMember .getGroupId ().equals (group .getId ()) && groupMember .getRole () == MemberRole .ADMIN ).toList ();
226224 var allMembers = groupMembers .stream ().filter (groupMember -> groupMember .getGroupId ().equals (group .getId ())).toList ();
225+ var adminMembers = orgAdmins .stream ().filter (orgAdmin -> allMembers .stream ().anyMatch (member -> member .getUserId ().equals (orgAdmin .getUserId ()))).toList ();
227226 if (group .isAllUsersGroup ()) {
228227 return GroupView .from (group ,
229228 groupMemberMap .get (group .getId ()).getRole ().getValue (),
230- orgAdminCount ,
231- allMembers .size ());
229+ orgAdmins .size (),
230+ allMembers .size (),
231+ allMembers .stream ().map (GroupMember ::getUserId ).toList ());
232232 } else {
233233 return GroupView .from (group ,
234234 groupMemberMap .get (group .getId ()).getRole ().getValue (),
235235 adminMembers .size (),
236- allMembers .size ());
236+ allMembers .size (),
237+ allMembers .stream ().map (GroupMember ::getUserId ).toList ());
237238 }
238239 })
239240 .collectList ();
0 commit comments