9
9
import org .apache .commons .lang3 .StringUtils ;
10
10
import org .lowcoder .api .framework .view .ResponseView ;
11
11
import 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 .*;
18
13
import org .lowcoder .api .util .BusinessEventPublisher ;
19
14
import org .lowcoder .api .util .GidService ;
15
+ import org .lowcoder .domain .group .model .GroupMember ;
20
16
import org .lowcoder .domain .group .service .GroupMemberService ;
21
17
import org .lowcoder .domain .group .service .GroupService ;
22
18
import org .lowcoder .domain .organization .model .MemberRole ;
19
+ import org .lowcoder .domain .organization .model .OrgMember ;
20
+ import org .lowcoder .domain .organization .service .OrgMemberService ;
23
21
import org .lowcoder .sdk .exception .BizError ;
24
22
import org .springframework .beans .factory .annotation .Autowired ;
25
23
import org .springframework .web .bind .annotation .PathVariable ;
@@ -46,6 +44,8 @@ public class GroupController implements GroupEndpoints
46
44
private GroupService groupService ;
47
45
@ Autowired
48
46
private GidService gidService ;
47
+ @ Autowired
48
+ private OrgMemberService orgMemberService ;
49
49
50
50
@ Override
51
51
public Mono <ResponseView <GroupView >> create (@ Valid @ RequestBody CreateGroupRequest newGroup ) {
@@ -75,9 +75,40 @@ public Mono<ResponseView<Boolean>> delete(@PathVariable String groupId) {
75
75
}
76
76
77
77
@ 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
+ );
81
112
}
82
113
83
114
0 commit comments