Skip to content

Commit 5df4521

Browse files
committed
add endpoint "user/myorg"
1 parent c3454f3 commit 5df4521

File tree

3 files changed

+50
-22
lines changed

3 files changed

+50
-22
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/UserHomeApiServiceImpl.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -165,28 +165,7 @@ public Mono<UserHomepageView> getUserHomePageView(ApplicationType applicationTyp
165165
.zipWith(folderApiService.getElements(null, applicationType, null, null).collectList())
166166
.map(tuple2 -> {
167167
Organization organization = tuple2.getT1();
168-
List<?> list = tuple2.getT2();
169-
List<ApplicationInfoView> applicationInfoViews = list.stream()
170-
.map(o -> {
171-
if (o instanceof ApplicationInfoView applicationInfoView) {
172-
return applicationInfoView;
173-
}
174-
return null;
175-
})
176-
.filter(Objects::nonNull)
177-
.toList();
178-
List<FolderInfoView> folderInfoViews = list.stream()
179-
.map(o -> {
180-
if (o instanceof FolderInfoView folderInfoView) {
181-
return folderInfoView;
182-
}
183-
return null;
184-
})
185-
.filter(Objects::nonNull)
186-
.toList();
187168
userHomepageVO.setOrganization(organization);
188-
userHomepageVO.setHomeApplicationViews(applicationInfoViews);
189-
userHomepageVO.setFolderInfoViews(folderInfoViews);
190169
return userHomepageVO;
191170
});
192171
});

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/UserController.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44
import org.apache.commons.lang3.StringUtils;
55
import org.lowcoder.api.authentication.dto.OrganizationDomainCheckResult;
66
import org.lowcoder.api.authentication.service.AuthenticationApiService;
7+
import org.lowcoder.api.framework.view.PageResponseView;
78
import org.lowcoder.api.framework.view.ResponseView;
89
import org.lowcoder.api.home.SessionUserService;
910
import org.lowcoder.api.home.UserHomeApiService;
11+
import org.lowcoder.api.usermanagement.view.OrgView;
1012
import org.lowcoder.api.usermanagement.view.UpdateUserRequest;
1113
import org.lowcoder.api.usermanagement.view.UserProfileView;
1214
import org.lowcoder.domain.organization.model.MemberRole;
15+
import org.lowcoder.domain.organization.model.OrgMember;
1316
import org.lowcoder.domain.organization.service.OrgMemberService;
17+
import org.lowcoder.domain.organization.service.OrganizationService;
1418
import org.lowcoder.domain.user.constant.UserStatusType;
1519
import org.lowcoder.domain.user.model.User;
1620
import org.lowcoder.domain.user.model.UserDetail;
@@ -23,6 +27,7 @@
2327
import org.springframework.http.codec.multipart.Part;
2428
import org.springframework.web.bind.annotation.*;
2529
import org.springframework.web.server.ServerWebExchange;
30+
import reactor.core.publisher.Flux;
2631
import reactor.core.publisher.Mono;
2732

2833
import 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()

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/UserEndpoints.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ public interface UserEndpoints
4848
@GetMapping("/me")
4949
public Mono<ResponseView<?>> getUserProfile(ServerWebExchange exchange);
5050

51+
@Operation(
52+
tags = {TAG_USER_MANAGEMENT},
53+
operationId = "getUserOrgs",
54+
summary = "Get User Organizations",
55+
description = "Retrieve a paginated list of organizations for the current user, filtered by organization name if provided."
56+
)
57+
@GetMapping("/myorg")
58+
public Mono<ResponseView<?>> getUserOrgs(
59+
ServerWebExchange exchange,
60+
@RequestParam(required = false) String orgName,
61+
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
62+
@RequestParam(required = false, defaultValue = "10") Integer pageSize
63+
);
64+
5165
@Operation(
5266
tags = TAG_USER_MANAGEMENT,
5367
operationId = "newUserGuidanceShown",
@@ -218,5 +232,4 @@ public record MarkUserStatusRequest(String type, Object value) {
218232

219233
public record CreateUserRequest(String email, String password) {
220234
}
221-
222235
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy