Prechádzať zdrojové kódy

http://192.168.0.21/index.php?m=bug&f=view&id=29277
http://192.168.0.21/index.php?m=bug&f=view&id=29269
修改拷贝逻辑

tianboguang 3 rokov pred
rodič
commit
f7cb74a2eb

+ 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;
 }

+ 42 - 1
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();
 
@@ -1363,6 +1372,10 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         String newPath = String.format("/mnt/4Dkankan/scene/%s/caches/images/", newNum);
         FileUtils.copyDirectiory(oldPath,newPath);
 
+        String scenePath = ConstantFilePath.SCENE_V4_PATH + num;
+        String newScenePath = ConstantFilePath.SCENE_V4_PATH + newNum;
+        FileUtils.copyDirectiory(scenePath, newScenePath);
+
         // 拷贝数据
         Long proId = scenePro.getId();
         scenePro.setId(paramVO.getNewSceneProId());
@@ -1376,6 +1389,7 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         SceneProExt proExt = sceneProExtService.findBySceneProId(proId);
         proExt.setDataSource(paramVO.getDatasource());
         proExt.setId(null);
+        proExt.setViewCount(0);
         proExt.setSceneProId(scenePro.getId());
         sceneProExtService.save(proExt);
 
@@ -1416,5 +1430,32 @@ 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(num);
+        sceneJson.setCreateTime(scenePlus.getCreateTime());
+
+        sceneJson.setSceneResolution(plusExt.getSceneResolution());
+        sceneJson.setSceneFrom(plusExt.getSceneFrom());
+        if(StrUtil.isNotEmpty(plusExt.getVideos())){
+            sceneJson.setVideos(plusExt.getVideos());
+        }
+
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", num);
+        uploadToOssUtil.upload(JSON.toJSONBytes(sceneJson), sceneJsonPath);
+
+
+        // 生成二维码
+        String sceneUrl = mainUrl + "/" + sceneProNewUrl;
+        String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + num + ".png";
+        String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/" + num + "_en.png";
+        MatrixToImageWriterUtil.createQRCode(sceneUrl + num, outPathZh, false,null);
+        MatrixToImageWriterUtil.createQRCode(sceneUrl + num + "&lang=en", outPathEn, false, null);
+        uploadToOssUtil.upload(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, num) + num + ".png");
+        uploadToOssUtil.upload(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, num) + num + "_en.png");
     }
 }