Browse Source

上传球幕视频接口 增加 上传到oss逻辑

dengsixing 3 years ago
parent
commit
76ccd09878

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -766,7 +766,7 @@ public class SceneEditController extends BaseController {
     public ResultData uploadBallScreenVideo(
             @RequestParam("num") String num,
             @RequestParam("fileName") String fileName,
-            @RequestParam("file") MultipartFile file) throws IOException {
+            @RequestParam("file") MultipartFile file) throws Exception {
         return sceneEditInfoService.uploadBallScreenVideo(num, fileName, file);
     }
 

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneFileController.java

@@ -126,7 +126,7 @@ public class SceneFileController extends BaseController {
     }
 
     /**
-     * 更新fileid文件的上传状态  转台相机,激光相机
+     *
      *
      * @param params
      * @return

+ 6 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/TestController.java

@@ -133,9 +133,12 @@ public class TestController {
 //        String key = String.format(RedisLockKey.LOCK_SCENE_SYNC, "123");
 //        redisLockUtil.lock(key, 100000);
 
-        JedisConnectionFactory bean = (JedisConnectionFactory)SpringUtil.getBean(RedisConnectionFactory.class);
-        int maxIdle = bean.getPoolConfig().getMaxIdle();
-        return "" + maxIdle;
+//        JedisConnectionFactory bean = (JedisConnectionFactory)SpringUtil.getBean(RedisConnectionFactory.class);
+//        int maxIdle = bean.getPoolConfig().getMaxIdle();
+        MatrixToImageWriterUtil
+            .createQRCode("https://test.4dkankan.com" + "t-RGjyzx4", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+"t-RGjyzx4"+".png",
+                null);
+        return "123";
 
     }
 

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoService.java

@@ -46,7 +46,7 @@ public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
     DownloadVO downloadBallScreenVideo(BallScreenVideoParamVO param);
 
-    ResultData uploadBallScreenVideo(String num,String fileName,MultipartFile file) throws IOException;
+    ResultData uploadBallScreenVideo(String num,String fileName,MultipartFile file) throws Exception;
 
     ResultData sceneSync(String num, String type, String floorPlanJson, String ajkJson, String cameraJson, MultipartFile[] files) throws Exception;
 

+ 36 - 11
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -188,8 +188,9 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         //处理热点数据,生成hot.json
         this.publicHotData(sceneNum, sceneJson, sceneEditInfo);
 
+        // TODO: 2022/3/2 这里的逻辑放在上传球幕视频接口中做了,这里先暂时注释掉,以后要删除
         //处理球幕视频
-        this.buildVideo(sceneEditInfo, sceneProExt.getDataSource(), sceneNum);
+//        this.buildVideo(sceneEditInfo, sceneProExt.getDataSource(), sceneNum);
 
         //上传sceneJson文件
         String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", sceneNum);
@@ -738,7 +739,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
 
     @Override
     public ResultData uploadBallScreenVideo(String num, String fileName, MultipartFile file)
-        throws IOException {
+        throws Exception {
 
         if(!fileName.endsWith(".mp4")){
             throw new BusinessException(ErrorCode.FAILURE_CODE_7007.code(), ErrorCode.FAILURE_CODE_7007.formatMessage("mp4"));
@@ -768,16 +769,40 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         //保存视频到本地
         file.transferTo(targetFile);
 
-        SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
-        if(sceneEditInfo == null){
-            sceneEditInfo = new SceneEditInfo();
-            sceneEditInfo.setSceneProId(scenePro.getId());
-            sceneEditInfo.setBuildVideoStatus(CommonStatus.YES.code());
-            this.save(sceneEditInfo);
-        }else{
-            sceneEditInfo.setBuildVideoStatus(CommonStatus.YES.code());
-            this.updateById(sceneEditInfo);
+        File video = new File(target + File.separator + "extras/video");
+        //如果文件夹或者文件不存在,跳出
+        if(!video.exists() || video.listFiles() == null || video.listFiles().length == 0){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_7009);
+        }
+
+        String videosViewPath = String.format(UploadFilePath.VIDEOS_VIEW_PATH, num);
+        for(String videoName : video.list()){
+            log.info("球幕视频名称:{}", videoName);
+            uploadToOssUtil.upload(target + File.separator + "extras/video/" + videoName,videosViewPath + videoName);
+
+            CreateObjUtil.mp4ToFlv(target + File.separator + "extras/video/" + videoName,
+                target + File.separator + "extras/video/" + videoName.replace("mp4", "flv"));
+
+            uploadToOssUtil.upload(target + File.separator + "extras/video/" + videoName.replace("mp4", "flv"),videosViewPath + videoName.replace("mp4", "flv"));
+
+            //覆盖原始视频资源
+            FileUtils.copyFile(target + File.separator + "extras/video/" + videoName,
+                path + File.separator + "caches/videos/" + videoName, true);
+
         }
+        FileUtils.deleteDirectory(target + File.separator + "extras/video/");
+
+
+//        SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
+//        if(sceneEditInfo == null){
+//            sceneEditInfo = new SceneEditInfo();
+//            sceneEditInfo.setSceneProId(scenePro.getId());
+//            sceneEditInfo.setBuildVideoStatus(CommonStatus.YES.code());
+//            this.save(sceneEditInfo);
+//        }else{
+//            sceneEditInfo.setBuildVideoStatus(CommonStatus.YES.code());
+//            this.updateById(sceneEditInfo);
+//        }
 
         return ResultData.ok();
     }