|
@@ -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();
|
|
|
+ }
|
|
|
}
|