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; +}