diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderController.java index 5dbc047c5..e55b2ba69 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/home/FolderController.java @@ -43,7 +43,7 @@ public Mono> create(@RequestBody Folder folder) { @Override public Mono> delete(@PathVariable("id") String folderId) { return gidService.convertFolderIdToObjectId(folderId).flatMap(objectId -> - folderApiService.delete(objectId) + folderApiService.delete(objectId.orElse(null)) .delayUntil(f -> businessEventPublisher.publishFolderCommonEvent(f.getId(), f.getName(), EventType.FOLDER_DELETE)) .then(Mono.fromSupplier(() -> ResponseView.success(null)))); } @@ -73,8 +73,9 @@ public Mono> getElements(@RequestParam(value = "id", require @RequestParam(required = false) String category, @RequestParam(required = false, defaultValue = "1") Integer pageNum, @RequestParam(required = false, defaultValue = "0") Integer pageSize) { - return gidService.convertFolderIdToObjectId(folderId).flatMap(objectId -> { - var flux = folderApiService.getElements(objectId, applicationType, name, category).cache(); + return gidService.convertFolderIdToObjectId(folderId).flatMap(optionalObjectId -> { + String objectId = optionalObjectId.orElse(null); + var flux = folderApiService.getElements(optionalObjectId.orElse(null), applicationType, name, category).cache(); var countMono = flux.count(); var flux1 = flux.skip((long) (pageNum - 1) * pageSize); if (pageSize > 0) flux1 = flux1.take(pageSize); @@ -89,8 +90,8 @@ public Mono> getElements(@RequestParam(value = "id", require public Mono> move(@PathVariable("id") String applicationLikeId, @RequestParam(value = "targetFolderId", required = false) String targetFolderId) { return gidService.convertFolderIdToObjectId(targetFolderId).flatMap(objectId -> - folderApiService.move(applicationLikeId, objectId) - .then(businessEventPublisher.publishApplicationCommonEvent(applicationLikeId, objectId, APPLICATION_MOVE)) + folderApiService.move(applicationLikeId, objectId.orElse(null)) + .then(businessEventPublisher.publishApplicationCommonEvent(applicationLikeId, objectId.orElse(null), APPLICATION_MOVE)) .then(Mono.fromSupplier(() -> ResponseView.success(null)))); } @@ -104,7 +105,7 @@ public Mono> updatePermission(@PathVariable String folderId, } return gidService.convertFolderIdToObjectId(folderId).flatMap(objectId -> - folderApiService.updatePermission(objectId, permissionId, role) + folderApiService.updatePermission(objectId.orElse(null), permissionId, role) .then(Mono.fromSupplier(() -> ResponseView.success(null)))); } @@ -113,7 +114,7 @@ public Mono> removePermission( @PathVariable String folderId, @PathVariable String permissionId) { return gidService.convertFolderIdToObjectId(folderId).flatMap(objectId -> - folderApiService.removePermission(objectId, permissionId) + folderApiService.removePermission(objectId.orElse(null), permissionId) .then(Mono.fromSupplier(() -> ResponseView.success(null)))); } @@ -126,14 +127,14 @@ public Mono> grantPermission( return ofError(INVALID_PARAMETER, "INVALID_PARAMETER", request.role()); } return gidService.convertFolderIdToObjectId(folderId).flatMap(objectId -> - folderApiService.grantPermission(objectId, request.userIds(), request.groupIds(), role) + folderApiService.grantPermission(objectId.orElse(null), request.userIds(), request.groupIds(), role) .then(Mono.fromSupplier(() -> ResponseView.success(null)))); } @Override public Mono> getApplicationPermissions(@PathVariable String folderId) { return gidService.convertFolderIdToObjectId(folderId).flatMap(objectId -> - folderApiService.getPermissions(objectId) + folderApiService.getPermissions(objectId.orElse(null)) .map(ResponseView::success)); } } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/util/GidService.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/util/GidService.java index 1f20187de..2b9e0ecfc 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/util/GidService.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/util/GidService.java @@ -20,6 +20,8 @@ import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; +import java.util.Optional; + @Component public class GidService { @Autowired @@ -72,11 +74,11 @@ public Mono convertLibraryQueryIdToObjectId(String id) { return Mono.just(id); } - public Mono convertFolderIdToObjectId(String id) { + public Mono> convertFolderIdToObjectId(String id) { if(FieldName.isGID(id)) { - return folderRepository.findByGid(id).next().mapNotNull(HasIdAndAuditing::getId); + return folderRepository.findByGid(id).next().mapNotNull(HasIdAndAuditing::getId).map(Optional::ofNullable).switchIfEmpty(Mono.just(Optional.empty())); } - return Mono.just(id); + return Mono.just(Optional.ofNullable(id)); } public Mono convertBundleIdToObjectId(String id) {