|
@@ -131,7 +131,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public ResultData publicScene(SceneEditInfoParamVO param) throws Exception {
|
|
|
|
|
|
+ public ResultData publicScene(SceneEditInfoParamVO param) throws Exception{
|
|
String sceneNum = param.getNum();
|
|
String sceneNum = param.getNum();
|
|
if(StrUtil.isEmpty(sceneNum)){
|
|
if(StrUtil.isEmpty(sceneNum)){
|
|
throw new BusinessException(ErrorCode.PARAM_REQUIRED);
|
|
throw new BusinessException(ErrorCode.PARAM_REQUIRED);
|
|
@@ -139,8 +139,17 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
|
|
|
|
//根据场景码查询数据库
|
|
//根据场景码查询数据库
|
|
ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
|
|
ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
|
|
|
|
+ SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
|
|
SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
|
|
SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
|
|
- SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
|
|
|
|
|
|
+ SceneEditControls sceneEditControls = null;
|
|
|
|
+ if(sceneEditInfo == null){
|
|
|
|
+ sceneEditInfo = new SceneEditInfo();
|
|
|
|
+ sceneEditInfo.setSceneProId(scenePro.getId());
|
|
|
|
+
|
|
|
|
+ sceneEditControls = new SceneEditControls();
|
|
|
|
+ }else{
|
|
|
|
+ sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
|
|
|
|
+ }
|
|
|
|
|
|
//生成sceneJson
|
|
//生成sceneJson
|
|
SceneJsonBean sceneJson = BeanUtil.copyProperties(sceneEditInfo, SceneJsonBean.class);
|
|
SceneJsonBean sceneJson = BeanUtil.copyProperties(sceneEditInfo, SceneJsonBean.class);
|
|
@@ -152,7 +161,10 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
}
|
|
}
|
|
|
|
|
|
//处理热点数据,生成hot.json
|
|
//处理热点数据,生成hot.json
|
|
- this.publicHotData(sceneNum, sceneJson);
|
|
|
|
|
|
+ this.publicHotData(sceneNum, sceneJson, sceneEditInfo);
|
|
|
|
+
|
|
|
|
+ //处理球幕视频
|
|
|
|
+ this.buildVideo(sceneEditInfo, sceneProExt.getDataSource(), sceneNum);
|
|
|
|
|
|
//上传sceneJson文件
|
|
//上传sceneJson文件
|
|
String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", sceneNum);
|
|
String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", sceneNum);
|
|
@@ -172,11 +184,46 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
String viewPath = String.format(UploadFilePath.VIEW_PATH, param.getNum());
|
|
String viewPath = String.format(UploadFilePath.VIEW_PATH, param.getNum());
|
|
uploadToOssUtil.copyFiles(editPath,viewPath);
|
|
uploadToOssUtil.copyFiles(editPath,viewPath);
|
|
|
|
|
|
-
|
|
|
|
return ResultData.ok();
|
|
return ResultData.ok();
|
|
}
|
|
}
|
|
|
|
|
|
- private void publicHotData(String sceneNum, SceneJsonBean sceneJson) throws IOException {
|
|
|
|
|
|
+ private void buildVideo(SceneEditInfo sceneEditInfo, String path, String num) throws Exception{
|
|
|
|
+ if(CommonStatus.NO.equals(sceneEditInfo.getBuildVideoStatus())){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(path != null && !"".equals(path) && path.startsWith("http")){
|
|
|
|
+ path = ConstantFilePath.BUILD_MODEL_PATH + File.separator + path.split("/")[path.split("/").length - 2];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String target = path + "_images";
|
|
|
|
+
|
|
|
|
+ File video = new File(target + File.separator + "extras/video");
|
|
|
|
+ //如果文件夹或者文件不存在,跳出
|
|
|
|
+ if(video.exists() || video.listFiles() == null && video.listFiles().length == 0){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, num);
|
|
|
|
+ for(String videoName : video.list()){
|
|
|
|
+ uploadToOssUtil.upload(target + File.separator + "extras/video/" + videoName,userEditPath + 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"),userEditPath + 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.setBuildVideoStatus(CommonStatus.NO.code());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void publicHotData(String sceneNum, SceneJsonBean sceneJson, SceneEditInfo sceneEditInfo) throws IOException {
|
|
String hotDataKey = String.format(RedisKey.SCENE_HOT_DATA, sceneNum);
|
|
String hotDataKey = String.format(RedisKey.SCENE_HOT_DATA, sceneNum);
|
|
Map<String, String> hotMap = redisUtil.hmget(hotDataKey);
|
|
Map<String, String> hotMap = redisUtil.hmget(hotDataKey);
|
|
List<String> hotList = Lists.newArrayList();
|
|
List<String> hotList = Lists.newArrayList();
|
|
@@ -195,7 +242,8 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
|
|
|
|
//修改tags状态为是,标识有热点数据
|
|
//修改tags状态为是,标识有热点数据
|
|
ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
|
|
ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
|
|
- this.saveTagsToSceneEditInfo(sceneNum, scenePro.getId());
|
|
|
|
|
|
+
|
|
|
|
+ this.saveTagsToSceneEditInfo(sceneNum, scenePro.getId(), sceneEditInfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -565,7 +613,7 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void saveTagsToSceneEditInfo(String num, Long sceneProId){
|
|
|
|
|
|
+ public void saveTagsToSceneEditInfo(String num, Long sceneProId, SceneEditInfo sceneEditInfo){
|
|
//查询缓存是否包含热点数据
|
|
//查询缓存是否包含热点数据
|
|
String key = String.format(RedisKey.SCENE_HOT_DATA, num);
|
|
String key = String.format(RedisKey.SCENE_HOT_DATA, num);
|
|
Map<String, String> allTagsMap = redisUtil.hmget(key);
|
|
Map<String, String> allTagsMap = redisUtil.hmget(key);
|
|
@@ -579,21 +627,11 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
}
|
|
}
|
|
|
|
|
|
//更改热点状态
|
|
//更改热点状态
|
|
- SceneEditInfo sceneEditInfo = this.getBySceneProId(sceneProId);
|
|
|
|
- if(Objects.isNull(sceneEditInfo)){
|
|
|
|
- sceneEditInfo = new SceneEditInfo();
|
|
|
|
- sceneEditInfo.setSceneProId(sceneProId);
|
|
|
|
- sceneEditInfo.setTags(hashTags ? CommonStatus.YES.code() : CommonStatus.NO.code());
|
|
|
|
- this.save(sceneEditInfo);
|
|
|
|
- }else{
|
|
|
|
- //更改场景编辑版本
|
|
|
|
- this.update(
|
|
|
|
- new LambdaUpdateWrapper<SceneEditInfo>()
|
|
|
|
- .setSql("version=version+" + 1)
|
|
|
|
- .set(SceneEditInfo::getTags, hashTags ? CommonStatus.YES.code() : CommonStatus.NO.code())
|
|
|
|
- .eq(SceneEditInfo::getId, sceneEditInfo.getId()));
|
|
|
|
|
|
+ sceneEditInfo.setTags(hashTags ? CommonStatus.YES.code() : CommonStatus.NO.code());
|
|
|
|
+ //version 是空的代表 sceneEditInfo记录集不存在
|
|
|
|
+ if(sceneEditInfo.getVersion() != null){
|
|
|
|
+ sceneEditInfo.setVersion(sceneEditInfo.getVersion() + 1);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -679,11 +717,21 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
|
|
targetFile.getParentFile().mkdirs();
|
|
targetFile.getParentFile().mkdirs();
|
|
}
|
|
}
|
|
|
|
|
|
- //上传文件
|
|
|
|
|
|
+ //保存视频到本地
|
|
file.transferTo(targetFile);
|
|
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);
|
|
|
|
+ }
|
|
|
|
|
|
- return null;
|
|
|
|
|
|
+ return ResultData.ok();
|
|
}
|
|
}
|
|
|
|
|
|
private void updateBoxVideos(SceneEditInfo sceneEditInfo, Long sceneProId, String boxVideos){
|
|
private void updateBoxVideos(SceneEditInfo sceneEditInfo, Long sceneProId, String boxVideos){
|