From af59fb9676eaebad4c7acf497dac1c897064d15a Mon Sep 17 00:00:00 2001 From: jmal Date: Tue, 9 Jul 2024 10:40:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9vtt=E7=BC=A9?= =?UTF-8?q?=E7=95=A5=E5=9B=BE=E9=BB=98=E8=AE=A4=E5=AE=BD=E5=BA=A6=E4=B8=BA?= =?UTF-8?q?192?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/jmal/clouddisk/video/FFMPEGCommand.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jmal/clouddisk/video/FFMPEGCommand.java b/src/main/java/com/jmal/clouddisk/video/FFMPEGCommand.java index fc94b5f6..1b9721ce 100644 --- a/src/main/java/com/jmal/clouddisk/video/FFMPEGCommand.java +++ b/src/main/java/com/jmal/clouddisk/video/FFMPEGCommand.java @@ -24,8 +24,7 @@ public class FFMPEGCommand { /** * 缩略图宽度 */ - static final int thumbnailWidth = 128; - + static final int thumbnailWidth = 192; /** * 获取视频的分辨率和码率信息 * @@ -213,6 +212,10 @@ static ProcessBuilder useNvencCuda(String fileId, Path fileAbsolutePath, int bit "-hwaccel_output_format", "cuda", "-threads", "1", "-i", fileAbsolutePath.toString(), + "-autoscale", "0", + "-map_metadata", "-1", + "-map_chapters", "-1", + "-autorotate", "0", "-threads", "0", "-map", "0:0", "-map", "0:1", From 9d4baaefaa6cf59513da553533bdcc5d7aa999f7 Mon Sep 17 00:00:00 2001 From: jmal Date: Tue, 9 Jul 2024 14:25:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?perf:=20=E5=88=A0=E9=99=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91,=E5=88=A0=E9=99=A4=E6=97=B6=E5=8F=AF=E9=80=89?= =?UTF-8?q?=E6=B0=B8=E4=B9=85=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/rest/FileController.java | 5 +++-- .../jmal/clouddisk/service/IFileService.java | 2 +- .../service/impl/CommonFileService.java | 18 ++++++++++++++++-- .../service/impl/FileServiceImpl.java | 6 +++--- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/jmal/clouddisk/controller/rest/FileController.java b/src/main/java/com/jmal/clouddisk/controller/rest/FileController.java index afad9552..51bcbd09 100644 --- a/src/main/java/com/jmal/clouddisk/controller/rest/FileController.java +++ b/src/main/java/com/jmal/clouddisk/controller/rest/FileController.java @@ -1,6 +1,7 @@ package com.jmal.clouddisk.controller.rest; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.URLUtil; import com.jmal.clouddisk.annotation.LogOperatingFun; import com.jmal.clouddisk.annotation.Permission; @@ -320,10 +321,10 @@ public ResponseResult unFavorite(@RequestParam String[] fileIds) { @DeleteMapping("/delete") @LogOperatingFun @Permission("cloud:file:delete") - public ResponseResult delete(@RequestParam String username, @RequestParam String[] fileIds, @RequestParam String currentDirectory) { + public ResponseResult delete(@RequestParam String username, @RequestParam String[] fileIds, @RequestParam String currentDirectory, Boolean sweep) { if (fileIds != null && fileIds.length > 0) { List list = Arrays.asList(fileIds); - return fileService.delete(username, currentDirectory, list, userLoginHolder.getUsername(), false); + return fileService.delete(username, currentDirectory, list, userLoginHolder.getUsername(), BooleanUtil.isTrue(sweep), true); } else { throw new CommonException(ExceptionType.MISSING_PARAMETERS.getCode(), ExceptionType.MISSING_PARAMETERS.getMsg()); } diff --git a/src/main/java/com/jmal/clouddisk/service/IFileService.java b/src/main/java/com/jmal/clouddisk/service/IFileService.java index 453c30fe..a139b11b 100644 --- a/src/main/java/com/jmal/clouddisk/service/IFileService.java +++ b/src/main/java/com/jmal/clouddisk/service/IFileService.java @@ -174,7 +174,7 @@ public interface IFileService { * @param sweep 是否彻底删除 * @return ResponseResult */ - ResponseResult delete(String username, String currentDirectory, List fileIds, String operator, boolean sweep); + ResponseResult delete(String username, String currentDirectory, List fileIds, String operator, boolean sweep, boolean notify); /** * 显示缩略图 diff --git a/src/main/java/com/jmal/clouddisk/service/impl/CommonFileService.java b/src/main/java/com/jmal/clouddisk/service/impl/CommonFileService.java index 526b4be7..9ce067f2 100644 --- a/src/main/java/com/jmal/clouddisk/service/impl/CommonFileService.java +++ b/src/main/java/com/jmal/clouddisk/service/impl/CommonFileService.java @@ -319,7 +319,7 @@ public String createFile(String username, File file, String userId, Boolean isPu if (lock != null) { lock.lock(); } - UpdateResult updateResult; + UpdateResult updateResult = null; ObjectId objectId = new ObjectId(); String fileId = objectId.toHexString(); try { @@ -364,18 +364,32 @@ public String createFile(String username, File file, String userId, Boolean isPu pushMessage(username, update.getUpdateObject(), Constants.CREATE_FILE); // 添加文件索引 luceneService.pushCreateIndexQueue(fileId); + // 判断回收站是否存在该文件, 如果存在则删除 + checkTrash(file, username); + } catch (Exception e) { + log.error(e.getMessage(), e); } finally { if (lock != null) { lock.unlock(); uploadFileLockCache.invalidate(fileAbsolutePath); } } - if (null != updateResult.getUpsertedId()) { + if (updateResult != null && null != updateResult.getUpsertedId()) { return updateResult.getUpsertedId().asObjectId().getValue().toHexString(); } return fileId; } + private void checkTrash(File file, String username) { + String userId = userService.getUserIdByUserName(username); + String relativePath = getRelativePath(username, String.valueOf(file.getAbsoluteFile()), file.getName()); + Query query = new Query(); + query.addCriteria(Criteria.where(IUserService.USER_ID).is(userId)); + query.addCriteria(Criteria.where("path").is(relativePath)); + query.addCriteria(Criteria.where("name").is(file.getName())); + mongoTemplate.remove(query, TRASH_COLLECTION_NAME); + } + private void updateOtherInfo(FileDocument fileExists, String contentType, Update update) { if (!contentType.equals(fileExists.getContentType())) { update.set(Constants.CONTENT_TYPE, contentType); diff --git a/src/main/java/com/jmal/clouddisk/service/impl/FileServiceImpl.java b/src/main/java/com/jmal/clouddisk/service/impl/FileServiceImpl.java index a7c9bf33..aca3324f 100644 --- a/src/main/java/com/jmal/clouddisk/service/impl/FileServiceImpl.java +++ b/src/main/java/com/jmal/clouddisk/service/impl/FileServiceImpl.java @@ -923,7 +923,7 @@ public ResponseResult move(UploadApiParamDTO upload, List froms, getCopyResult(upload, froms, to, true); String currentDirectory = getOssFileCurrentDirectory(upload, froms); // 删除 - delete(upload.getUsername(), currentDirectory, froms, upload.getUsername(), true); + delete(upload.getUsername(), currentDirectory, froms, upload.getUsername(), true, false); } catch (CommonException e) { pushMessageOperationFileError(upload.getUsername(), Convert.toStr(e.getMsg(), Constants.UNKNOWN_ERROR), "移动"); } catch (Exception e) { @@ -1855,7 +1855,7 @@ public ResponseResult unFavorite(List fileIds) { } @Override - public ResponseResult delete(String username, String currentDirectory, List fileIds, String operator, boolean sweep) { + public ResponseResult delete(String username, String currentDirectory, List fileIds, String operator, boolean sweep, boolean notify) { FileDocument doc = getById(fileIds.get(0)); List operationPermissionList = null; if (doc != null) { @@ -1918,7 +1918,7 @@ public ResponseResult delete(String username, String currentDirectory, L } else { operationTips.setSuccess(false); } - if (!sweep) { + if (notify) { pushMessage(username, operationTips, Constants.OPERATION_TIPS); } return ResultUtil.success();