From 822cfcc49685b1355d5367530011f7c6f8e863eb Mon Sep 17 00:00:00 2001 From: chenxudong Date: Thu, 26 Dec 2024 14:44:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E9=80=9A=E4=BA=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EdFileInfoController.java | 7 ++-- .../manage/service/EdFileInfoService.java | 3 +- .../service/serviceimpl/CommonService.java | 20 +++++------ .../serviceimpl/EdFileInfoServiceImpl.java | 34 ++++++++++++------- .../service/serviceimpl/EdPrjServiceImpl.java | 2 +- 5 files changed, 35 insertions(+), 31 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java index b514500..71bea90 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java @@ -5,7 +5,6 @@ import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO; import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO; import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO; import com.electromagnetic.industry.software.manage.service.EdFileInfoService; -import io.swagger.annotations.ApiOperation; import org.springframework.core.io.InputStreamResource; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -32,9 +31,9 @@ public class EdFileInfoController { return edFileInfoService.createFolder(parentId, newFolderName); } - @RequestMapping("deleteFolder") - public ElectromagneticResult deleteFolder(@RequestParam String id, @RequestParam Integer dataType) { - return edFileInfoService.deleteFolder(id, dataType); + @RequestMapping("delete") + public ElectromagneticResult delete(@RequestParam String id) { + return edFileInfoService.delete(id); } @RequestMapping("info") diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java index 52ad34c..fa9ae60 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java @@ -38,10 +38,9 @@ public interface EdFileInfoService { * 删除目录 * * @param id - * @param dataType * @return */ - ElectromagneticResult deleteFolder(String id, Integer dataType); + ElectromagneticResult delete(String id); /** * 下载文件 diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java index 0a1ea59..e322ea9 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java @@ -28,6 +28,7 @@ import lombok.Getter; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; @@ -140,17 +141,11 @@ public class CommonService { .likeRight(EdFileInfo::getFilePath, id)); } + @Transactional(rollbackFor = Exception.class) public ElectromagneticResult addFolder(String parentId, String folderName, boolean maxLengthCheck, boolean isPrjDir, String folderId) { // 验证名称是否合法 Assert.isTrue(EleCommonUtil.isFileNameValid(folderName), "文件名不符合规范,只能包含中文字符、下划线、连字符、加号、数字和英文字符且长度小于32。"); - - if (!EleCommonUtil.isFileNameValid(folderName)) { - String info = StrFormatter.format("子集名称{}不符合要求", folderName); - log.error(info); - return ElectromagneticResultUtil.fail("-1", info); - } - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFilePath) .eq(EdFileInfo::getId, parentId); @@ -168,10 +163,11 @@ public class CommonService { // 判断文件夹名称是否存在 List edFileInfos = edFileInfoMapper.selectList(Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFileName) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) .eq(EdFileInfo::getParentId, parentId)); List names = edFileInfos.stream().map(EdFileInfo::getFileName).collect(Collectors.toList()); if (names.contains(folderName)) { - String info = "该子集名称已存在"; + String info = "该名称已存在"; log.error(info); return ElectromagneticResultUtil.fail("-1", info); } @@ -206,7 +202,7 @@ public class CommonService { fileSystemService.createDirectory(targetFilePath); return ElectromagneticResultUtil.success(true); } catch (Exception e) { - String info = "添加子集失败"; + String info = "添加失败"; log.error(info, e); throw new BizException(-1, info); } @@ -251,8 +247,8 @@ public class CommonService { } } - public ElectromagneticResult deleteFolder(String id, String parentId, boolean needResort) { - // 如果文件夹下存在文件(包括文件夹和已经逻辑删除的文件),则不允许删除。后面管理员选择会有物理删除文件夹和文件的功能,此时MySQL和文件系统则会进行物理删除该文件。 + public ElectromagneticResult deleteFolder(String id, String parentId) { + // 如果文件夹下存在文件(包括文件夹和已经逻辑删除的文件),则不允许删除。后面管理员选择会有物理删除文件夹和文件的功能,此时MySQL和文件系统则会进行物理删除该文件。 try { // 这里要分两种情况,1是删除层级目录,2是删除用户创建的文件夹 EdFileInfo fileInfo = edFileInfoMapper.selectOne(Wrappers.lambdaQuery().eq(EdFileInfo::getId, id)); @@ -291,7 +287,7 @@ public class CommonService { } else { // 删除的是用户自己创建的文件夹 // 检查该文件夹下是否有没有被废除的文件 long count = edFileInfoMapper.selectCount(Wrappers.lambdaQuery() - .eq(EdFileInfo::getParentId, parentId) + .eq(EdFileInfo::getParentId, id) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); if (count > 0) { String info = "禁止删除非空文件夹"; diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 3e51929..ff238f8 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.enums.PublishEnum; import com.electromagnetic.industry.software.common.exception.BizException; @@ -144,15 +145,14 @@ public class EdFileInfoServiceImpl extends ServiceImpl deleteFolder(String id, Integer dataType) { - - Assert.isTrue(dataType == 0 || dataType == 1, "参数错误"); - if (dataType == 0) { - return commonService.deleteFolder(id, null, false); + public ElectromagneticResult delete(String id) { + EdFileInfo fileInfo = this.baseMapper.selectById(id); + String parentId = fileInfo.getParentId(); + if (fileInfo.getDataType() == 0) { + return commonService.deleteFolder(id, parentId); } this.baseMapper.update(null, Wrappers.lambdaUpdate(EdFileInfo.class) @@ -434,6 +434,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl upload(String parentId, MultipartFile file, Integer strategy) { + + EdFileInfo fileInfo = this.baseMapper.selectById(parentId); + Assert.isTrue(fileInfo.getDataType().equals(EleDataTypeEnum.FOLDER.code) && !fileInfo.getPrjDir(), "层级目录不允许上传文件"); // 首先检查是否是同名文件 try { String fileName = file.getOriginalFilename(); @@ -589,9 +594,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl e.getEffectFlag().equals(true)).collect(Collectors.toList()).get(0); + EdFileInfo effectFileInfo = parentFileInfos.stream().filter(e -> e.getEffectFlag().equals(EffectFlagEnum.EFFECT.code)).collect(Collectors.toList()).get(0); String codePathByDbPath = commonService.getCodePathByDbPath(effectFileInfo.getFilePath()); String timeStr = EleCommonUtil.getNowTimeStr(); String fileCode = commonService.createFileCode(codePathByDbPath, suffix, FILE_START_VERSION, timeStr); @@ -760,9 +767,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl @Override @Transactional(rollbackFor = Exception.class) public ElectromagneticResult deleteFolder(String fileId, String parentId) { - return commonService.deleteFolder(fileId, parentId, true); + return commonService.deleteFolder(fileId, parentId); } /**