11
11
import static org .lowcoder .sdk .util .ExceptionUtils .ofError ;
12
12
13
13
import java .util .List ;
14
- import java .util .Map ;
15
- import java .util .Set ;
16
14
17
- import javax .annotation .Nullable ;
18
-
19
- import org .apache .commons .lang3 .BooleanUtils ;
20
15
import org .lowcoder .api .application .view .ApplicationInfoView ;
21
16
import org .lowcoder .api .application .view .ApplicationPermissionView ;
22
17
import org .lowcoder .api .application .view .ApplicationView ;
28
23
import org .lowcoder .domain .application .model .ApplicationStatus ;
29
24
import org .lowcoder .domain .application .model .ApplicationType ;
30
25
import 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 ;
36
26
import org .springframework .web .bind .annotation .PathVariable ;
37
- import org .springframework .web .bind .annotation .PostMapping ;
38
- import org .springframework .web .bind .annotation .PutMapping ;
39
27
import org .springframework .web .bind .annotation .RequestBody ;
40
- import org .springframework .web .bind .annotation .RequestMapping ;
41
28
import org .springframework .web .bind .annotation .RequestParam ;
42
29
import org .springframework .web .bind .annotation .RestController ;
43
30
44
- import com .fasterxml .jackson .annotation .JsonProperty ;
45
-
46
- import lombok .extern .slf4j .Slf4j ;
31
+ import lombok .RequiredArgsConstructor ;
47
32
import reactor .core .publisher .Mono ;
48
33
49
- @ Slf4j
34
+ @ RequiredArgsConstructor
50
35
@ 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 {
56
37
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 ;
61
41
62
- @ PostMapping
42
+ @ Override
63
43
public Mono <ResponseView <ApplicationView >> create (@ RequestBody CreateApplicationRequest createApplicationRequest ) {
64
44
return applicationApiService .create (createApplicationRequest )
65
45
.delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_CREATE ))
66
46
.map (ResponseView ::success );
67
47
}
68
48
69
- @ PostMapping ( "/createFromTemplate" )
49
+ @ Override
70
50
public Mono <ResponseView <ApplicationView >> createFromTemplate (@ RequestParam String templateId ) {
71
51
return applicationApiService .createFromTemplate (templateId )
72
52
.delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_CREATE ))
73
53
.map (ResponseView ::success );
74
54
}
75
55
76
- @ PutMapping ( "/recycle/{applicationId}" )
56
+ @ Override
77
57
public Mono <ResponseView <Boolean >> recycle (@ PathVariable String applicationId ) {
78
58
return applicationApiService .recycle (applicationId )
79
59
.delayUntil (__ -> businessEventPublisher .publishApplicationCommonEvent (applicationId , null , APPLICATION_RECYCLED ))
80
60
.map (ResponseView ::success );
81
61
}
82
62
83
- @ PutMapping ( "/restore/{applicationId}" )
63
+ @ Override
84
64
public Mono <ResponseView <Boolean >> restore (@ PathVariable String applicationId ) {
85
65
return applicationApiService .restore (applicationId )
86
66
.delayUntil (__ -> businessEventPublisher .publishApplicationCommonEvent (applicationId , null , APPLICATION_RESTORE ))
87
67
.map (ResponseView ::success );
88
68
}
89
69
90
- @ GetMapping ( "/recycle/list" )
70
+ @ Override
91
71
public Mono <ResponseView <List <ApplicationInfoView >>> getRecycledApplications () {
92
72
return applicationApiService .getRecycledApplications ()
93
73
.collectList ()
94
74
.map (ResponseView ::success );
95
75
}
96
76
97
- @ DeleteMapping ( "/{applicationId}" )
77
+ @ Override
98
78
public Mono <ResponseView <ApplicationView >> delete (@ PathVariable String applicationId ) {
99
79
return applicationApiService .delete (applicationId )
100
80
.delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_DELETE ))
101
81
.map (ResponseView ::success );
102
82
}
103
83
104
- @ GetMapping ( "/{applicationId}" )
84
+ @ Override
105
85
public Mono <ResponseView <ApplicationView >> getEditingApplication (@ PathVariable String applicationId ) {
106
86
return applicationApiService .getEditingApplication (applicationId )
107
87
.delayUntil (__ -> applicationApiService .updateUserApplicationLastViewTime (applicationId ))
108
88
.map (ResponseView ::success );
109
89
}
110
90
111
- @ GetMapping ( "/{applicationId}/view" )
91
+ @ Override
112
92
public Mono <ResponseView <ApplicationView >> getPublishedApplication (@ PathVariable String applicationId ) {
113
93
return applicationApiService .getPublishedApplication (applicationId )
114
94
.delayUntil (applicationView -> applicationApiService .updateUserApplicationLastViewTime (applicationId ))
115
95
.delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , VIEW ))
116
96
.map (ResponseView ::success );
117
97
}
118
98
119
- @ PutMapping ( "/{applicationId}" )
99
+ @ Override
120
100
public Mono <ResponseView <ApplicationView >> update (@ PathVariable String applicationId ,
121
101
@ RequestBody Application newApplication ) {
122
102
return applicationApiService .update (applicationId , newApplication )
123
103
.delayUntil (applicationView -> businessEventPublisher .publishApplicationCommonEvent (applicationView , APPLICATION_UPDATE ))
124
104
.map (ResponseView ::success );
125
105
}
126
106
127
- @ PostMapping ( "/{applicationId}/publish" )
107
+ @ Override
128
108
public Mono <ResponseView <ApplicationView >> publish (@ PathVariable String applicationId ) {
129
109
return applicationApiService .publish (applicationId )
130
110
.map (ResponseView ::success );
131
111
}
132
112
133
- @ GetMapping ( "/home" )
113
+ @ Override
134
114
public Mono <ResponseView <UserHomepageView >> getUserHomePage (@ RequestParam (required = false , defaultValue = "0" ) int applicationType ) {
135
115
ApplicationType type = ApplicationType .fromValue (applicationType );
136
116
return userHomeApiService .getUserHomePageView (type )
137
117
.map (ResponseView ::success );
138
118
}
139
119
140
- @ GetMapping ( "/list" )
120
+ @ Override
141
121
public Mono <ResponseView <List <ApplicationInfoView >>> getApplications (@ RequestParam (required = false ) Integer applicationType ,
142
122
@ RequestParam (required = false ) ApplicationStatus applicationStatus ,
143
123
@ RequestParam (defaultValue = "true" ) boolean withContainerSize ) {
@@ -147,7 +127,7 @@ public Mono<ResponseView<List<ApplicationInfoView>>> getApplications(@RequestPar
147
127
.map (ResponseView ::success );
148
128
}
149
129
150
- @ PutMapping ( "/{applicationId}/permissions/{permissionId}" )
130
+ @ Override
151
131
public Mono <ResponseView <Boolean >> updatePermission (@ PathVariable String applicationId ,
152
132
@ PathVariable String permissionId ,
153
133
@ RequestBody UpdatePermissionRequest updatePermissionRequest ) {
@@ -160,7 +140,7 @@ public Mono<ResponseView<Boolean>> updatePermission(@PathVariable String applica
160
140
.map (ResponseView ::success );
161
141
}
162
142
163
- @ DeleteMapping ( "/{applicationId}/permissions/{permissionId}" )
143
+ @ Override
164
144
public Mono <ResponseView <Boolean >> removePermission (
165
145
@ PathVariable String applicationId ,
166
146
@ PathVariable String permissionId ) {
@@ -169,7 +149,7 @@ public Mono<ResponseView<Boolean>> removePermission(
169
149
.map (ResponseView ::success );
170
150
}
171
151
172
- @ PutMapping ( "/{applicationId}/permissions" )
152
+ @ Override
173
153
public Mono <ResponseView <Boolean >> grantPermission (
174
154
@ PathVariable String applicationId ,
175
155
@ RequestBody BatchAddPermissionRequest request ) {
@@ -185,37 +165,16 @@ public Mono<ResponseView<Boolean>> grantPermission(
185
165
}
186
166
187
167
188
- @ GetMapping ( "/{applicationId}/permissions" )
168
+ @ Override
189
169
public Mono <ResponseView <ApplicationPermissionView >> getApplicationPermissions (@ PathVariable String applicationId ) {
190
170
return applicationApiService .getApplicationPermissions (applicationId )
191
171
.map (ResponseView ::success );
192
172
}
193
173
194
- @ PutMapping ( "/{applicationId}/public-to-all" )
174
+ @ Override
195
175
public Mono <ResponseView <Boolean >> setApplicationPublicToAll (@ PathVariable String applicationId ,
196
176
@ RequestBody ApplicationPublicToAllRequest request ) {
197
177
return applicationApiService .setApplicationPublicToAll (applicationId , request .publicToAll ())
198
178
.map (ResponseView ::success );
199
179
}
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
- }
221
180
}
0 commit comments