Преглед изворни кода

Merge branch 'feature-v4.2.0-202206291119' into release

dengsixing пре 3 година
родитељ
комит
7cde042ec6

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

@@ -1,23 +1,20 @@
 package com.fdkankan.scene.controller;
 
-import com.dtflys.forest.annotation.Post;
 import com.fdkankan.common.controller.BaseController;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.IScenePlusService;
+import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
+import com.fdkankan.scene.vo.CopySceneParamVO;
 import com.fdkankan.scene.vo.MoveSceneParamVO;
 import com.fdkankan.scene.vo.UnbindOrBindCameraParamVO;
 import com.fdkankan.scene.vo.UpgradeToV4ParamVO;
-import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
 
 /**
  * <p>
@@ -37,6 +34,9 @@ public class V3Controller extends BaseController {
     private ISceneEditInfoService sceneEditInfoService;
     @Autowired
     private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneService sceneService;
+
 
     /**
      * <p>
@@ -109,5 +109,20 @@ public class V3Controller extends BaseController {
         return scenePlusService.moveScene(param.getNumList(), param.getCameraId(), param.getUserId());
     }
 
+    /**
+     * <p>
+     场景迁移,修改相机id和用户id
+     * </p>
+     * @author dengsixing
+     * @date 2022/6/23
+     * @return com.fdkankan.common.response.ResultData
+     **/
+    @PostMapping(value = "/copyScene")
+    public ResultData copyScene(
+            @RequestBody @Validated CopySceneParamVO param) throws IOException {
+        sceneService.copyScene(param);
+        return ResultData.ok();
+    }
+
 
 }

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

@@ -103,4 +103,6 @@ public interface ISceneService extends IService<Scene> {
     ResultData deleteScene(String sceneNum) throws IOException;
 
     Long getSceneCount(Long cameraId, Long userId);
+
+    void copyScene(CopySceneParamVO copySceneParamVO) throws IOException;
 }

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

@@ -33,6 +33,7 @@ import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.springframework.beans.BeanUtils;
@@ -86,6 +87,22 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     PlatformUserClient platformUserClient;
     @Autowired
     ISceneService sceneService;
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+
+    @Autowired
+    private ISceneEditInfoExtService sceneEditInfoExtService;
+
+    @Autowired
+    private ISceneEditControlsService sceneEditControlsService;
+
     @Autowired
     private ISceneDataDownloadService sceneDataDownloadService;
 
@@ -1319,4 +1336,85 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
         }
         return this.count(queryWrapper);
     }
+
+    @Override
+    public void copyScene(CopySceneParamVO paramVO) throws IOException {
+        String num = paramVO.getOldNum();
+        String newNum = paramVO.getNewNum();
+
+        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        if (ObjectUtils.isEmpty(scenePro)) {
+            return;
+        }
+
+        // 拷贝场景编辑资源
+        String oldEditPath = String.format(UploadFilePath.USER_EDIT_PATH, num);
+
+        String newEditPath = String.format(UploadFilePath.USER_EDIT_PATH, newNum);
+        uploadToOssUtil.copyFiles(oldEditPath,newEditPath);
+
+        // 拷贝场景展示资源
+        String oldViewPath = String.format(UploadFilePath.USER_VIEW_PATH, num);
+        String newViewPath = String.format(UploadFilePath.USER_VIEW_PATH, newNum);
+        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);
+
+        // 拷贝数据
+        Long proId = scenePro.getId();
+        scenePro.setId(null);
+        scenePro.setWebSite(scenePro.getWebSite().replace(num,newNum));
+        scenePro.setSceneName(paramVO.getNewSceneName());
+        scenePro.setThumb(scenePro.getThumb().replace(num,newNum));
+        scenePro.setVideos(scenePro.getVideos().replaceAll(num,newNum));
+        scenePro.setNum(newNum);
+        sceneProService.save(scenePro);
+
+        SceneProExt proExt = sceneProExtService.findBySceneProId(proId);
+        proExt.setDataSource(paramVO.getDatasource());
+        proExt.setId(null);
+        proExt.setSceneProId(scenePro.getId());
+        sceneProExtService.save(proExt);
+
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        Long plusId = scenePlus.getId();
+        scenePlus.setNum(newNum);
+        scenePlus.setId(null);
+        scenePlus.setTitle(scenePro.getSceneName());
+        scenePlusService.save(scenePlus);
+
+        ScenePlusExt plusExt = scenePlusExtService.getScenePlusExtByPlusId(plusId);
+        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));
+        scenePlusExtService.save(plusExt);
+
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(plusId);
+        Long sceneEditInfoId = sceneEditInfo.getId();
+
+        sceneEditInfo.setId(null);
+        sceneEditInfo.setScenePlusId(scenePlus.getId());
+        sceneEditInfo.setSceneProId(scenePro.getId());
+        sceneEditInfo.setTitle(paramVO.getNewSceneName());
+        sceneEditInfoService.save(sceneEditInfo);
+
+        SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoId);
+        sceneEditInfoExt.setId(null);
+        sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
+        sceneEditInfoExt.setScenePlusId(scenePlus.getId());
+        sceneEditInfoExt.setSceneProId(scenePro.getId());
+        sceneEditInfoExtService.save(sceneEditInfoExt);
+
+        SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfoId);
+        sceneEditControls.setId(null);
+        sceneEditControls.setEditInfoId(sceneEditInfo.getId());
+        sceneEditControlsService.save(sceneEditControls);
+
+    }
 }

+ 29 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/CopySceneParamVO.java

@@ -0,0 +1,29 @@
+package com.fdkankan.scene.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/4/21
+ **/
+@Data
+public class CopySceneParamVO {
+
+    @NotNull(message = "oldNum不能为空")
+    private String oldNum;
+
+    @NotNull(message = "newNum不能为空")
+    private String newNum;
+
+    @NotNull(message = "datasource不能为空")
+    private String datasource;
+
+    @NotNull(message = "newSceneName不能为空")
+    private String newSceneName;
+}