Skip to content

Commit 1006e08

Browse files
dragonpooludomikula
authored andcommitted
add endpoint "user/myorg"
1 parent c3454f3 commit 1006e08

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)