4
4
import org .lowcoder .api .application .view .*;
5
5
import org .lowcoder .api .framework .view .PageResponseView ;
6
6
import org .lowcoder .api .framework .view .ResponseView ;
7
- import org .lowcoder .api .home .SessionUserService ;
8
7
import org .lowcoder .api .home .UserHomeApiService ;
9
8
import org .lowcoder .api .home .UserHomepageView ;
10
9
import org .lowcoder .api .util .BusinessEventPublisher ;
14
13
import org .lowcoder .domain .application .model .ApplicationStatus ;
15
14
import org .lowcoder .domain .application .model .ApplicationType ;
16
15
import org .lowcoder .domain .application .service .ApplicationRecordService ;
17
- import org .lowcoder .domain .folder .service .FolderElementRelationService ;
18
16
import org .lowcoder .domain .permission .model .ResourceRole ;
19
17
import org .springframework .web .bind .annotation .PathVariable ;
20
18
import org .springframework .web .bind .annotation .RequestBody ;
@@ -37,7 +35,6 @@ public class ApplicationController implements ApplicationEndpoints {
37
35
private final UserHomeApiService userHomeApiService ;
38
36
private final ApplicationApiService applicationApiService ;
39
37
private final BusinessEventPublisher businessEventPublisher ;
40
- private final SessionUserService sessionUserService ;
41
38
private final GidService gidService ;
42
39
private final ApplicationRecordService applicationRecordService ;
43
40
@@ -152,6 +149,14 @@ public Mono<ResponseView<ApplicationView>> publish(@PathVariable String applicat
152
149
return newtag ;
153
150
})
154
151
.switchIfEmpty (Mono .just ("1.0.0" ))
152
+ .delayUntil (newtag -> {
153
+ ApplicationPublishRequest req = Objects .requireNonNullElse (applicationPublishRequest , new ApplicationPublishRequest ("" , newtag ));
154
+ return businessEventPublisher .publishApplicationPublishEvent (appId , req ).then (Mono .defer (() -> {
155
+ if (newtag .equals (req .tag ())) {
156
+ return businessEventPublisher .publishApplicationVersionChangeEvent (appId , newtag );
157
+ } else return Mono .empty ();
158
+ }));
159
+ })
155
160
.flatMap (newtag -> applicationApiService .publish (appId , Objects .requireNonNullElse (applicationPublishRequest , new ApplicationPublishRequest ("" , newtag ))))
156
161
.map (ResponseView ::success ));
157
162
}
@@ -221,6 +226,7 @@ public Mono<ResponseView<Boolean>> updatePermission(@PathVariable String applica
221
226
}
222
227
return gidService .convertApplicationIdToObjectId (applicationId ).flatMap (appId ->
223
228
applicationApiService .updatePermission (appId , permissionId , role )
229
+ .delayUntil (__ -> businessEventPublisher .publishApplicationPermissionEvent (applicationId , null , null , permissionId , role .getValue ()))
224
230
.map (ResponseView ::success ));
225
231
}
226
232
@@ -230,6 +236,7 @@ public Mono<ResponseView<Boolean>> removePermission(
230
236
@ PathVariable String permissionId ) {
231
237
return gidService .convertApplicationIdToObjectId (applicationId ).flatMap (appId ->
232
238
applicationApiService .removePermission (appId , permissionId )
239
+ .delayUntil (__ -> businessEventPublisher .publishApplicationPermissionEvent (applicationId , null , null , permissionId , null ))
233
240
.map (ResponseView ::success ));
234
241
}
235
242
@@ -246,6 +253,7 @@ public Mono<ResponseView<Boolean>> grantPermission(
246
253
emptyIfNull (request .userIds ()),
247
254
emptyIfNull (request .groupIds ()),
248
255
role )
256
+ .delayUntil (__ -> businessEventPublisher .publishApplicationPermissionEvent (applicationId , emptyIfNull (request .userIds ()), emptyIfNull (request .groupIds ()), null , role .getValue ()))
249
257
.map (ResponseView ::success ));
250
258
}
251
259
@@ -262,6 +270,7 @@ public Mono<ResponseView<Boolean>> setApplicationPublicToAll(@PathVariable Strin
262
270
@ RequestBody ApplicationPublicToAllRequest request ) {
263
271
return gidService .convertApplicationIdToObjectId (applicationId ).flatMap (appId ->
264
272
applicationApiService .setApplicationPublicToAll (appId , request .publicToAll ())
273
+ .delayUntil (__ -> businessEventPublisher .publishApplicationSharingEvent (applicationId , "PublicToAll" ))
265
274
.map (ResponseView ::success ));
266
275
}
267
276
@@ -270,6 +279,7 @@ public Mono<ResponseView<Boolean>> setApplicationPublicToMarketplace(@PathVariab
270
279
@ RequestBody ApplicationPublicToMarketplaceRequest request ) {
271
280
return gidService .convertApplicationIdToObjectId (applicationId ).flatMap (appId ->
272
281
applicationApiService .setApplicationPublicToMarketplace (appId , request )
282
+ .delayUntil (__ -> businessEventPublisher .publishApplicationSharingEvent (applicationId , "PublicToMarketplace" ))
273
283
.map (ResponseView ::success ));
274
284
}
275
285
0 commit comments