11package org .lowcoder .api .application ;
22
3- import static org .apache .commons .collections4 .SetUtils .emptyIfNull ;
4- import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .APPLICATION_CREATE ;
5- import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .APPLICATION_DELETE ;
6- import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .APPLICATION_RECYCLED ;
7- import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .APPLICATION_RESTORE ;
8- import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .APPLICATION_UPDATE ;
9- import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .APPLICATION_VIEW ;
10- import static org .lowcoder .sdk .exception .BizError .INVALID_PARAMETER ;
11- import static org .lowcoder .sdk .util .ExceptionUtils .ofError ;
12-
13- import java .util .List ;
14-
3+ import lombok .RequiredArgsConstructor ;
154import org .lowcoder .api .application .view .ApplicationInfoView ;
165import org .lowcoder .api .application .view .ApplicationPermissionView ;
176import org .lowcoder .api .application .view .ApplicationView ;
187import org .lowcoder .api .application .view .MarketplaceApplicationInfoView ;
19- // should we not have a AgencyApplicationInfoView
208import org .lowcoder .api .framework .view .PageResponseView ;
219import org .lowcoder .api .framework .view .ResponseView ;
2210import org .lowcoder .api .home .SessionUserService ;
2816import org .lowcoder .domain .application .model .ApplicationRequestType ;
2917import org .lowcoder .domain .application .model .ApplicationStatus ;
3018import org .lowcoder .domain .application .model .ApplicationType ;
19+ import org .lowcoder .domain .folder .service .FolderElementRelationService ;
3120import org .lowcoder .domain .permission .model .ResourceRole ;
3221import org .springframework .web .bind .annotation .PathVariable ;
3322import org .springframework .web .bind .annotation .RequestBody ;
3423import org .springframework .web .bind .annotation .RequestParam ;
3524import org .springframework .web .bind .annotation .RestController ;
36-
37- import lombok .RequiredArgsConstructor ;
3825import reactor .core .publisher .Mono ;
3926
27+ import java .util .List ;
28+
29+ import static org .apache .commons .collections4 .SetUtils .emptyIfNull ;
30+ import static org .lowcoder .plugin .api .event .LowcoderEvent .EventType .*;
31+ import static org .lowcoder .sdk .exception .BizError .INVALID_PARAMETER ;
32+ import static org .lowcoder .sdk .util .ExceptionUtils .ofError ;
33+
4034@ RequiredArgsConstructor
4135@ RestController
4236public class ApplicationController implements ApplicationEndpoints {
@@ -46,6 +40,7 @@ public class ApplicationController implements ApplicationEndpoints {
4640 private final BusinessEventPublisher businessEventPublisher ;
4741 private final SessionUserService sessionUserService ;
4842 private final GidService gidService ;
43+ private final FolderElementRelationService folderElementRelationService ;
4944
5045 @ Override
5146 public Mono <ResponseView <ApplicationView >> create (@ RequestBody CreateApplicationRequest createApplicationRequest ) {
@@ -166,7 +161,15 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
166161 @ RequestParam (required = false , defaultValue = "1" ) Integer pageNum ,
167162 @ RequestParam (required = false , defaultValue = "0" ) Integer pageSize ) {
168163 ApplicationType applicationTypeEnum = applicationType == null ? null : ApplicationType .fromValue (applicationType );
169- var flux = userHomeApiService .getAllAuthorisedApplications4CurrentOrgMember (applicationTypeEnum , applicationStatus , withContainerSize , name , category ).cache ();
164+ var flux = userHomeApiService .getAllAuthorisedApplications4CurrentOrgMember (applicationTypeEnum , applicationStatus , withContainerSize , name , category )
165+ .delayUntil (applicationInfoView -> {
166+ String applicationId = applicationInfoView .getApplicationId ();
167+ return folderElementRelationService .getByElementIds (List .of (applicationId ))
168+ .doOnNext (folderElement -> {
169+ applicationInfoView .setFolderId (folderElement .folderId ());
170+ }).then ();
171+ })
172+ .cache ();
170173 Mono <Long > countMono = flux .count ();
171174 var flux1 = flux .skip ((long ) (pageNum - 1 ) * pageSize );
172175 if (pageSize > 0 ) flux1 = flux1 .take (pageSize );
0 commit comments