lyhzzz 2 年之前
父节点
当前提交
a3eecb941c
共有 1 个文件被更改,包括 75 次插入79 次删除
  1. 75 79
      src/main/java/com/fdkankan/fusion/service/impl/CaseVideoServiceImpl.java

+ 75 - 79
src/main/java/com/fdkankan/fusion/service/impl/CaseVideoServiceImpl.java

@@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -84,89 +85,84 @@ public class CaseVideoServiceImpl extends ServiceImpl<ICaseVideoMapper, CaseVide
         if(videoFolder == null){
             throw new BusinessException(ResultCode.FOLDER_NOT_EXIST);
         }
-
-        runThread(files,videoFolder,this);
+        redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "0");
+        //替换文件夹中文件
+        List<CaseVideo> videoList = new ArrayList<>();
+        Integer sort = 1;
+        LinkedHashSet<String> filePathSet = new LinkedHashSet<>();
+        for (MultipartFile file : files) {
+            String ossPath = uploadService.uploadFile(file, true, String.format(FilePath.VIDEO_OSS_PATH, videoFolder.getVideoFolderId()) + "/", filePathSet);
+            String suffixName = ossPath.substring(ossPath.lastIndexOf("."));
+
+            CaseVideo caseVideo = new CaseVideo();
+            caseVideo.setFolderId(videoFolder.getVideoFolderId());
+            caseVideo.setVideoPath(ossPath);
+            caseVideo.setVideoName(file.getName());
+            caseVideo.setVideoCover(ossPath.replace(suffixName, ".jpg"));
+            caseVideo.setSort(sort);
+            videoList.add(caseVideo);
+            sort++;
+        }
+        runThread(videoList,filePathSet,videoFolder,this);
         return videoFolder;
     }
+    @Async
+    public void runThread(List<CaseVideo> videoList, LinkedHashSet<String> filePathSet,CaseVideoFolder videoFolder,ICaseVideoService caseVideoService){
+        try {
+            LinkedHashSet<String> filePathSetAll = new LinkedHashSet<>();
+            String mergeVideoUrl = null;
+            if (StringUtils.isNotBlank(videoFolder.getVideoMergeUrl())) {
+                mergeVideoUrl = videoFolder.getVideoMergeUrl().replace(queryPath, "/home/");
+                uploadToOssUtil.downFormAli(videoFolder.getVideoMergeUrl().replace(queryPath, ""), mergeVideoUrl);
+                uploadService.deleteOssUrl(videoFolder.getVideoMergeUrl());
+            }
+            if (StringUtils.isNotBlank(videoFolder.getVideoMergeUrl())) {
+                uploadService.deleteOssUrl(videoFolder.getVideoFolderCover());
+            }
+            this.deleteByFolderId(videoFolder.getVideoFolderId());
+            redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "10");
+            caseVideoService.saveBatch(videoList);
+            if (videoList.size() <= 0) {
+                return;
+            }
 
-    private void runThread(MultipartFile[] files,CaseVideoFolder videoFolder,ICaseVideoService caseVideoService){
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    String mergeVideoUrl = null;
-                    if (StringUtils.isNotBlank(videoFolder.getVideoMergeUrl())) {
-                        mergeVideoUrl = videoFolder.getVideoMergeUrl().replace(queryPath, "/home/");
-                        uploadToOssUtil.downFormAli(videoFolder.getVideoMergeUrl().replace(queryPath, ""), mergeVideoUrl);
-                        uploadService.deleteOssUrl(videoFolder.getVideoMergeUrl());
-                    }
-                    if (StringUtils.isNotBlank(videoFolder.getVideoMergeUrl())) {
-                        uploadService.deleteOssUrl(videoFolder.getVideoFolderCover());
-                    }
-                    caseVideoService.deleteByFolderId(videoFolder.getVideoFolderId());
-                    redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "10");
-                    //替换文件夹中文件
-                    List<CaseVideo> videoList = new ArrayList<>();
-                    Integer sort = 1;
-                    LinkedHashSet<String> filePathSet = new LinkedHashSet<>();
-                    LinkedHashSet<String> filePathSetAll = new LinkedHashSet<>();
-                    for (MultipartFile file : files) {
-                        String ossPath = uploadService.uploadFile(file, true, String.format(FilePath.VIDEO_OSS_PATH, videoFolder.getVideoFolderId()) + "/", filePathSet);
-                        String suffixName = ossPath.substring(ossPath.lastIndexOf("."));
-
-                        CaseVideo caseVideo = new CaseVideo();
-                        caseVideo.setFolderId(videoFolder.getVideoFolderId());
-                        caseVideo.setVideoPath(ossPath);
-                        caseVideo.setVideoName(file.getName());
-                        caseVideo.setVideoCover(ossPath.replace(suffixName, ".jpg"));
-                        caseVideo.setSort(sort);
-                        videoList.add(caseVideo);
-                        sort++;
-                    }
-                    caseVideoService.saveBatch(videoList);
-                    if (videoList.size() <= 0) {
-                        return;
-                    }
-
-                    redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "20");
-                    if (StringUtils.isNotBlank(mergeVideoUrl)) {
-                        filePathSetAll.add(mergeVideoUrl);
-                    }
-                    filePathSetAll.addAll(filePathSet);
-                    String mergeLocalName = VideoUtil.mergeVideo(filePathSetAll, FilePath.VIDEO_LOCAL_PATH);
-                    redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "30");
-                    if (mergeLocalName == null) {
-                        updateCaseVideoStatus(videoFolder.getVideoFolderId(), -1);
-                        redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "-1");
-                        return;
-                    }
-                    String mergeLocalPath = FilePath.VIDEO_LOCAL_PATH + "/" + mergeLocalName;
-                    String ossKey = String.format(FilePath.VIDEO_OSS_PATH, videoFolder.getVideoFolderId()) + "/" + mergeLocalName;
-
-                    String mergeLocalPathImg = FilePath.VIDEO_LOCAL_PATH + "/" + mergeLocalName.replace(".mp4", ".jpg");
-                    String ossKeyImg = String.format(FilePath.VIDEO_OSS_PATH, videoFolder.getVideoFolderId()) + "/" + mergeLocalName.replace(".mp4", ".jpg");
-                    uploadToOssUtil.uploadOss(mergeLocalPath, ossKey);
-                    uploadToOssUtil.uploadOss(mergeLocalPathImg, ossKeyImg);
-                    if (!uploadToOssUtil.existKey(ossKey) && !uploadToOssUtil.existKey(ossKeyImg)) {
-                        updateCaseVideoStatus(videoFolder.getVideoFolderId(), -1);
-                        redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "-1");
-                        return;
-                    }
-                    redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "70");
-
-                    videoFolder.setVideoMergeUrl(queryPath + ossKey);
-                    videoFolder.setVideoFolderCover(queryPath + ossKeyImg);
-                    videoFolderService.updateById(videoFolder);
-                    FileUtil.del(FilePath.VIDEO_LOCAL_PATH);
-                    updateCaseVideoStatus(videoFolder.getVideoFolderId(), 1);
-                    redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "100");
-                }catch (Exception e){
-                    updateCaseVideoStatus(videoFolder.getVideoFolderId(), -1);
-                    redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "-1");
-                    log.info("合并视频出错:",e);
-                }
+            redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "20");
+            if (StringUtils.isNotBlank(mergeVideoUrl)) {
+                filePathSetAll.add(mergeVideoUrl);
+            }
+            filePathSetAll.addAll(filePathSet);
+            String mergeLocalName = VideoUtil.mergeVideo(filePathSetAll, FilePath.VIDEO_LOCAL_PATH);
+            redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "30");
+            if (mergeLocalName == null) {
+                updateCaseVideoStatus(videoFolder.getVideoFolderId(), -1);
+                redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "-1");
+                return;
             }
