From 140072f159f3ae48a991a5f3ccaf8904053cc139 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Thu, 4 Dec 2025 15:40:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=9D=83=E9=99=90=E5=88=A4?= =?UTF-8?q?=E6=96=AD=EF=BC=8C=E9=BB=98=E8=AE=A4=E7=BB=A7=E6=89=BF=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/enums/FilePermissionEnum.java | 1 + .../impl/FileUserPermissionServiceImpl.java | 42 ++++++++++++---- .../impl/MinioFileIDataFileServiceImpl.java | 49 ++++++++++++++----- 3 files changed, 70 insertions(+), 22 deletions(-) diff --git a/common/src/main/java/com/sdm/common/entity/enums/FilePermissionEnum.java b/common/src/main/java/com/sdm/common/entity/enums/FilePermissionEnum.java index 568661e8..7b454171 100644 --- a/common/src/main/java/com/sdm/common/entity/enums/FilePermissionEnum.java +++ b/common/src/main/java/com/sdm/common/entity/enums/FilePermissionEnum.java @@ -12,6 +12,7 @@ public enum FilePermissionEnum { byte value; FilePermissionEnum(byte i) { + value = i; } public byte getValue() { diff --git a/data/src/main/java/com/sdm/data/service/impl/FileUserPermissionServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/FileUserPermissionServiceImpl.java index ef3318cd..c1abdf10 100644 --- a/data/src/main/java/com/sdm/data/service/impl/FileUserPermissionServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/FileUserPermissionServiceImpl.java @@ -3,9 +3,12 @@ package com.sdm.data.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sdm.common.entity.enums.FilePermissionEnum; import com.sdm.data.dao.FileUserPermissionMapper; +import com.sdm.data.model.entity.FileMetadataInfo; import com.sdm.data.model.entity.FileUserPermission; import com.sdm.data.service.IFileMetadataInfoService; import com.sdm.data.service.IFileUserPermissionService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,6 +20,7 @@ import org.springframework.stereotype.Service; * @author author * @since 2025-09-05 */ +@Slf4j @Service public class FileUserPermissionServiceImpl extends ServiceImpl implements IFileUserPermissionService { @Autowired @@ -24,21 +28,41 @@ public class FileUserPermissionServiceImpl extends ServiceImpl getFileMetadataInfoByObjectKey(String minioObjectKey) { if (!StringUtils.hasText(minioObjectKey)) { return Optional.empty(); @@ -784,17 +796,25 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { if(ObjectUtils.isNotEmpty(deleteFileIdList)){ fileMetadataInfoService.removeByIds(deleteFileIdList); fileMetadataExtensionService.lambdaUpdate().in(FileMetadataExtension::getTFilemetaId, deleteFileIdList).remove(); + fileStorageService.lambdaUpdate().in(FileStorage::getFileId, deleteFileIdList).remove(); fileUserPermissionService.lambdaUpdate().in(FileUserPermission::getTFilemetaId, deleteFileIdList).remove(); + fileSimulationMappingService.lambdaUpdate().in(FileSimulationMapping::getFileId, deleteFileIdList).remove(); } fileStorageService.lambdaUpdate().eq(FileStorage::getDirId, deleteDirId).remove(); + //删除文件夹权限 + deleteDirectoryPermission(deleteDirId); + + // minio文件系统批量删除文件 minioService.deleteDirectoryRecursively(dirMinioObjectKey); log.info("删除目录文件元数据和Minio文件成功: " + dirMinioObjectKey); + + // 子文件夹一并删除 List childDirs = fileMetadataInfoService.lambdaQuery() - .eq(FileMetadataInfo::getParentId, deleteDirMetadataInfo.getId()) + .eq(FileMetadataInfo::getParentId, deleteDirId) .eq(FileMetadataInfo::getDataType, DataTypeEnum.DIRECTORY.getValue()) .list(); if (CollectionUtils.isNotEmpty(childDirs)) { @@ -1036,7 +1056,10 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { if (ObjectUtils.isEmpty(oldFile)) { return SdmResponse.failed("文件不存在"); } - + boolean hasDeletePermission = fileUserPermissionService.hasFilePermission(fileId, ThreadLocalContext.getUserId(), FilePermissionEnum.WRITE); + if (!hasDeletePermission){ + return SdmResponse.failed("没有修改权限"); + } String newName = req.getNewName(); oldObjectKey = oldFile.getObjectKey(); newObjectKey = oldObjectKey.substring(0, oldObjectKey.lastIndexOf("/") + 1) + newName;