Sfoglia il codice sorgente

Merge branch 'hotfix/hotfix-29236' into release

dengsixing 3 anni fa
parent
commit
033a6b3cd8

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

@@ -119,7 +119,7 @@ public class V3Controller extends BaseController {
      **/
     @PostMapping(value = "/copyScene")
     public ResultData copyScene(
-            @RequestBody @Validated CopySceneParamVO param) throws IOException {
+            @RequestBody @Validated CopySceneParamVO param) throws Exception {
         sceneService.copyScene(param);
         return ResultData.ok();
     }

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

@@ -104,5 +104,5 @@ public interface ISceneService extends IService<Scene> {
 
     Long getSceneCount(Long cameraId, Long userId);
 
-    void copyScene(CopySceneParamVO copySceneParamVO) throws IOException;
+    void copyScene(CopySceneParamVO copySceneParamVO) throws Exception;
 }

+ 60 - 10
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -19,6 +20,7 @@ import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.ConvertUtils;
 import com.fdkankan.common.util.DateExtUtil;
 import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.common.util.MatrixToImageWriterUtil;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.fyun.qiniu.QiniuUpload;
 import com.fdkankan.platform.api.dto.User;
@@ -27,6 +29,7 @@ import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
 import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.bean.SceneJsonBean;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneMapper;
 import com.fdkankan.scene.mapper.ISceneProMapper;
@@ -106,6 +109,12 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     @Autowired
     private ISceneDataDownloadService sceneDataDownloadService;
 
+    @Value("${main.url}")
+    private String mainUrl;
+
+    @Value("${scene.pro.new.url}")
+    private String sceneProNewUrl;
+
     @Override
     public void updateUserIdByCameraId(Long userId, Long cameraId) {
         this.update(new LambdaUpdateWrapper<Scene>().eq(Scene::getCameraId, cameraId).set(Scene::getUserId, userId));
@@ -1338,7 +1347,7 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     }
 
     @Override
-    public void copyScene(CopySceneParamVO paramVO) throws IOException {
+    public void copyScene(CopySceneParamVO paramVO) throws Exception {
         String num = paramVO.getOldNum();
         String newNum = paramVO.getNewNum();
 
@@ -1351,31 +1360,41 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         String oldEditPath = String.format(UploadFilePath.EDIT_PATH, num);
 
         String newEditPath = String.format(UploadFilePath.EDIT_PATH, newNum);
-        uploadToOssUtil.copyFiles(oldEditPath,newEditPath);
+        uploadToOssUtil.copyFiles(oldEditPath, newEditPath);
 
         // 拷贝场景展示资源
         String oldViewPath = String.format(UploadFilePath.VIEW_PATH, num);
         String newViewPath = String.format(UploadFilePath.VIEW_PATH, newNum);
-        uploadToOssUtil.copyFiles(oldViewPath,newViewPath);
+        uploadToOssUtil.copyFiles(oldViewPath, newViewPath);
 
         // 拷贝本地资源
         String oldPath = String.format("/mnt/4Dkankan/scene/%s/caches/images/", num);
         String newPath = String.format("/mnt/4Dkankan/scene/%s/caches/images/", newNum);
-        FileUtils.copyDirectiory(oldPath,newPath);
+        if(new File(oldPath).exists()){
+            FileUtils.copyDirectiory(oldPath, newPath);
+        }
+
+        String scenePath = ConstantFilePath.SCENE_V4_PATH + num;
+        File file = new File(scenePath);
+        if(file.exists()){
+            String newScenePath = ConstantFilePath.SCENE_V4_PATH + newNum;
+            FileUtils.copyDirectiory(scenePath, newScenePath);
+        }
 
         // 拷贝数据
         Long proId = scenePro.getId();
         scenePro.setId(paramVO.getNewSceneProId());
-        scenePro.setWebSite(scenePro.getWebSite().replace(num,newNum));
+        scenePro.setWebSite(scenePro.getWebSite().replace(num, newNum));
         scenePro.setSceneName(paramVO.getNewSceneName());
-        scenePro.setThumb(scenePro.getThumb().replace(num,newNum));
-        scenePro.setVideos(scenePro.getVideos().replaceAll("https://4dkk.4dage.com/data/data"+num,"https://4dkk.4dage.com/scene_view_data/"+newNum+"/data"));
+        scenePro.setThumb(scenePro.getThumb().replace(num, newNum));
+        scenePro.setVideos(scenePro.getVideos().replaceAll("https://4dkk.4dage.com/data/data" + num, "https://4dkk.4dage.com/scene_view_data/" + newNum + "/data"));
         scenePro.setNum(newNum);
         sceneProService.saveOrUpdate(scenePro);
 
         SceneProExt proExt = sceneProExtService.findBySceneProId(proId);
         proExt.setDataSource(paramVO.getDatasource());
         proExt.setId(null);
+        proExt.setViewCount(0);
         proExt.setSceneProId(scenePro.getId());
         sceneProExtService.save(proExt);
 
@@ -1390,9 +1409,9 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         plusExt.setId(null);
         plusExt.setPlusId(scenePlus.getId());
         plusExt.setDataSource(paramVO.getDatasource());
-        plusExt.setWebSite(plusExt.getWebSite().replace(num,newNum));
-        plusExt.setThumb(plusExt.getThumb().replace(num,newNum));
-        plusExt.setVideos(plusExt.getVideos().replace(num,newNum));
+        plusExt.setWebSite(plusExt.getWebSite().replace(num, newNum));
+        plusExt.setThumb(plusExt.getThumb().replace(num, newNum));
+        plusExt.setVideos(scenePro.getVideos());
         scenePlusExtService.save(plusExt);
 
         SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(plusId);
@@ -1416,5 +1435,36 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         sceneEditControls.setEditInfoId(sceneEditInfo.getId());
         sceneEditControlsService.save(sceneEditControls);
 
+        // 生成scene.json
+        SceneJsonBean sceneJson = new SceneJsonBean();
+        BeanUtil.copyProperties(sceneEditInfoExt, sceneJson);
+        BeanUtil.copyProperties(sceneEditInfo, sceneJson);
+        SceneEditControlsVO sceneEditControlsVO = BeanUtil.copyProperties(sceneEditControls, SceneEditControlsVO.class);
+        sceneJson.setControls(sceneEditControlsVO);
+        sceneJson.setNum(newNum);
+        sceneJson.setCreateTime(scenePlus.getCreateTime());
+
+        sceneJson.setSceneResolution(plusExt.getSceneResolution());
+        sceneJson.setSceneFrom(plusExt.getSceneFrom());
+        if(StrUtil.isNotEmpty(plusExt.getVideos())){
+            sceneJson.setVideos(plusExt.getVideos());
+        }
+
+        log.info("开始生成本地json文件……");
+        String sceneJsonLocalPath = ConstantFilePath.SCENE_PATH + "data" + File.separator + "data" + newNum + File.separator + "scene.json";
+        FileUtils.writeFile(sceneJsonLocalPath,JSON.toJSONString(sceneJson));
+
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", newNum);
+        uploadToOssUtil.upload(JSON.toJSONBytes(sceneJson), sceneJsonPath);
+
+
+        // 生成二维码
+        String sceneUrl = mainUrl + "/" + sceneProNewUrl;
+        String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + newNum + ".png";
+        String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + newNum + "_en.png";
+        MatrixToImageWriterUtil.createQRCode(sceneUrl + newNum, outPathZh, false,null);
+        MatrixToImageWriterUtil.createQRCode(sceneUrl + newNum + "&lang=en", outPathEn, false, null);
+        uploadToOssUtil.upload(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + ".png");
+        uploadToOssUtil.upload(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + "_en.png");
     }
 }