99import org .apache .commons .lang3 .StringUtils ;
1010import org .lowcoder .api .framework .view .ResponseView ;
1111import org .lowcoder .api .home .SessionUserService ;
12- import org .lowcoder .api .usermanagement .view .AddMemberRequest ;
13- import org .lowcoder .api .usermanagement .view .CreateGroupRequest ;
14- import org .lowcoder .api .usermanagement .view .GroupMemberAggregateView ;
15- import org .lowcoder .api .usermanagement .view .GroupView ;
16- import org .lowcoder .api .usermanagement .view .UpdateGroupRequest ;
17- import org .lowcoder .api .usermanagement .view .UpdateRoleRequest ;
12+ import org .lowcoder .api .usermanagement .view .*;
1813import org .lowcoder .api .util .BusinessEventPublisher ;
1914import org .lowcoder .api .util .GidService ;
15+ import org .lowcoder .domain .group .model .GroupMember ;
2016import org .lowcoder .domain .group .service .GroupMemberService ;
2117import org .lowcoder .domain .group .service .GroupService ;
2218import org .lowcoder .domain .organization .model .MemberRole ;
19+ import org .lowcoder .domain .organization .model .OrgMember ;
20+ import org .lowcoder .domain .organization .service .OrgMemberService ;
2321import org .lowcoder .sdk .exception .BizError ;
2422import org .springframework .beans .factory .annotation .Autowired ;
2523import org .springframework .web .bind .annotation .PathVariable ;
@@ -46,6 +44,8 @@ public class GroupController implements GroupEndpoints
4644 private GroupService groupService ;
4745 @ Autowired
4846 private GidService gidService ;
47+ @ Autowired
48+ private OrgMemberService orgMemberService ;
4949
5050 @ Override
5151 public Mono <ResponseView <GroupView >> create (@ Valid @ RequestBody CreateGroupRequest newGroup ) {
@@ -75,9 +75,40 @@ public Mono<ResponseView<Boolean>> delete(@PathVariable String groupId) {
7575 }
7676
7777 @ Override
78- public Mono <ResponseView <List <GroupView >>> getOrgGroups () {
79- return groupApiService .getGroups ()
80- .map (ResponseView ::success );
78+ public Mono <GroupListResponseView <List <GroupView >>> getOrgGroups () {
79+ return groupApiService .getGroups ().flatMap (groupList -> {
80+ if (groupList .isEmpty ()) return Mono .just (new GroupListResponseView <>(ResponseView .SUCCESS ,
81+ "" , List .of (), 0 , 0 , 0 , 0 ));
82+ return sessionUserService .getVisitorOrgMemberCache ()
83+ .map (OrgMember ::getOrgId )
84+ .flatMap (orgId -> orgMemberService .getOrganizationMembers (orgId )
85+ .collectList ()
86+ .zipWith (groupService .getDevGroup (orgId ).flatMap (devGroup -> groupMemberService .getGroupMembers (devGroup .getId (), 0 , -1 )))
87+ .map (tuple -> {
88+ List <OrgMember > orgMembers = tuple .getT1 ();
89+ List <GroupMember > devMembers = tuple .getT2 ();
90+ int totalAdmins = orgMembers .stream ().filter (OrgMember ::isAdmin ).toList ().size ();
91+ int totalAdminsAndDevelopers = orgMembers .stream ()
92+ .filter (orgMember -> orgMember .isAdmin () ||
93+ devMembers .stream ().anyMatch (devMember -> devMember .getUserId ().equals (orgMember .getUserId ()))).toList ().size ();
94+ int totalDevelopersOnly = orgMembers .stream ()
95+ .filter (orgMember -> !orgMember .isAdmin () && !orgMember .isSuperAdmin () &&
96+ devMembers .stream ().anyMatch (devMember -> devMember .getUserId ().equals (orgMember .getUserId ()))).toList ().size ();
97+ int totalOtherMembers = orgMembers .stream ()
98+ .filter (orgMember -> !orgMember .isAdmin () && !orgMember .isSuperAdmin () &&
99+ devMembers .stream ().noneMatch (devMember -> devMember .getUserId ().equals (orgMember .getUserId ()))).toList ().size ();
100+
101+ return new GroupListResponseView <>(ResponseView .SUCCESS ,
102+ "" ,
103+ groupList ,
104+ totalAdmins ,
105+ totalAdminsAndDevelopers ,
106+ totalDevelopersOnly ,
107+ totalOtherMembers );
108+ })
109+ );
110+ }
111+ );
81112 }
82113
83114
0 commit comments