From 4c00b4ac84536f2e5bd64c42b327ab47a62ade9a Mon Sep 17 00:00:00 2001 From: Thomasr Date: Wed, 21 May 2025 16:07:17 -0400 Subject: [PATCH 1/2] Updated deleted app --- .../lowcoder/api/application/ApplicationApiService.java | 2 +- .../api/application/ApplicationApiServiceImpl.java | 9 +++++---- .../lowcoder/api/application/ApplicationController.java | 2 +- .../ApplicationApiServiceIntegrationTest.java | 2 +- .../api/application/ApplicationApiServiceTest.java | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java index c267e3ca9..fdb40cc04 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java @@ -34,7 +34,7 @@ public interface ApplicationApiService { Mono updateUserApplicationLastViewTime(String applicationId); - Mono update(String applicationId, Application application); + Mono update(String applicationId, Application application, Boolean updateStatus); Mono publish(String applicationId, ApplicationPublishRequest applicationPublishRequest); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java index 1345d2d2b..3ed05375f 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java @@ -346,23 +346,24 @@ public Mono updateUserApplicationLastViewTime(String applicationId) { } @Override - public Mono update(String applicationId, Application application) { - return checkApplicationStatus(applicationId, NORMAL) + public Mono update(String applicationId, Application application, Boolean updateStatus) { + return Boolean.TRUE.equals(updateStatus) ? Mono.empty() : checkApplicationStatus(applicationId, NORMAL) .then(sessionUserService.getVisitorId()) .flatMap(userId -> resourcePermissionService.checkAndReturnMaxPermission(userId, applicationId, EDIT_APPLICATIONS)) .delayUntil(__ -> checkDatasourcePermissions(application)) - .flatMap(permission -> doUpdateApplication(applicationId, application) + .flatMap(permission -> doUpdateApplication(applicationId, application, updateStatus) .flatMap(applicationUpdated -> buildView(applicationUpdated, permission.getResourceRole().getValue()).map(appInfoView -> ApplicationView.builder() .applicationInfoView(appInfoView) .applicationDSL(applicationUpdated.getEditingApplicationDSL()) .build()))); } - private Mono doUpdateApplication(String applicationId, Application application) { + private Mono doUpdateApplication(String applicationId, Application application, Boolean updateStatus) { Application applicationUpdate = Application.builder() .editingApplicationDSL(application.getEditingApplicationDSLOrNull()) .name(application.getName()) + .applicationStatus(Boolean.TRUE.equals(updateStatus) ? application.getApplicationStatus() : null) .build(); return applicationService.updateById(applicationId, applicationUpdate) .then(applicationService.findById(applicationId)); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java index 2ae5ea03e..d1c6402f0 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java @@ -123,7 +123,7 @@ public Mono> update(@PathVariable String applicati @RequestBody Application newApplication, @RequestParam(required = false) Boolean updateStatus) { return gidService.convertApplicationIdToObjectId(applicationId).flatMap(appId -> - applicationApiService.update(appId, newApplication) + applicationApiService.update(appId, newApplication, updateStatus) .delayUntil(applicationView -> businessEventPublisher.publishApplicationCommonEvent(applicationView, APPLICATION_UPDATE)) .map(ResponseView::success)); } diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceIntegrationTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceIntegrationTest.java index e35bc8258..3ff202b6d 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceIntegrationTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceIntegrationTest.java @@ -116,7 +116,7 @@ public void testUpdateApplicationFailedDueToLackOfDatasourcePermissions() { .editingApplicationDSL(applicationView.getApplicationDSL()) .name("app03") .build(); - return applicationApiService.update(applicationView.getApplicationInfoView().getApplicationId(), application); + return applicationApiService.update(applicationView.getApplicationInfoView().getApplicationId(), application, false); }); StepVerifier.create(applicationViewMono) diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java index 1b7ad7a55..106944777 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java @@ -169,7 +169,7 @@ public void testPublishApplication() { // update applicationIdMono = applicationIdMono - .delayUntil(id -> applicationApiService.update(id, Application.builder().editingApplicationDSL(Map.of("comp", "table")).build())).cache(); + .delayUntil(id -> applicationApiService.update(id, Application.builder().editingApplicationDSL(Map.of("comp", "table")).build(), false)).cache(); // edit dsl after publish StepVerifier.create(applicationIdMono.flatMap(id -> applicationApiService.getEditingApplication(id, false))) From bcfba501db7ae9bbeac44110b34464992553cfc0 Mon Sep 17 00:00:00 2001 From: Thomasr Date: Wed, 21 May 2025 16:11:55 -0400 Subject: [PATCH 2/2] Remove superadmin from deletion of all org members and group members --- .../org/lowcoder/infra/birelation/BiRelationServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/birelation/BiRelationServiceImpl.java b/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/birelation/BiRelationServiceImpl.java index 17eb9db5a..ad98de0f9 100644 --- a/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/birelation/BiRelationServiceImpl.java +++ b/server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/birelation/BiRelationServiceImpl.java @@ -132,6 +132,7 @@ public Mono removeAllBiRelations(BiRelationBizType bizType, String sour Query query = new Query(); query.addCriteria(where(BIZ_TYPE).is(bizType)); query.addCriteria(where(SOURCE_ID).is(sourceId)); + query.addCriteria(where(RELATION).is("super_admin").not()); return mongoUpsertHelper.remove(query, BiRelation.class); }