From 1d05e0acb75feb89dc838131f71a50d69771707d Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sat, 7 May 2022 21:32:29 +0800 Subject: [PATCH 01/19] =?UTF-8?q?fix(=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6)?= =?UTF-8?q?:=20=E5=A4=8D=E5=88=B6=E6=96=87=E4=BB=B6=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/service/UserFileService.java | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index fc367b3..1164a54 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -1,8 +1,10 @@ package com.qiwenshare.file.service; import cn.hutool.core.net.URLDecoder; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -28,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.Executor; @@ -118,27 +121,36 @@ public class UserFileService extends ServiceImpl impl @Override public void userFileCopy(String oldfilePath, String newfilePath, String fileName, String extendName, long userId) { - - - if ("null".equals(extendName)){ - extendName = null; + QueryWrapper queryWrapper = new QueryWrapper() + .eq("userId", userId) + .eq("filePath", oldfilePath).eq("fileName", fileName); + if (extendName == null) { + queryWrapper.eq("isDir", 1); + } else { + queryWrapper.eq("extendName", extendName); + } + queryWrapper.eq("deleteFlag", 0); + List userFileList = userFileMapper.selectList(queryWrapper); + for (UserFile userFile : userFileList) { + userFile.setFilePath(userFile.getFilePath().replaceFirst(userFile.getFilePath(), newfilePath)); + userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); + userFileMapper.insert(userFile); } - userFileMapper.batchInsertByPathAndName(oldfilePath, newfilePath, fileName, extendName, userId); - - - //移动子目录 oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath(); newfilePath = new QiwenFile(newfilePath, fileName, true).getPath(); - oldfilePath = oldfilePath.replace("\\", "\\\\\\\\"); - oldfilePath = oldfilePath.replace("'", "\\'"); - oldfilePath = oldfilePath.replace("%", "\\%"); - oldfilePath = oldfilePath.replace("_", "\\_"); if (extendName == null) { //为null说明是目录,则需要移动子目录 - userFileMapper.batchInsertByFilepath(oldfilePath, newfilePath, userId); - + QueryWrapper subQueryWrapper = new QueryWrapper(); + subQueryWrapper.likeRight("filePath", oldfilePath); + subQueryWrapper.eq("userId", userId); + List subUserFileList = userFileMapper.selectList(subQueryWrapper); + for (UserFile userFile : subUserFileList) { + userFile.setFilePath(userFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); + userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); + userFileMapper.insert(userFile); + } } } From 4edfc310fd822e1af2f2b82e84940db5b3e3f8b5 Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sat, 7 May 2022 21:51:53 +0800 Subject: [PATCH 02/19] =?UTF-8?q?fix(=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6)?= =?UTF-8?q?:=20=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6=E6=88=96=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=90=8E=E7=9B=AE=E5=BD=95=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/qiwenshare/file/controller/FileController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index 12248bf..b2eeb90 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -276,6 +276,7 @@ public class FileController { } userFileService.userFileCopy(oldfilePath, newfilePath, fileName, extendName, sessionUserBean.getUserId()); + fileDealComp.deleteRepeatSubDirFile(newfilePath, sessionUserBean.getUserId()); return RestResult.success(); } @@ -300,6 +301,8 @@ public class FileController { } userFileService.updateFilepathByFilepath(oldfilePath, newfilePath, fileName, extendName, sessionUserBean.getUserId()); + + fileDealComp.deleteRepeatSubDirFile(newfilePath, sessionUserBean.getUserId()); return RestResult.success(); } From 278708ca5aaf30157de43a87e3cc327ca847b1bb Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sat, 7 May 2022 23:22:17 +0800 Subject: [PATCH 03/19] =?UTF-8?q?fix(=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6)?= =?UTF-8?q?:=20=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6=E6=88=96=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=90=8E=E7=9B=AE=E5=BD=95=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/controller/FileController.java | 3 -- .../file/service/UserFileService.java | 35 ++++++++++++++++--- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index b2eeb90..8556a3d 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -182,9 +182,6 @@ public class FileController { return RestResult.success(); } - - - @Operation(summary = "获取文件列表", description = "用来做前台列表展示", tags = {"file"}) @RequestMapping(value = "/getfilelist", method = RequestMethod.GET) @ResponseBody diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index 1164a54..602513a 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.DateUtil; import com.qiwenshare.common.util.security.JwtUser; import com.qiwenshare.common.util.security.SessionUtil; import com.qiwenshare.file.api.IUserFileService; +import com.qiwenshare.file.component.FileDealComp; import com.qiwenshare.file.domain.RecoveryFile; import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.io.QiwenFile; @@ -49,6 +50,8 @@ public class UserFileService extends ServiceImpl impl RecoveryFileMapper recoveryFileMapper; @Resource FileTypeMapper fileTypeMapper; + @Resource + FileDealComp fileDealComp; public static Executor executor = Executors.newFixedThreadPool(20); @@ -93,15 +96,31 @@ public class UserFileService extends ServiceImpl impl @Override public void updateFilepathByFilepath(String oldfilePath, String newfilePath, String fileName, String extendName, long userId) { - List userFileList = selectUserFileListByPath(newfilePath, userId); - List userFileNameList = userFileList.stream().filter(o -> o.getFileName().equals(fileName) && o.getExtendName().equals(extendName)).collect(Collectors.toList()); + List userFileList1 = selectUserFileListByPath(newfilePath, userId); + List userFileNameList = userFileList1.stream().filter(o -> o.getFileName().equals(fileName) && o.getExtendName().equals(extendName)).collect(Collectors.toList()); if (userFileNameList != null && userFileNameList.size() > 0) { throw new QiwenException(200000, "目的路径同名文件已存在,不能移动"); } - //移动根目录 - userFileMapper.updateFilepathByPathAndName(oldfilePath, newfilePath, fileName, extendName, userId); + + QueryWrapper queryWrapper = new QueryWrapper() + .eq("userId", userId) + .eq("filePath", oldfilePath).eq("fileName", fileName); + if (extendName == null) { + queryWrapper.eq("isDir", 1); + } else { + queryWrapper.eq("extendName", extendName); + } + queryWrapper.eq("deleteFlag", 0); + List userFileList = userFileMapper.selectList(queryWrapper); + for (UserFile userFile : userFileList) { + userFile.setFilePath(newfilePath); + + String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); + userFile.setFileName(repeatFileName); + userFileMapper.updateById(userFile); + } //移动子目录 oldfilePath = new QiwenFile(oldfilePath, fileName, true).getPath(); @@ -112,6 +131,8 @@ public class UserFileService extends ServiceImpl impl for (UserFile newUserFile : list) { newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); + String repeatFileName = fileDealComp.getRepeatFileName(newUserFile, newUserFile.getFilePath()); + newUserFile.setFileName(repeatFileName); userFileMapper.updateById(newUserFile); } } @@ -132,8 +153,10 @@ public class UserFileService extends ServiceImpl impl queryWrapper.eq("deleteFlag", 0); List userFileList = userFileMapper.selectList(queryWrapper); for (UserFile userFile : userFileList) { - userFile.setFilePath(userFile.getFilePath().replaceFirst(userFile.getFilePath(), newfilePath)); + userFile.setFilePath(newfilePath); userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); + String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); + userFile.setFileName(repeatFileName); userFileMapper.insert(userFile); } @@ -149,6 +172,8 @@ public class UserFileService extends ServiceImpl impl for (UserFile userFile : subUserFileList) { userFile.setFilePath(userFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); + String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); + userFile.setFileName(repeatFileName); userFileMapper.insert(userFile); } } From c833809005536c54efa532adbdb263e66aebc82b Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sat, 7 May 2022 23:28:32 +0800 Subject: [PATCH 04/19] =?UTF-8?q?fix(=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6)?= =?UTF-8?q?:=20=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6=E6=88=96=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=90=8E=E7=9B=AE=E5=BD=95=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/service/UserFileService.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index 602513a..55f9d3f 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -116,9 +116,6 @@ public class UserFileService extends ServiceImpl impl List userFileList = userFileMapper.selectList(queryWrapper); for (UserFile userFile : userFileList) { userFile.setFilePath(newfilePath); - - String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); - userFile.setFileName(repeatFileName); userFileMapper.updateById(userFile); } @@ -131,8 +128,10 @@ public class UserFileService extends ServiceImpl impl for (UserFile newUserFile : list) { newUserFile.setFilePath(newUserFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); - String repeatFileName = fileDealComp.getRepeatFileName(newUserFile, newUserFile.getFilePath()); - newUserFile.setFileName(repeatFileName); + if (newUserFile.getIsDir() == 0) { + String repeatFileName = fileDealComp.getRepeatFileName(newUserFile, newUserFile.getFilePath()); + newUserFile.setFileName(repeatFileName); + } userFileMapper.updateById(newUserFile); } } @@ -155,8 +154,6 @@ public class UserFileService extends ServiceImpl impl for (UserFile userFile : userFileList) { userFile.setFilePath(newfilePath); userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); - String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); - userFile.setFileName(repeatFileName); userFileMapper.insert(userFile); } @@ -172,8 +169,10 @@ public class UserFileService extends ServiceImpl impl for (UserFile userFile : subUserFileList) { userFile.setFilePath(userFile.getFilePath().replaceFirst(oldfilePath, newfilePath)); userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); - String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); - userFile.setFileName(repeatFileName); + if (userFile.getIsDir() == 0) { + String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); + userFile.setFileName(repeatFileName); + } userFileMapper.insert(userFile); } } From 07eac3006ec6128bec3363cba2bbf824599cd11e Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sat, 7 May 2022 23:35:00 +0800 Subject: [PATCH 05/19] =?UTF-8?q?fix(=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6)?= =?UTF-8?q?:=20=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6=E6=88=96=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=90=8E=E7=9B=AE=E5=BD=95=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qiwenshare/file/service/UserFileService.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index 55f9d3f..a86862c 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -96,13 +96,6 @@ public class UserFileService extends ServiceImpl impl @Override public void updateFilepathByFilepath(String oldfilePath, String newfilePath, String fileName, String extendName, long userId) { - List userFileList1 = selectUserFileListByPath(newfilePath, userId); - List userFileNameList = userFileList1.stream().filter(o -> o.getFileName().equals(fileName) && o.getExtendName().equals(extendName)).collect(Collectors.toList()); - - if (userFileNameList != null && userFileNameList.size() > 0) { - throw new QiwenException(200000, "目的路径同名文件已存在,不能移动"); - } - QueryWrapper queryWrapper = new QueryWrapper() .eq("userId", userId) @@ -116,6 +109,10 @@ public class UserFileService extends ServiceImpl impl List userFileList = userFileMapper.selectList(queryWrapper); for (UserFile userFile : userFileList) { userFile.setFilePath(newfilePath); + if (userFile.getIsDir() == 0) { + String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); + userFile.setFileName(repeatFileName); + } userFileMapper.updateById(userFile); } @@ -154,6 +151,10 @@ public class UserFileService extends ServiceImpl impl for (UserFile userFile : userFileList) { userFile.setFilePath(newfilePath); userFile.setUserFileId(IdUtil.getSnowflakeNextIdStr()); + if (userFile.getIsDir() == 0) { + String repeatFileName = fileDealComp.getRepeatFileName(userFile, userFile.getFilePath()); + userFile.setFileName(repeatFileName); + } userFileMapper.insert(userFile); } From e878179351d24dd763520d5c9c838b5f3f3df541 Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sun, 8 May 2022 00:47:46 +0800 Subject: [PATCH 06/19] =?UTF-8?q?fix(=E5=9B=9E=E6=94=B6=E7=AB=99):=20?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E7=AB=99=E6=96=87=E4=BB=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qiwenshare/file/controller/RecoveryFileController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java b/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java index 9346fe6..771a517 100644 --- a/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java +++ b/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java @@ -65,9 +65,11 @@ public class RecoveryFileController { for (RecoveryFile recoveryFile : recoveryFileList) { RecoveryFile recoveryFile1 = recoveryFileService.getById(recoveryFile.getRecoveryFileId()); - asyncTaskComp.deleteUserFile(recoveryFile1.getUserFileId()); + if (recoveryFile1 != null) { + asyncTaskComp.deleteUserFile(recoveryFile1.getUserFileId()); - recoveryFileService.removeById(recoveryFile1.getRecoveryFileId()); + recoveryFileService.removeById(recoveryFile1.getRecoveryFileId()); + } } return RestResult.success().data("批量删除成功"); From 69ba0e49799130ff45738f66c29f67217fdf78db Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sun, 8 May 2022 10:29:46 +0800 Subject: [PATCH 07/19] =?UTF-8?q?fix(=E7=9B=AE=E5=BD=95=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5):=20=E7=9B=AE=E5=BD=95=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=89=B9=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qiwenshare/file/controller/TaskController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/qiwenshare/file/controller/TaskController.java b/src/main/java/com/qiwenshare/file/controller/TaskController.java index ddcf8b9..e5a829c 100644 --- a/src/main/java/com/qiwenshare/file/controller/TaskController.java +++ b/src/main/java/com/qiwenshare/file/controller/TaskController.java @@ -33,6 +33,14 @@ public class TaskController { @Scheduled(fixedRate = 1000 * 60 * 60 * 24) public void updateElasticSearch() { List userfileList = userFileService.list(); + for (int i = 0; i < userfileList.size(); i++) { + QiwenFile ufopFile = new QiwenFile(userfileList.get(i).getFilePath(), userfileList.get(i).getFileName(), userfileList.get(i).getIsDir() == 1); + fileDealComp.restoreParentFilePath(ufopFile, userfileList.get(i).getUserId()); + if (i % 1000 == 0 || i == userfileList.size() - 1) { + log.info("目录健康检查进度:" + (i + 1) + "/" + userfileList.size()); + } + } + userfileList = userFileService.list(); for (UserFile userFile : userfileList) { fileDealComp.uploadESByUserFileId(userFile.getUserFileId()); } From 3a4fd12acb8ba0b545c8ed8a4563603b677c12b9 Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sun, 8 May 2022 10:31:48 +0800 Subject: [PATCH 08/19] =?UTF-8?q?fix(=E7=9B=AE=E5=BD=95=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5):=20=E7=9B=AE=E5=BD=95=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=89=B9=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/qiwenshare/file/controller/TaskController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/controller/TaskController.java b/src/main/java/com/qiwenshare/file/controller/TaskController.java index e5a829c..8dad675 100644 --- a/src/main/java/com/qiwenshare/file/controller/TaskController.java +++ b/src/main/java/com/qiwenshare/file/controller/TaskController.java @@ -1,6 +1,7 @@ package com.qiwenshare.file.controller; import co.elastic.clients.elasticsearch.ElasticsearchClient; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qiwenshare.file.api.IShareFileService; import com.qiwenshare.file.component.FileDealComp; import com.qiwenshare.file.domain.ShareFile; @@ -32,7 +33,7 @@ public class TaskController { @Scheduled(fixedRate = 1000 * 60 * 60 * 24) public void updateElasticSearch() { - List userfileList = userFileService.list(); + List userfileList = userFileService.list(new QueryWrapper().eq("deleteFlag", 0)); for (int i = 0; i < userfileList.size(); i++) { QiwenFile ufopFile = new QiwenFile(userfileList.get(i).getFilePath(), userfileList.get(i).getFileName(), userfileList.get(i).getIsDir() == 1); fileDealComp.restoreParentFilePath(ufopFile, userfileList.get(i).getUserId()); @@ -40,7 +41,7 @@ public class TaskController { log.info("目录健康检查进度:" + (i + 1) + "/" + userfileList.size()); } } - userfileList = userFileService.list(); + userfileList = userFileService.list(new QueryWrapper().eq("deleteFlag", 0)); for (UserFile userFile : userfileList) { fileDealComp.uploadESByUserFileId(userFile.getUserFileId()); } From ecb32b05f7c42e5c62eeccaff4afc1e62f0f886e Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sun, 8 May 2022 10:37:17 +0800 Subject: [PATCH 09/19] =?UTF-8?q?fix(=E7=9B=AE=E5=BD=95=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5):=20=E7=9B=AE=E5=BD=95=E5=81=A5=E5=BA=B7?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=89=B9=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qiwenshare/file/controller/TaskController.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/controller/TaskController.java b/src/main/java/com/qiwenshare/file/controller/TaskController.java index 8dad675..ada7a75 100644 --- a/src/main/java/com/qiwenshare/file/controller/TaskController.java +++ b/src/main/java/com/qiwenshare/file/controller/TaskController.java @@ -35,10 +35,16 @@ public class TaskController { public void updateElasticSearch() { List userfileList = userFileService.list(new QueryWrapper().eq("deleteFlag", 0)); for (int i = 0; i < userfileList.size(); i++) { - QiwenFile ufopFile = new QiwenFile(userfileList.get(i).getFilePath(), userfileList.get(i).getFileName(), userfileList.get(i).getIsDir() == 1); - fileDealComp.restoreParentFilePath(ufopFile, userfileList.get(i).getUserId()); - if (i % 1000 == 0 || i == userfileList.size() - 1) { - log.info("目录健康检查进度:" + (i + 1) + "/" + userfileList.size()); + try { + + QiwenFile ufopFile = new QiwenFile(userfileList.get(i).getFilePath(), userfileList.get(i).getFileName(), userfileList.get(i).getIsDir() == 1); + fileDealComp.restoreParentFilePath(ufopFile, userfileList.get(i).getUserId()); + if (i % 1000 == 0 || i == userfileList.size() - 1) { + log.info("目录健康检查进度:" + (i + 1) + "/" + userfileList.size()); + } + + } catch (Exception e) { + log.error(e.getMessage()); } } userfileList = userFileService.list(new QueryWrapper().eq("deleteFlag", 0)); From bfccdde71764e16b6e8385bc047e314fe9a616ca Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sun, 8 May 2022 12:16:23 +0800 Subject: [PATCH 10/19] =?UTF-8?q?fix(=E9=9F=B3=E9=A2=91=E9=A2=84=E8=A7=88)?= =?UTF-8?q?:=20java=E8=8E=B7=E5=8F=96=E9=9F=B3=E9=A2=91=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++++++ .../java/com/qiwenshare/file/domain/Music.java | 3 +++ .../file/service/FiletransferService.java | 14 ++++++-------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index b0a76b9..b66e1cb 100644 --- a/pom.xml +++ b/pom.xml @@ -128,6 +128,12 @@ 0.9.1 + + org + jaudiotagger + 2.0.1 + + diff --git a/src/main/java/com/qiwenshare/file/domain/Music.java b/src/main/java/com/qiwenshare/file/domain/Music.java index 3a24b4e..6ed9edf 100644 --- a/src/main/java/com/qiwenshare/file/domain/Music.java +++ b/src/main/java/com/qiwenshare/file/domain/Music.java @@ -56,4 +56,7 @@ public class Music { private String encoder; @Column(columnDefinition = "mediumblob") private String albumImage; + + @Column + private Float trackLength; } diff --git a/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/src/main/java/com/qiwenshare/file/service/FiletransferService.java index 8f691e2..58f768f 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -41,6 +41,9 @@ import com.qiwenshare.ufop.util.UFOPUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; +import org.jaudiotagger.audio.AudioFileIO; +import org.jaudiotagger.audio.mp3.MP3AudioHeader; +import org.jaudiotagger.audio.mp3.MP3File; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import sun.nio.cs.ext.GBK; @@ -293,18 +296,13 @@ public class FiletransferService implements IFiletransferService { outFile1.createNewFile(); } music.setAlbumImage(Base64.getEncoder().encodeToString(albumImageData)); -// FileOutputStream fileOutputStream1 = new FileOutputStream(outFile1); -// IOUtils.write(albumImageData, fileOutputStream1); -// Copier copier = ufopFactory.getCopier(); -// CopyFile copyFile = new CopyFile(); -// copyFile.setExtendName("png"); -// String fileUrl = copier.copy(new FileInputStream(outFile1), copyFile); -// music.setAlbumImageUrl(fileUrl); - System.out.println("Have album image data, length: " + albumImageData.length + " bytes"); System.out.println("Album image mime type: " + id3v2Tag.getAlbumImageMimeType()); } } + MP3File f = (MP3File) AudioFileIO.read(outFile); + MP3AudioHeader audioHeader = (MP3AudioHeader) f.getAudioHeader(); + music.setTrackLength(Float.parseFloat(audioHeader.getTrackLength() + "")); musicMapper.insert(music); } } catch (Exception e) { From d6b101e56d9f2311c33aaf5a3ba34e9b5427684a Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Sun, 8 May 2022 13:53:29 +0800 Subject: [PATCH 11/19] =?UTF-8?q?fix(=E6=96=87=E4=BB=B6=E6=9F=A5=E8=AF=A2)?= =?UTF-8?q?:=20like=E6=9F=A5=E8=AF=A2=E8=B7=AF=E5=BE=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/component/FileDealComp.java | 2 +- .../com/qiwenshare/file/io/QiwenFile.java | 1 + .../file/mapper/UserFileMapper.java | 10 ---- .../file/service/FiletransferService.java | 5 +- .../file/service/UserFileService.java | 8 +-- .../qiwenshare/file/util/QiwenFileUtil.java | 7 +++ src/main/resources/mapper/UserFileMapper.xml | 59 ------------------- 7 files changed, 15 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/qiwenshare/file/component/FileDealComp.java b/src/main/java/com/qiwenshare/file/component/FileDealComp.java index 5af0f25..ec2743a 100644 --- a/src/main/java/com/qiwenshare/file/component/FileDealComp.java +++ b/src/main/java/com/qiwenshare/file/component/FileDealComp.java @@ -170,7 +170,7 @@ public class FileDealComp { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.select(UserFile::getFileName, UserFile::getFilePath) - .likeRight(UserFile::getFilePath, filePath) + .likeRight(UserFile::getFilePath, QiwenFileUtil.formatLikePath(filePath)) .eq(UserFile::getIsDir, 1) .eq(UserFile::getDeleteFlag, 0) .eq(UserFile::getUserId, sessionUserId) diff --git a/src/main/java/com/qiwenshare/file/io/QiwenFile.java b/src/main/java/com/qiwenshare/file/io/QiwenFile.java index 1ef17b0..53719da 100644 --- a/src/main/java/com/qiwenshare/file/io/QiwenFile.java +++ b/src/main/java/com/qiwenshare/file/io/QiwenFile.java @@ -51,6 +51,7 @@ public class QiwenFile { int length = path.length(); return path.substring(0, length - 1); } + return path; } diff --git a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java index 16d39ff..780ed7c 100644 --- a/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java +++ b/src/main/java/com/qiwenshare/file/mapper/UserFileMapper.java @@ -11,18 +11,8 @@ import java.util.List; public interface UserFileMapper extends BaseMapper { - void updateFilepathByPathAndName(String oldfilePath, String newfilePath, String fileName, String extendName, long userId); - void updateFilepathByFilepath(String oldfilePath, String newfilePath, long userId); - void batchInsertByPathAndName(@Param("oldFilePath") String oldFilePath, - @Param("newFilePath") String newfilePath, - @Param("fileName") String fileName, - @Param("extendName") String extendName, - @Param("userId") long userId); - void batchInsertByFilepath(@Param("oldFilePath") String oldFilePath, - @Param("newFilePath") String newfilePath, - @Param("userId") long userId); List selectUserFileByLikeRightFilePath(@Param("filePath") String filePath, @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 58f768f..ef2bc8c 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -248,7 +248,7 @@ public class FiletransferService implements IFiletransferService { if (mp3file.hasId3v1Tag()) { ID3v1 id3v1Tag = mp3file.getId3v1Tag(); music.setTrack(formatChatset(id3v1Tag.getTrack())); - music.setArtist(formatChatset(id3v1Tag.getTrack())); + music.setArtist(formatChatset(id3v1Tag.getArtist())); music.setTitle(formatChatset(id3v1Tag.getTitle())); music.setAlbum(formatChatset(id3v1Tag.getAlbum())); music.setYear(formatChatset(id3v1Tag.getYear())); @@ -364,8 +364,9 @@ public class FiletransferService implements IFiletransferService { httpServletResponse.setContentLengthLong(fileBean.getFileSize()); downloader.download(httpServletResponse, downloadFile); } else { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.likeRight(UserFile::getFilePath, userFile.getFilePath() + "/" + userFile.getFileName()) + lambdaQueryWrapper.likeRight(UserFile::getFilePath, QiwenFileUtil.formatLikePath(userFile.getFilePath() + "/" + userFile.getFileName())) .eq(UserFile::getUserId, userFile.getUserId()) .eq(UserFile::getDeleteFlag, 0); List userFileList = userFileMapper.selectList(lambdaQueryWrapper); diff --git a/src/main/java/com/qiwenshare/file/service/UserFileService.java b/src/main/java/com/qiwenshare/file/service/UserFileService.java index a86862c..b7258ad 100644 --- a/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiwenshare.common.constant.FileConstant; -import com.qiwenshare.common.exception.QiwenException; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.common.util.security.JwtUser; import com.qiwenshare.common.util.security.SessionUtil; @@ -23,6 +22,7 @@ import com.qiwenshare.file.mapper.FileMapper; import com.qiwenshare.file.mapper.FileTypeMapper; import com.qiwenshare.file.mapper.RecoveryFileMapper; import com.qiwenshare.file.mapper.UserFileMapper; +import com.qiwenshare.file.util.QiwenFileUtil; import com.qiwenshare.file.vo.file.FileListVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -31,12 +31,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.Executor; import java.util.concurrent.Executors; -import java.util.stream.Collectors; @Slf4j @Service @@ -164,7 +162,7 @@ public class UserFileService extends ServiceImpl impl if (extendName == null) { //为null说明是目录,则需要移动子目录 QueryWrapper subQueryWrapper = new QueryWrapper(); - subQueryWrapper.likeRight("filePath", oldfilePath); + subQueryWrapper.likeRight("filePath", QiwenFileUtil.formatLikePath(oldfilePath)); subQueryWrapper.eq("userId", userId); List subUserFileList = userFileMapper.selectList(subQueryWrapper); for (UserFile userFile : subUserFileList) { @@ -245,7 +243,7 @@ public class UserFileService extends ServiceImpl impl @Override public List selectUserFileByLikeRightFilePath(String filePath, long userId) { - return userFileMapper.selectUserFileByLikeRightFilePath(filePath, userId); + return userFileMapper.selectUserFileByLikeRightFilePath(QiwenFileUtil.formatLikePath(filePath), userId); } private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum, Long userId) { diff --git a/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java b/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java index 73ef5bd..a8d9bff 100644 --- a/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java +++ b/src/main/java/com/qiwenshare/file/util/QiwenFileUtil.java @@ -49,4 +49,11 @@ public class QiwenFileUtil { return param; } + public static String formatLikePath(String filePath) { + String newFilePath = filePath.replace("'", "\\'"); + newFilePath = newFilePath.replace("%", "\\%"); + newFilePath = newFilePath.replace("_", "\\_"); + return newFilePath; + } + } diff --git a/src/main/resources/mapper/UserFileMapper.xml b/src/main/resources/mapper/UserFileMapper.xml index 02f1f01..62adfeb 100644 --- a/src/main/resources/mapper/UserFileMapper.xml +++ b/src/main/resources/mapper/UserFileMapper.xml @@ -47,65 +47,6 @@ where (filePath = #{filePath} or filePath like concat(#{filePath},'/%')) and userId = #{userId} and deleteFlag = 0 - - - UPDATE userfile SET filePath=REPLACE(filePath, #{param1}, #{param2}) - WHERE filePath like N'${param1}%' and userId = #{param3} - - - - update userfile set filePath = #{param2} - where filePath = #{param1} and fileName = #{param3} - - and extendName = #{param4} - - - and extendName is null - - and userId = #{param5} - - - - insert into userfile ( deleteBatchNum, deleteFlag, deleteTime, - extendName, fileId, fileName, filePath, isDir, uploadTime, userId) - (select deleteBatchNum, deleteFlag, deleteTime, extendName, fileId, - fileName, #{newFilePath}, isDir, uploadTime, userId - from userfile - - - and userId = #{userId} - - - and fileName = #{fileName} - - - and filePath = #{oldFilePath} - - - - and extendName = #{extendName} - - - and isDir = 1 - - - - - ) - - - - insert into userfile ( deleteBatchNum, deleteFlag, deleteTime, - extendName, fileId, fileName, filePath, isDir, uploadTime, userId) - (select deleteBatchNum, deleteFlag, deleteTime, extendName, fileId, - fileName, REPLACE(filePath, #{oldFilePath}, #{newFilePath}), isDir, - uploadTime, userId - from userfile - where filePath like N'${oldFilePath}%' and userId = #{userId} - ) - - -