diff --git a/src/main/java/com/qiwenshare/file/api/IUserFileService.java b/src/main/java/com/qiwenshare/file/api/IUserFileService.java index 64a1ece..1f0f863 100644 --- a/src/main/java/com/qiwenshare/file/api/IUserFileService.java +++ b/src/main/java/com/qiwenshare/file/api/IUserFileService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.vo.file.FileListVo; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -17,8 +18,9 @@ public interface IUserFileService extends IService { IPage getFileByFileType(Integer fileTypeId, Long currentPage, Long pageCount, long userId); List selectUserFileListByPath(String filePath, Long userId); - List selectFileListLikeRightFilePath(String filePath, long userId); List selectFilePathTreeByUserId(Long userId); void deleteUserFile(String userFileId, Long sessionUserId); + List selectUserFileByLikeRightFilePath(@Param("filePath") String filePath, @Param("userId") long userId); + } diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index 2e1c81f..9a46839 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -166,10 +166,11 @@ public class FileController { .eq(UserFile::getUserFileId, renameFileDto.getUserFileId()); userFileService.update(lambdaUpdateWrapper); if (1 == userFile.getIsDir()) { - List list = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath() + userFile.getFileName() + "/", sessionUserBean.getUserId()); + List list = userFileService.selectUserFileByLikeRightFilePath(new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath(), sessionUserBean.getUserId()); for (UserFile newUserFile : list) { - newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(userFile.getFilePath() + userFile.getFileName() + "/", userFile.getFilePath() + renameFileDto.getFileName() + "/")); + newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(new QiwenFile(userFile.getFilePath(), userFile.getFileName(), userFile.getIsDir() == 1).getPath(), + new QiwenFile(userFile.getFilePath(), renameFileDto.getFileName(), userFile.getIsDir() == 1).getPath())); userFileService.updateById(newUserFile); } } diff --git a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 421bcdd..75b8d7c 100644 --- a/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -155,11 +155,8 @@ public class FiletransferController { if (userFile.getIsDir() == 0) { userFileIds.add(userFileId); } else { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.likeRight(UserFile::getFilePath, userFile.getFilePath() + QiwenFile.separator + userFile.getFileName()) - .eq(UserFile::getUserId, userFile.getUserId()) - .eq(UserFile::getDeleteFlag, 0); - List userFileList = userFileService.list(lambdaQueryWrapper); + QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true); + List userFileList = userFileService.selectUserFileByLikeRightFilePath(qiwenFile.getPath(), userFile.getUserId()); List userFileIds1 = userFileList.stream().map(UserFile::getUserFileId).collect(Collectors.toList()); userFileIds.add(userFile.getUserFileId()); userFileIds.addAll(userFileIds1); diff --git a/src/main/java/com/qiwenshare/file/controller/ShareController.java b/src/main/java/com/qiwenshare/file/controller/ShareController.java index 0d5700e..12574de 100644 --- a/src/main/java/com/qiwenshare/file/controller/ShareController.java +++ b/src/main/java/com/qiwenshare/file/controller/ShareController.java @@ -81,7 +81,7 @@ public class ShareController { } if (userFile.getIsDir() == 1) { QiwenFile qiwenFile = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true); - List userfileList = userFileService.selectFileListLikeRightFilePath(qiwenFile.getPath(), sessionUserBean.getUserId()); + List userfileList = userFileService.selectUserFileByLikeRightFilePath(qiwenFile.getPath(), sessionUserBean.getUserId()); for (UserFile userFile1 : userfileList) { ShareFile shareFile1 = new ShareFile(); shareFile1.setUserFileId(userFile1.getUserFileId()); @@ -121,7 +121,7 @@ public class ShareController { String savefileName = fileDealComp.getRepeatFileName(userFile, savefilePath); if (userFile.getIsDir() == 1) { - List userfileList = userFileService.selectFileListLikeRightFilePath(userFile.getFilePath() + userFile.getFileName(), userFile.getUserId()); + List userfileList = userFileService.selectUserFileByLikeRightFilePath(new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath(), userFile.getUserId()); log.info("查询文件列表:" + JSON.toJSONString(userfileList)); String filePath = userFile.getFilePath(); userfileList.forEach(p->{ diff --git a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java index 53be18d..16d39ff 100644 --- a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java +++ b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java @@ -7,6 +7,8 @@ import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.vo.file.FileListVo; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface UserFileMapper extends BaseMapper { void updateFilepathByPathAndName(String oldfilePath, String newfilePath, String fileName, String extendName, long userId); @@ -22,6 +24,8 @@ public interface UserFileMapper extends BaseMapper { @Param("newFilePath") String newfilePath, @Param("userId") long userId); + List selectUserFileByLikeRightFilePath(@Param("filePath") String filePath, @Param("userId") long userId); + IPage selectPageVo(Page page, @Param("userFile") UserFile userFile, @Param("fileTypeId") Integer fileTypeId); Long selectStorageSizeByUserId(@Param("userId") Long userId); } diff --git a/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/src/main/java/com/qiwenshare/file/service/FiletransferService.java index f4be1a3..8f691e2 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -411,7 +411,8 @@ public class FiletransferService implements IFiletransferService { InputStream inputStream = downloader.getInputStream(downloadFile); BufferedInputStream bis = new BufferedInputStream(inputStream); try { - zos.putNextEntry(new ZipEntry(userFile1.getFilePath().replaceFirst(filePath, "") + "/" + userFile1.getFileName() + "." + userFile1.getExtendName())); + QiwenFile qiwenFile = new QiwenFile(userFile1.getFilePath().replaceFirst(filePath, ""), userFile1.getFileName() + "." + userFile1.getExtendName(), false); + zos.putNextEntry(new ZipEntry(qiwenFile.getPath())); byte[] buffer = new byte[1024]; int i = bis.read(buffer); @@ -431,8 +432,9 @@ public class FiletransferService implements IFiletransferService { } } } else { + QiwenFile qiwenFile = new QiwenFile(userFile1.getFilePath(), userFile1.getFileName(), true); // 空文件夹的处理 - zos.putNextEntry(new ZipEntry(userFile1.getFilePath() + userFile1.getFileName() + "/")); + zos.putNextEntry(new ZipEntry(qiwenFile.getPath() + QiwenFile.separator)); // 没有文件,不需要文件的copy zos.closeEntry(); } diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index ffff5b0..fc367b3 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -15,6 +15,7 @@ import com.qiwenshare.common.util.security.SessionUtil; import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.file.domain.RecoveryFile; import com.qiwenshare.file.domain.UserFile; +import com.qiwenshare.file.io.QiwenFile; import com.qiwenshare.file.mapper.FileMapper; import com.qiwenshare.file.mapper.FileTypeMapper; import com.qiwenshare.file.mapper.RecoveryFileMapper; @@ -100,11 +101,11 @@ public class UserFileService extends ServiceImpl impl userFileMapper.updateFilepathByPathAndName(oldfilePath, newfilePath, fileName, extendName, userId); //移动子目录 - oldfilePath = oldfilePath + "/" + fileName; - newfilePath = newfilePath + "/" + fileName; + oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath(); + newfilePath = new QiwenFile(newfilePath, fileName, true).getPath(); if (StringUtils.isEmpty(extendName)) { //为空说明是目录,则需要移动子目录 - List list = selectFileListLikeRightFilePath(oldfilePath, userId); + List list = selectUserFileByLikeRightFilePath(oldfilePath, userId); for (UserFile newUserFile : list) { newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); @@ -127,8 +128,8 @@ public class UserFileService extends ServiceImpl impl //移动子目录 - oldfilePath = oldfilePath + "/" + fileName; - newfilePath = newfilePath + "/" + fileName; + oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath(); + newfilePath = new QiwenFile(newfilePath, fileName, true).getPath(); oldfilePath = oldfilePath.replace("\\", "\\\\\\\\"); oldfilePath = oldfilePath.replace("'", "\\'"); @@ -161,23 +162,6 @@ public class UserFileService extends ServiceImpl impl return userFileMapper.selectList(lambdaQueryWrapper); } - @Override - public List selectFileListLikeRightFilePath(String filePath, long userId) { - filePath = filePath.replace("\\", "\\\\\\\\"); - filePath = filePath.replace("'", "\\'"); - filePath = filePath.replace("%", "\\%"); - filePath = filePath.replace("_", "\\_"); - - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - - log.info("查询文件路径:" + filePath); - - lambdaQueryWrapper.eq(UserFile::getUserId, userId) - .likeRight(UserFile::getFilePath, filePath) - .eq(UserFile::getDeleteFlag, 0); - return userFileMapper.selectList(lambdaQueryWrapper); - } - @Override public List selectFilePathTreeByUserId(Long userId) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -200,7 +184,7 @@ public class UserFileService extends ServiceImpl impl .eq(UserFile::getUserFileId, userFileId); userFileMapper.update(null, userFileLambdaUpdateWrapper); - String filePath = userFile.getFilePath() + "/" + userFile.getFileName(); + String filePath = new QiwenFile(userFile.getFilePath(), userFile.getFileName(), true).getPath(); updateFileDeleteStateByFilePath(filePath, uuid, sessionUserId); }else{ @@ -222,9 +206,14 @@ public class UserFileService extends ServiceImpl impl } + @Override + public List selectUserFileByLikeRightFilePath(String filePath, long userId) { + return userFileMapper.selectUserFileByLikeRightFilePath(filePath, userId); + } + private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum, Long userId) { executor.execute(() -> { - List fileList = selectFileListLikeRightFilePath(filePath, userId); + List fileList = selectUserFileByLikeRightFilePath(filePath, userId); for (int i = 0; i < fileList.size(); i++){ UserFile userFileTemp = fileList.get(i); //标记删除标志 diff --git a/src/main/resources/mapper/UserFileMapper.xml b/src/main/resources/mapper/UserFileMapper.xml index ba348d1..02f1f01 100644 --- a/src/main/resources/mapper/UserFileMapper.xml +++ b/src/main/resources/mapper/UserFileMapper.xml @@ -42,6 +42,11 @@ ORDER BY isDir desc + + UPDATE userfile SET filePath=REPLACE(filePath, #{param1}, #{param2})