Skip to content

Commit 6ee73d2

Browse files
thomas37-starludomikula
authored andcommitted
Add isCurrentOrg field and sort by value (true first).
1 parent 5467971 commit 6ee73d2

File tree

1 file changed

+26
-3
lines changed
  • server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement

1 file changed

+26
-3
lines changed

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

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import org.lowcoder.api.framework.view.ResponseView;
99
import org.lowcoder.api.home.SessionUserService;
1010
import org.lowcoder.api.home.UserHomeApiService;
11+
import org.lowcoder.api.home.UserHomepageView;
1112
import org.lowcoder.api.usermanagement.view.OrgView;
1213
import org.lowcoder.api.usermanagement.view.UpdateUserRequest;
1314
import org.lowcoder.api.usermanagement.view.UserProfileView;
1415
import org.lowcoder.domain.organization.model.MemberRole;
1516
import org.lowcoder.domain.organization.model.OrgMember;
17+
import org.lowcoder.domain.organization.model.Organization;
1618
import org.lowcoder.domain.organization.service.OrgMemberService;
1719
import org.lowcoder.domain.organization.service.OrganizationService;
1820
import org.lowcoder.domain.user.constant.UserStatusType;
@@ -34,7 +36,10 @@
3436
import reactor.core.publisher.Flux;
3537
import reactor.core.publisher.Mono;
3638

39+
import java.util.HashMap;
3740
import java.util.List;
41+
import java.util.Map;
42+
import java.util.stream.Collectors;
3843

3944
import static org.lowcoder.sdk.exception.BizError.INVALID_USER_STATUS;
4045
import static org.lowcoder.sdk.util.ExceptionUtils.ofError;
@@ -83,13 +88,31 @@ public Mono<ResponseView<?>> getUserOrgs(ServerWebExchange exchange,
8388
.flatMap(user -> {
8489
Pageable pageable = PageRequest.of(pageNum - 1, pageSize, Sort.by(Sort.Direction.DESC, "updatedAt"));
8590
String filter = orgName == null ? "" : orgName;
91+
Mono<String> currentOrgIdMono = sessionUserService.getVisitorOrgMemberCache()
92+
.map(OrgMember::getOrgId);
8693
return organizationService.findUserOrgs(user.getId(), filter, pageable)
8794
.map(OrgView::new)
8895
.collectList()
8996
.zipWith(organizationService.countUserOrgs(user.getId(), filter))
90-
.map(tuple -> PageResponseView.success(
91-
tuple.getT1(), pageNum, pageSize, tuple.getT2().intValue()
92-
));
97+
.zipWith(currentOrgIdMono)
98+
.map(tuple -> {
99+
List<OrgView> orgViews = tuple.getT1().getT1();
100+
long total = tuple.getT1().getT2();
101+
String currentOrgId = tuple.getT2();
102+
103+
// Create a list of maps each containing orgView and isCurrentOrg
104+
List<Map<String, Object>> resultList = orgViews.stream()
105+
.map(orgView -> {
106+
Map<String, Object> map = new HashMap<>();
107+
map.put("orgView", orgView);
108+
map.put("isCurrentOrg", orgView.getOrgId().equals(currentOrgId));
109+
return map;
110+
})
111+
.sorted((a, b) -> Boolean.compare((Boolean) b.get("isCurrentOrg"), (Boolean) a.get("isCurrentOrg")))
112+
.collect(Collectors.toList());
113+
114+
return PageResponseView.success(resultList, pageNum, pageSize, (int) total);
115+
});
93116
})
94117
.map(ResponseView::success);
95118
}

0 commit comments

Comments
 (0)