Quellcode durchsuchen

v4场景初始化方法

dengsixing vor 3 Jahren
Ursprung
Commit
f90614d733

+ 6 - 0
src/main/java/com/fdkankan/scene/service/IScenePlusService.java

@@ -31,4 +31,10 @@ public interface IScenePlusService extends IService<ScenePlus> {
 
     ResultData updateViewCount(String num) throws Exception;
 
+    ResultData initScene(String num, String title, String des, Integer sceneSource,
+        String dataSource, Integer sceneScheme, String sceneResolution, String sceneFrom);
+
+
+
+
 }

+ 99 - 0
src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java

@@ -2,13 +2,26 @@ package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.PayStatus;
+import com.fdkankan.common.constant.SceneKind;
+import com.fdkankan.common.constant.SceneSource;
 import com.fdkankan.common.constant.SceneStatus;
+import com.fdkankan.common.constant.SceneType;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.model.constants.ConstantFilePath;
+import com.fdkankan.model.constants.UploadFilePath;
+import com.fdkankan.scene.bean.SceneJsonBean;
+import com.fdkankan.scene.entity.SceneEditControls;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
+import com.fdkankan.scene.service.ISceneEditControlsService;
+import com.fdkankan.scene.service.ISceneEditInfoExtService;
+import com.fdkankan.scene.vo.SceneEditControlsVO;
 import com.fdkankan.web.response.ResultData;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
@@ -56,6 +69,10 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     private RedisUtil redisUtil;
     @Autowired
     private RedisLockUtil redisLockUtil;
+    @Autowired
+    private ISceneEditInfoExtService sceneEditInfoExtService;
+    @Autowired
+    private ISceneEditControlsService sceneEditControlsService;
 
     @Override
     public ScenePlus getScenePlusByNum(String num) {
@@ -163,4 +180,86 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         redisUtil.hincr(key, sceneNum, 1);
         return ResultData.ok();
     }
+
+    /**
+     * <p>
+            TODO
+     * </p>
+     * @author dengsixing
+     * @date 2022/8/22
+     * @param num 场景码
+     * @param title 场景标题
+     * @param des 场景描述
+     * @param sceneSource   场景来源:相机拍摄10以内表示,1表示八目,2双目,3转台,4 激光 其他来源10以上,11:一键换装,12:123看房,13文通虚拟场景
+     * @param dataSource    场景计算数据目录
+     * @param sceneScheme   方案:1-双目,2-转台,3-六目,4-八目,10-获取4k图,11-获取2k,12-获取1k
+     * @param sceneResolution  分辨率(2k,4k)
+     * @param sceneFrom     场景来源,lite:双目lite相机,pro:八目相机,minion:双面转台相机,laser:激光相机,virtual:虚拟场景,sketch:图片建模场景
+     * @return com.fdkankan.web.response.ResultData
+     **/
+    @Override
+    public ResultData initScene(String num, String title, String des, Integer sceneSource,
+        String dataSource, Integer sceneScheme, String sceneResolution, String sceneFrom) {
+
+        //生成场景主表
+        ScenePlus scenePlus = new ScenePlus();
+        scenePlus.setNum(num);
+        scenePlus.setSceneStatus(SceneStatus.SUCCESS.code());
+        scenePlus.setSceneSource(sceneSource);
+        scenePlus.setPayStatus(PayStatus.PAY.code());
+        scenePlus.setSceneType(SceneType.OTHER.code());
+        this.save(scenePlus);
+
+        //生成场景拓展表
+        ScenePlusExt scenePlusExt = new ScenePlusExt();
+        scenePlusExt.setPlusId(scenePlus.getId());
+        scenePlusExt.setDataSource(dataSource);
+        scenePlusExt.setSceneScheme(sceneScheme);
+        scenePlusExt.setSceneResolution(sceneResolution);
+        scenePlusExt.setSceneFrom(sceneFrom);
+        scenePlusExt.setSceneKind(SceneKind.TILES.code());
+        scenePlusExtService.save(scenePlusExt);
+
+        //生成编辑主表
+        SceneEditInfo sceneEditInfo = new SceneEditInfo();
+        sceneEditInfo.setScenePlusId(scenePlus.getId());
+        sceneEditInfo.setTitle(title);
+        sceneEditInfo.setDescription(des);
+        sceneEditInfoService.save(sceneEditInfo);
+
+        //生成编辑拓展表
+        SceneEditInfoExt sceneEditInfoExt = new SceneEditInfoExt();
+        sceneEditInfoExt.setScenePlusId(scenePlus.getId());
+        sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
+        sceneEditInfoExtService.save(sceneEditInfoExt);
+
+        //生成编辑显示控制表
+        SceneEditControls sceneEditControls = new SceneEditControls();
+        sceneEditControls.setEditInfoId(sceneEditInfo.getId());
+        sceneEditControlsService.save(sceneEditControls);
+
+
+        //生成sceneJson
+        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(scenePlusExt.getSceneResolution());
+        sceneJson.setSceneFrom(scenePlusExt.getSceneFrom());
+        sceneJson.setSceneKind(scenePlusExt.getSceneKind());
+        if(StrUtil.isNotEmpty(scenePlusExt.getVideos())){
+            sceneJson.setVideos(scenePlusExt.getVideos());
+        }
+
+        //本地写sceneJson文件
+        String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", num);
+        // TODO: 2022/8/22
+//        fYunFileService.uploadFile(bucket, JSON.toJSONBytes(sceneJson), sceneJsonPath);
+
+        return ResultData.ok();
+    }
 }