-        }).start();
+            String mergeLocalPath = FilePath.VIDEO_LOCAL_PATH + "/" + mergeLocalName;
+            String ossKey = String.format(FilePath.VIDEO_OSS_PATH, videoFolder.getVideoFolderId()) + "/" + mergeLocalName;
+
+            String mergeLocalPathImg = FilePath.VIDEO_LOCAL_PATH + "/" + mergeLocalName.replace(".mp4", ".jpg");
+            String ossKeyImg = String.format(FilePath.VIDEO_OSS_PATH, videoFolder.getVideoFolderId()) + "/" + mergeLocalName.replace(".mp4", ".jpg");
+            uploadToOssUtil.uploadOss(mergeLocalPath, ossKey);
+            uploadToOssUtil.uploadOss(mergeLocalPathImg, ossKeyImg);
+            if (!uploadToOssUtil.existKey(ossKey) && !uploadToOssUtil.existKey(ossKeyImg)) {
+                updateCaseVideoStatus(videoFolder.getVideoFolderId(), -1);
+                redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "-1");
+                return;
+            }
+            redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "70");
+
+            videoFolder.setVideoMergeUrl(queryPath + ossKey);
+            videoFolder.setVideoFolderCover(queryPath + ossKeyImg);
+            videoFolderService.updateById(videoFolder);
+            FileUtil.del(FilePath.VIDEO_LOCAL_PATH);
+            updateCaseVideoStatus(videoFolder.getVideoFolderId(), 1);
+            redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "100");
+        }catch (Exception e){
+            updateCaseVideoStatus(videoFolder.getVideoFolderId(), -1);
+            redisUtil.set(RedisKeyUtil.mergerVideoKey + videoFolder.getVideoFolderId(), "-1");
+            log.info("合并视频出错:",e);
+        }
     }
 
     private void updateCaseVideoStatus(Integer folderId, Integer status) {