1111import static org .lowcoder .sdk .util .ExceptionUtils .ofError ;
1212
1313import java .util .List ;
14- import java .util .Map ;
15- import java .util .Set ;
1614
17- import javax .annotation .Nullable ;
18-
19- import org .apache .commons .lang3 .BooleanUtils ;
2015import org .lowcoder .api .application .view .ApplicationInfoView ;
2116import org .lowcoder .api .application .view .ApplicationPermissionView ;
2217import org .lowcoder .api .application .view .ApplicationView ;
2823import org .lowcoder .domain .application .model .ApplicationStatus ;
2924import org .lowcoder .domain .application .model .ApplicationType ;
3025import org .lowcoder .domain .permission .model .ResourceRole ;
31- import org .lowcoder .infra .constant .NewUrl ;
32- import org .lowcoder .infra .constant .Url ;
33- import org .springframework .beans .factory .annotation .Autowired ;
34- import org .springframework .web .bind .annotation .DeleteMapping ;
35- import org .springframework .web .bind .annotation .GetMapping ;
3626import org .springframework .web .bind .annotation .PathVariable ;
37- import org .springframework .web .bind .annotation .PostMapping ;
38- import org .springframework .web .bind .annotation .PutMapping ;
3927import org .springframework .web .bind .annotation .RequestBody ;
40- import org .springframework .web .bind .annotation .RequestMapping ;
4128import org .springframework .web .bind .annotation .RequestParam ;
4229import org .springframework .web .bind .annotation .RestController ;
4330
44- import com .fasterxml .jackson .annotation .JsonProperty ;
45-
46- import lombok .extern .slf4j .Slf4j ;
31+ import lombok .RequiredArgsConstructor ;
4732import reactor .core .publisher .Mono ;
4833
49- @ Slf4j
34+ @ RequiredArgsConstructor
5035@ RestController
51- @ RequestMapping (value = {Url .APPLICATION_URL , NewUrl .APPLICATION_URL })
52- public class ApplicationController {
53-
54- @ Autowired
55- private UserHomeApiService userHomeApiService ;
36+ public class ApplicationController implements ApplicationEndpoints {
5637
57- @ Autowired
58- private ApplicationApiService applicationApiService ;
59- @ Autowired
60- private BusinessEventPublisher businessEventPublisher ;
38+ private final UserHomeApiService userHomeApiService ;
39+ private final ApplicationApiService applicationApiService ;
40+ private final BusinessEventPublisher businessEventPublisher ;
6141
62- @ PostMapping
42+ @ Override
6343 public Mono <ResponseView <ApplicationView >> create (@ RequestBody CreateApplicationRequest createApplicationRequest ) {
6444 return applicationApiService .create (createApplicationRequest )
6545 .delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_CREATE ))
6646 .map (ResponseView ::success );
6747 }
6848
69- @ PostMapping ( "/createFromTemplate" )
49+ @ Override
7050 public Mono <ResponseView <ApplicationView >> createFromTemplate (@ RequestParam String templateId ) {
7151 return applicationApiService .createFromTemplate (templateId )
7252 .delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_CREATE ))
7353 .map (ResponseView ::success );
7454 }
7555
76- @ PutMapping ( "/recycle/{applicationId}" )
56+ @ Override
7757 public Mono <ResponseView <Boolean >> recycle (@ PathVariable String applicationId ) {
7858 return applicationApiService .recycle (applicationId )
7959 .delayUntil (__ -> businessEventPublisher .publishApplicationCommonEvent (applicationId , null , APPLICATION_RECYCLED ))
8060 .map (ResponseView ::success );
8161 }
8262
83- @ PutMapping ( "/restore/{applicationId}" )
63+ @ Override
8464 public Mono <ResponseView <Boolean >> restore (@ PathVariable String applicationId ) {
8565 return applicationApiService .restore (applicationId )
8666 .delayUntil (__ -> businessEventPublisher .publishApplicationCommonEvent (applicationId , null , APPLICATION_RESTORE ))
8767 .map (ResponseView ::success );
8868 }
8969
90- @ GetMapping ( "/recycle/list" )
70+ @ Override
9171 public Mono <ResponseView <List <ApplicationInfoView >>> getRecycledApplications () {
9272 return applicationApiService .getRecycledApplications ()
9373 .collectList ()
9474 .map (ResponseView ::success );
9575 }
9676
97- @ DeleteMapping ( "/{applicationId}" )
77+ @ Override
9878 public Mono <ResponseView <ApplicationView >> delete (@ PathVariable String applicationId ) {
9979 return applicationApiService .delete (applicationId )
10080 .delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_DELETE ))
10181 .map (ResponseView ::success );
10282 }
10383
104- @ GetMapping ( "/{applicationId}" )
84+ @ Override
10585 public Mono <ResponseView <ApplicationView >> getEditingApplication (@ PathVariable String applicationId ) {
10686 return applicationApiService .getEditingApplication (applicationId )
10787 .delayUntil (__ -> applicationApiService .updateUserApplicationLastViewTime (applicationId ))
10888 .map (ResponseView ::success );
10989 }
11090
111- @ GetMapping ( "/{applicationId}/view" )
91+ @ Override
11292 public Mono <ResponseView <ApplicationView >> getPublishedApplication (@ PathVariable String applicationId ) {
11393 return applicationApiService .getPublishedApplication (applicationId )
11494 .delayUntil (applicationView -> applicationApiService .updateUserApplicationLastViewTime (applicationId ))
11595 .delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , VIEW ))
11696 .map (ResponseView ::success );
11797 }
11898
119- @ PutMapping ( "/{applicationId}" )
99+ @ Override
120100 public Mono <ResponseView <ApplicationView >> update (@ PathVariable String applicationId ,
121101 @ RequestBody Application newApplication ) {
122102 return applicationApiService .update (applicationId , newApplication )
123103 .delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_UPDATE ))
124104 .map (ResponseView ::success );
125105 }
126106
127- @ PostMapping ( "/{applicationId}/publish" )
107+ @ Override
128108 public Mono <ResponseView <ApplicationView >> publish (@ PathVariable String applicationId ) {
129109 return applicationApiService .publish (applicationId )
130110 .map (ResponseView ::success );
131111 }
132112
133- @ GetMapping ( "/home" )
113+ @ Override
134114 public Mono <ResponseView <UserHomepageView >> getUserHomePage (@ RequestParam (required = false , defaultValue = "0" ) int applicationType ) {
135115 ApplicationType type = ApplicationType .fromValue (applicationType );
136116 return userHomeApiService .getUserHomePageView (type )
137117 .map (ResponseView ::success );
138118 }
139119
140- @ GetMapping ( "/list" )
120+ @ Override
141121 public Mono <ResponseView <List <ApplicationInfoView >>> getApplications (@ RequestParam (required = false ) Integer applicationType ,
142122 @ RequestParam (required = false ) ApplicationStatus applicationStatus ,
143123 @ RequestParam (defaultValue = "true" ) boolean withContainerSize ) {
@@ -147,7 +127,7 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
147127 .map (ResponseView ::success );
148128 }
149129
150- @ PutMapping ( "/{applicationId}/permissions/{permissionId}" )
130+ @ Override
151131 public Mono <ResponseView <Boolean >> updatePermission (@ PathVariable String applicationId ,
152132 @ PathVariable String permissionId ,
153133 @ RequestBody UpdatePermissionRequest updatePermissionRequest ) {
@@ -160,7 +140,7 @@ public Mono<ResponseView<Boolean>> updatePermission(@PathVariable String applica
160140 .map (ResponseView ::success );
161141 }
162142
163- @ DeleteMapping ( "/{applicationId}/permissions/{permissionId}" )
143+ @ Override
164144 public Mono <ResponseView <Boolean >> removePermission (
165145 @ PathVariable String applicationId ,
166146 @ PathVariable String permissionId ) {
@@ -169,7 +149,7 @@ public Mono<ResponseView<Boolean>> removePermission(
169149 .map (ResponseView ::success );
170150 }
171151
172- @ PutMapping ( "/{applicationId}/permissions" )
152+ @ Override
173153 public Mono <ResponseView <Boolean >> grantPermission (
174154 @ PathVariable String applicationId ,
175155 @ RequestBody BatchAddPermissionRequest request ) {
@@ -185,37 +165,16 @@ public Mono<ResponseView<Boolean>> grantPermission(
185165 }
186166
187167
188- @ GetMapping ( "/{applicationId}/permissions" )
168+ @ Override
189169 public Mono <ResponseView <ApplicationPermissionView >> getApplicationPermissions (@ PathVariable String applicationId ) {
190170 return applicationApiService .getApplicationPermissions (applicationId )
191171 .map (ResponseView ::success );
192172 }
193173
194- @ PutMapping ( "/{applicationId}/public-to-all" )
174+ @ Override
195175 public Mono <ResponseView <Boolean >> setApplicationPublicToAll (@ PathVariable String applicationId ,
196176 @ RequestBody ApplicationPublicToAllRequest request ) {
197177 return applicationApiService .setApplicationPublicToAll (applicationId , request .publicToAll ())
198178 .map (ResponseView ::success );
199179 }
200-
201- private record BatchAddPermissionRequest (String role , Set <String > userIds , Set <String > groupIds ) {
202- }
203-
204- private record ApplicationPublicToAllRequest (Boolean publicToAll ) {
205- @ Override
206- public Boolean publicToAll () {
207- return BooleanUtils .isTrue (publicToAll );
208- }
209- }
210-
211- private record UpdatePermissionRequest (String role ) {
212- }
213-
214- public record CreateApplicationRequest (@ JsonProperty ("orgId" ) String organizationId ,
215- String name ,
216- Integer applicationType ,
217- Map <String , Object > publishedApplicationDSL ,
218- Map <String , Object > editingApplicationDSL ,
219- @ Nullable String folderId ) {
220- }
221180}
0 commit comments