From 5253791bedd27cd2605f510b034f0084f3a0d871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E8=B6=85?= Date: Wed, 20 Jan 2021 17:40:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=9E=E6=94=B6=E7=AB=99?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=BF=98=E5=8E=9F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qiwenshare/common/util/PathUtil.java | 11 +++ .../controller/RecoveryFileController.java | 68 ++++++++++++++++++- .../file/dto/recoveryfile/RestoreFileDto.java | 9 +++ 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 file-web/src/main/java/com/qiwenshare/file/dto/recoveryfile/RestoreFileDto.java diff --git a/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java b/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java index 8923ab2..107cc69 100644 --- a/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java +++ b/file-common/src/main/java/com/qiwenshare/common/util/PathUtil.java @@ -90,4 +90,15 @@ public class PathUtil { } return fileName.substring(fileName.lastIndexOf(".")); } + + public static String getParentPath(String path) { + return path.substring(0, path.lastIndexOf("/")); + } + + public static void main(String[] args) { + String path = "aaa/bbb/ccc"; + System.out.println(getParentPath(path)); + String fileName = path.substring(path.lastIndexOf("/")); + System.out.println(fileName); + } } diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java b/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java index d72e0cc..73a6d1f 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java @@ -1,14 +1,20 @@ package com.qiwenshare.file.controller; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.qiwenshare.common.cbb.DateUtil; import com.qiwenshare.common.cbb.RestResult; +import com.qiwenshare.common.util.PathUtil; import com.qiwenshare.file.api.IRecoveryFileService; import com.qiwenshare.file.api.IUserFileService; +import com.qiwenshare.file.api.IUserService; import com.qiwenshare.file.domain.RecoveryFile; +import com.qiwenshare.file.domain.UserBean; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.dto.BatchDeleteRecoveryFileDTO; import com.qiwenshare.file.dto.DeleteRecoveryFileDTO; -import com.qiwenshare.file.service.RecoveryFileService; +import com.qiwenshare.file.dto.recoveryfile.RestoreFileDto; import com.qiwenshare.file.vo.file.RecoveryFileListVo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -27,6 +33,8 @@ public class RecoveryFileController { IRecoveryFileService recoveryFileService; @Resource IUserFileService userFileService; + @Resource + IUserService userService; @Operation(summary = "删除回收文件", description = "删除回收文件", tags = {"recoveryfile"}) @@ -76,4 +84,62 @@ public class RecoveryFileController { return restResult; } + @Operation(summary = "还原文件", description = "还原文件", tags = {"recoveryfile"}) + @RequestMapping(value = "/restorefile", method = RequestMethod.POST) + @ResponseBody + public RestResult restoreFile(RestoreFileDto restoreFileDto, @RequestHeader("token") String token) { + UserBean sessionUserBean = userService.getUserBeanByToken(token); + LambdaUpdateWrapper userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, 0) + .set(UserFile::getDeleteBatchNum, "") + .eq(UserFile::getDeleteBatchNum, restoreFileDto.getDeleteBatchNum()); + userFileService.update(userFileLambdaUpdateWrapper); + + String filePath = PathUtil.getParentPath(restoreFileDto.getFilePath()); + while(filePath.indexOf("/") != -1) { + String fileName = filePath.substring(filePath.lastIndexOf("/") + 1); + filePath = PathUtil.getParentPath(filePath); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserFile::getFilePath, filePath) + .eq(UserFile::getDeleteFlag, 0) + .eq(UserFile::getUserId, sessionUserBean.getUserId()); + List userFileList = userFileService.list(lambdaQueryWrapper); + if (userFileList.size() == 0) { + UserFile userFile = new UserFile(); + userFile.setUserId(sessionUserBean.getUserId()); + userFile.setFileName(fileName); + userFile.setFilePath(filePath); + userFile.setDeleteFlag(0); + userFile.setIsDir(1); + userFile.setUploadTime(DateUtil.getCurrentTime()); + + userFileService.save(userFile); + } +// else { +// +// LambdaUpdateWrapper updateUserfileWp = new LambdaUpdateWrapper<>(); +// updateUserfileWp.set(UserFile::getDeleteBatchNum, "") +// .set(UserFile::getDeleteFlag, "0") +// .eq(UserFile::getFilePath, filePath).eq(UserFile::getUserId, sessionUserBean.getUserId()); +// userFileService.update(updateUserfileWp); +// } + } + + LambdaQueryWrapper recoveryFileServiceLambdaQueryWrapper = new LambdaQueryWrapper<>(); + recoveryFileServiceLambdaQueryWrapper.eq(RecoveryFile::getDeleteBatchNum, restoreFileDto.getDeleteBatchNum()); + recoveryFileService.remove(recoveryFileServiceLambdaQueryWrapper); + + + return RestResult.success().message("还原成功!"); + } + } + + + + + + + + + diff --git a/file-web/src/main/java/com/qiwenshare/file/dto/recoveryfile/RestoreFileDto.java b/file-web/src/main/java/com/qiwenshare/file/dto/recoveryfile/RestoreFileDto.java new file mode 100644 index 0000000..5d8eabd --- /dev/null +++ b/file-web/src/main/java/com/qiwenshare/file/dto/recoveryfile/RestoreFileDto.java @@ -0,0 +1,9 @@ +package com.qiwenshare.file.dto.recoveryfile; + +import lombok.Data; + +@Data +public class RestoreFileDto { + private String deleteBatchNum; + private String filePath; +}