44import org .apache .commons .lang3 .StringUtils ;
55import org .lowcoder .api .authentication .dto .OrganizationDomainCheckResult ;
66import org .lowcoder .api .authentication .service .AuthenticationApiService ;
7+ import org .lowcoder .api .framework .view .PageResponseView ;
78import org .lowcoder .api .framework .view .ResponseView ;
89import org .lowcoder .api .home .SessionUserService ;
910import org .lowcoder .api .home .UserHomeApiService ;
11+ import org .lowcoder .api .usermanagement .view .OrgView ;
1012import org .lowcoder .api .usermanagement .view .UpdateUserRequest ;
1113import org .lowcoder .api .usermanagement .view .UserProfileView ;
1214import org .lowcoder .domain .organization .model .MemberRole ;
15+ import org .lowcoder .domain .organization .model .OrgMember ;
1316import org .lowcoder .domain .organization .service .OrgMemberService ;
17+ import org .lowcoder .domain .organization .service .OrganizationService ;
1418import org .lowcoder .domain .user .constant .UserStatusType ;
1519import org .lowcoder .domain .user .model .User ;
1620import org .lowcoder .domain .user .model .UserDetail ;
2327import org .springframework .http .codec .multipart .Part ;
2428import org .springframework .web .bind .annotation .*;
2529import org .springframework .web .server .ServerWebExchange ;
30+ import reactor .core .publisher .Flux ;
2631import reactor .core .publisher .Mono ;
2732
2833import static org .lowcoder .sdk .exception .BizError .INVALID_USER_STATUS ;
@@ -41,6 +46,7 @@ public class UserController implements UserEndpoints
4146 private final CommonConfig commonConfig ;
4247 private final AuthenticationApiService authenticationApiService ;
4348 private final OrgMemberService orgMemberService ;
49+ private final OrganizationService organizationService ;
4450
4551 @ Override
4652 public Mono <ResponseView <?>> createUserAndAddToOrg (@ PathVariable String orgId , CreateUserRequest request ) {
@@ -62,6 +68,36 @@ public Mono<ResponseView<?>> getUserProfile(ServerWebExchange exchange) {
6268 .switchIfEmpty (Mono .just (ResponseView .success (view ))));
6369 }
6470
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+
65101 @ Override
66102 public Mono <ResponseView <Boolean >> newUserGuidanceShown () {
67103 return sessionUserService .getVisitorId ()
0 commit comments