@@ -186,7 +186,7 @@ public Mono<List<GroupView>> getGroups() {
186
186
return sessionUserService .getVisitorOrgMemberCache ()
187
187
.flatMap (orgMember -> {
188
188
String orgId = orgMember .getOrgId ();
189
- Mono <Integer > orgAdminCountMono = orgMemberService .getAllOrgAdmins (orgId ). map ( List :: size );
189
+ Mono <List < OrgMember >> orgAdminsMono = orgMemberService .getAllOrgAdmins (orgId );
190
190
if (orgMember .isAdmin () || orgMember .isSuperAdmin ()) {
191
191
MemberRole memberRole ;
192
192
if (orgMember .isAdmin ()) {
@@ -196,44 +196,45 @@ public Mono<List<GroupView>> getGroups() {
196
196
}
197
197
return groupService .getByOrgId (orgId )
198
198
.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 )
202
201
.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 ();
206
205
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 ());
208
207
} 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 () );
210
209
}
211
210
})
212
211
)
213
212
.collectList ();
214
213
}
215
214
return groupMemberService .getUserGroupMembersInOrg (orgId , orgMember .getUserId ())
216
- .zipWith (orgAdminCountMono )
215
+ .zipWith (orgAdminsMono )
217
216
.flatMap (tuple -> {
218
217
List <GroupMember > groupMembers = tuple .getT1 ();
219
- int orgAdminCount = tuple .getT2 ();
218
+ List < OrgMember > orgAdmins = tuple .getT2 ();
220
219
List <String > groupIds = collectList (groupMembers , GroupMember ::getGroupId );
221
220
Map <String , GroupMember > groupMemberMap = collectMap (groupMembers , GroupMember ::getGroupId , it -> it );
222
221
return groupService .getByIds (groupIds )
223
222
.sort ()
224
223
.flatMapSequential (group -> {
225
- var adminMembers = groupMembers .stream ().filter (groupMember -> groupMember .getGroupId ().equals (group .getId ()) && groupMember .getRole () == MemberRole .ADMIN ).toList ();
226
224
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 ();
227
226
if (group .isAllUsersGroup ()) {
228
227
return GroupView .from (group ,
229
228
groupMemberMap .get (group .getId ()).getRole ().getValue (),
230
- orgAdminCount ,
231
- allMembers .size ());
229
+ orgAdmins .size (),
230
+ allMembers .size (),
231
+ allMembers .stream ().map (GroupMember ::getUserId ).toList ());
232
232
} else {
233
233
return GroupView .from (group ,
234
234
groupMemberMap .get (group .getId ()).getRole ().getValue (),
235
235
adminMembers .size (),
236
- allMembers .size ());
236
+ allMembers .size (),
237
+ allMembers .stream ().map (GroupMember ::getUserId ).toList ());
237
238
}
238
239
})
239
240
.collectList ();
0 commit comments