4
4
import org .apache .commons .lang3 .StringUtils ;
5
5
import org .lowcoder .api .authentication .dto .OrganizationDomainCheckResult ;
6
6
import org .lowcoder .api .authentication .service .AuthenticationApiService ;
7
+ import org .lowcoder .api .framework .view .PageResponseView ;
7
8
import org .lowcoder .api .framework .view .ResponseView ;
8
9
import org .lowcoder .api .home .SessionUserService ;
9
10
import org .lowcoder .api .home .UserHomeApiService ;
11
+ import org .lowcoder .api .usermanagement .view .OrgView ;
10
12
import org .lowcoder .api .usermanagement .view .UpdateUserRequest ;
11
13
import org .lowcoder .api .usermanagement .view .UserProfileView ;
12
14
import org .lowcoder .domain .organization .model .MemberRole ;
15
+ import org .lowcoder .domain .organization .model .OrgMember ;
13
16
import org .lowcoder .domain .organization .service .OrgMemberService ;
17
+ import org .lowcoder .domain .organization .service .OrganizationService ;
14
18
import org .lowcoder .domain .user .constant .UserStatusType ;
15
19
import org .lowcoder .domain .user .model .User ;
16
20
import org .lowcoder .domain .user .model .UserDetail ;
23
27
import org .springframework .http .codec .multipart .Part ;
24
28
import org .springframework .web .bind .annotation .*;
25
29
import org .springframework .web .server .ServerWebExchange ;
30
+ import reactor .core .publisher .Flux ;
26
31
import reactor .core .publisher .Mono ;
27
32
28
33
import static org .lowcoder .sdk .exception .BizError .INVALID_USER_STATUS ;
@@ -41,6 +46,7 @@ public class UserController implements UserEndpoints
41
46
private final CommonConfig commonConfig ;
42
47
private final AuthenticationApiService authenticationApiService ;
43
48
private final OrgMemberService orgMemberService ;
49
+ private final OrganizationService organizationService ;
44
50
45
51
@ Override
46
52
public Mono <ResponseView <?>> createUserAndAddToOrg (@ PathVariable String orgId , CreateUserRequest request ) {
@@ -62,6 +68,36 @@ public Mono<ResponseView<?>> getUserProfile(ServerWebExchange exchange) {
62
68
.switchIfEmpty (Mono .just (ResponseView .success (view ))));
63
69
}
64
70
71
+ @ Override
72
+ public Mono <ResponseView <?>> getUserOrgs (ServerWebExchange exchange ,
73
+ @ RequestParam (required = false ) String orgName ,
74
+ @ RequestParam (required = false , defaultValue = "1" ) Integer pageNum ,
75
+ @ RequestParam (required = false , defaultValue = "10" ) Integer pageSize ) {
76
+ return sessionUserService .getVisitor ()
77
+ .flatMap (user -> {
78
+ // Get all active organizations for the user
79
+ Flux <OrgMember > orgMemberFlux = orgMemberService .getAllActiveOrgs (user .getId ());
80
+
81
+ // If orgName filter is provided, filter organizations by name
82
+ if (StringUtils .isNotBlank (orgName )) {
83
+ return orgMemberFlux
84
+ .flatMap (orgMember -> organizationService .getById (orgMember .getOrgId ()))
85
+ .filter (org -> StringUtils .containsIgnoreCase (org .getName (), orgName ))
86
+ .map (OrgView ::new )
87
+ .collectList ()
88
+ .map (orgs -> PageResponseView .success (orgs , pageNum , pageSize , orgs .size ()));
89
+ }
90
+
91
+ // If no filter, return all organizations
92
+ return orgMemberFlux
93
+ .flatMap (orgMember -> organizationService .getById (orgMember .getOrgId ()))
94
+ .map (OrgView ::new )
95
+ .collectList ()
96
+ .map (orgs -> PageResponseView .success (orgs , pageNum , pageSize , orgs .size ()));
97
+ })
98
+ .map (ResponseView ::success );
99
+ }
100
+
65
101
@ Override
66
102
public Mono <ResponseView <Boolean >> newUserGuidanceShown () {
67
103
return sessionUserService .getVisitorId ()
0 commit comments