dengsixing il y a 3 ans
Parent
commit
adcf870492
37 fichiers modifiés avec 6213 ajouts et 168 suppressions
  1. 26 0
      src/main/java/com/fdkankan/scene/bean/RequestRebuildVedioScene.java
  2. 187 0
      src/main/java/com/fdkankan/scene/bean/RequestSceneEdit.java
  3. 229 0
      src/main/java/com/fdkankan/scene/bean/ResponseScene.java
  4. 23 0
      src/main/java/com/fdkankan/scene/bean/ResponseVideoSceneProgress.java
  5. 21 0
      src/main/java/com/fdkankan/scene/controller/PicSceneProgressController.java
  6. 226 0
      src/main/java/com/fdkankan/scene/controller/SceneAppEditController.java
  7. 95 101
      src/main/java/com/fdkankan/scene/controller/SceneController.java
  8. 331 5
      src/main/java/com/fdkankan/scene/controller/SceneEditController.java
  9. 9 1
      src/main/java/com/fdkankan/scene/controller/TestController.java
  10. 21 0
      src/main/java/com/fdkankan/scene/controller/VideoSceneProgressController.java
  11. 108 0
      src/main/java/com/fdkankan/scene/entity/PicSceneProgress.java
  12. 279 0
      src/main/java/com/fdkankan/scene/entity/Scene.java
  13. 108 0
      src/main/java/com/fdkankan/scene/entity/VideoSceneProgress.java
  14. 1 1
      src/main/java/com/fdkankan/scene/generate/AutoGenerate.java
  15. 53 53
      src/main/java/com/fdkankan/scene/listener/RabbitMqListener.java
  16. 18 0
      src/main/java/com/fdkankan/scene/mapper/IPicSceneProgressMapper.java
  17. 18 0
      src/main/java/com/fdkankan/scene/mapper/ISceneMapper.java
  18. 18 0
      src/main/java/com/fdkankan/scene/mapper/IVideoSceneProgressMapper.java
  19. 29 0
      src/main/java/com/fdkankan/scene/service/IPicSceneProgressService.java
  20. 2 0
      src/main/java/com/fdkankan/scene/service/IScenePlusExtService.java
  21. 2 0
      src/main/java/com/fdkankan/scene/service/IScenePlusService.java
  22. 41 0
      src/main/java/com/fdkankan/scene/service/ISceneProAppService.java
  23. 57 0
      src/main/java/com/fdkankan/scene/service/ISceneProService.java
  24. 13 0
      src/main/java/com/fdkankan/scene/service/ISceneService.java
  25. 28 0
      src/main/java/com/fdkankan/scene/service/IVideoSceneProgressService.java
  26. 62 0
      src/main/java/com/fdkankan/scene/service/impl/PicSceneProgressServiceImpl.java
  27. 5 0
      src/main/java/com/fdkankan/scene/service/impl/ScenePlusExtServiceImpl.java
  28. 5 0
      src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java
  29. 1275 0
      src/main/java/com/fdkankan/scene/service/impl/SceneProAppServiceImpl.java
  30. 2538 4
      src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java
  31. 302 1
      src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java
  32. 1 1
      src/main/java/com/fdkankan/scene/service/impl/SceneUpgradeToV4Service.java
  33. 66 0
      src/main/java/com/fdkankan/scene/service/impl/VideoSceneProgressServiceImpl.java
  34. 1 1
      src/main/resources/logback-spring.xml
  35. 5 0
      src/main/resources/mapper/scene/PicSceneProgressMapper.xml
  36. 5 0
      src/main/resources/mapper/scene/SceneMapper.xml
  37. 5 0
      src/main/resources/mapper/scene/VideoSceneProgressMapper.xml

+ 26 - 0
src/main/java/com/fdkankan/scene/bean/RequestRebuildVedioScene.java

@@ -0,0 +1,26 @@
+package com.fdkankan.scene.bean;
+
+import com.fdkankan.common.request.RequestBase;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import lombok.Data;
+
+@Data
+public class RequestRebuildVedioScene extends RequestBase implements Serializable {
+
+    private String sceneNum;
+
+    private String panoId;
+
+    private String x;
+
+    private String y;
+
+    private String w;
+
+    private String h;
+
+    private List<Map<String,Object>> images;
+
+}

+ 187 - 0
src/main/java/com/fdkankan/scene/bean/RequestSceneEdit.java

@@ -0,0 +1,187 @@
+package com.fdkankan.scene.bean;
+
+import lombok.Data;
+
+/**
+ * Created by Hb_zzZ on 2019/6/26.
+ */
+@Data
+public class RequestSceneEdit {
+
+    private String sceneNum;
+
+    /**
+     * scene.json的数据内容
+     */
+    private String sceneData;
+
+    /**
+     * floorplan.json的数据
+     */
+    private String floor;
+
+    /**
+     * 画墙重算需要的floor.json
+     */
+    private String webFloor;
+
+    /**
+     * json数据
+     */
+    private String data;
+
+    /**
+     * 热点数据
+     */
+    private String hotData;
+
+    /**
+     * overlay数据
+     */
+    private String overlayData;
+
+    /**
+     * 0表示修改,-1表示删除,1表示添加
+     */
+    private String type;
+
+    private String sid;
+
+    /**
+     * 媒体文件数据
+     */
+    private String info;
+
+    private String name;
+
+    /**
+     * 录屏数据
+     */
+    private String camerasData;
+
+    /**
+     * 为1删除tour文件
+     */
+    private String index;
+
+    /**
+     * 场景秘钥
+     */
+    private String sceneKey;
+
+    /**
+     * logo大小
+     */
+    private String size;
+
+    /**
+     * logo类型
+     */
+    private String logoType;
+
+    /**
+     * 背景音乐名称
+     */
+    private String musicName;
+
+    /**
+     * 初始封面数据
+     */
+    private String initialPoint;
+
+    private String tourList;
+
+    private String screencapLen;
+
+    /**
+     * 背景音乐
+     */
+    private String bgMusic;
+
+    /**
+     * 是否上传热点
+     */
+    private String hotFlag;
+
+    /**
+     * 场景名称
+     */
+    private String sceneName;
+
+    /**
+     * 场景描述
+     */
+    private String sceneDec;
+
+    /**
+     * 场景类型
+     */
+    private String sceneType;
+
+    /**
+     * 地面logo类型
+     */
+    private String floorLogoType;
+
+    /**
+     * 地面logo大小
+     */
+    private String floorLogoSize;
+
+    private String entry;
+
+    private String sceneIndex;
+
+    /**
+     * 选择的类型,sound为screencapVoiceSound,file为screencapVoiceSrc
+     */
+    private String screencapVoiceType;
+
+    private String capData;
+
+    private String frameData;
+
+    private String playData;
+
+    private String id;
+
+    /**
+     * 录屏图片
+     */
+    private String screencapThumb;
+
+    /**
+     * 录制方式,1原始过渡,2平滑过渡
+     */
+    private String recordType;
+
+    private String mapVisi;
+
+    private String tourVisi;
+
+    private String vrVisi;
+
+    private String rulerVisi;
+
+    private String cadImgVisi;
+
+    /**
+     * cad平面图
+     */
+    private String floorPlanPng;
+
+    private String panoVisi;
+
+    private String m2dVisi;
+
+    private String m3dVisi;
+
+    private String measureVisi;
+
+    private String styleName;
+
+    /**
+     * 旋转角度
+     */
+    private String floorPlanAngle;
+}

+ 229 - 0
src/main/java/com/fdkankan/scene/bean/ResponseScene.java

@@ -0,0 +1,229 @@
+package com.fdkankan.scene.bean;
+
+import java.io.Serializable;
+import java.math.BigInteger;
+import lombok.Data;
+
+@Data
+public class ResponseScene implements Serializable {
+
+    private static final long serialVersionUID = 2454435822930272529L;
+
+    private Long id;
+
+    private String thumb;
+
+    private String sceneKey;
+
+    private String sceneName;
+
+    private String sceneDec;
+
+    private int sceneType;
+
+    private int thumbImg;
+
+    private int version;
+
+    private String markerLogo;
+
+    private String floorLogo;
+
+    private int floorLogoSize;
+
+    private String entry;
+
+    private String createTime;
+
+    private int shootCount;
+
+    private int status;
+
+    private int sceneIndex;
+
+    private String hasBGM;
+
+    private int cameraType;
+
+    private int isPublic;
+
+    private String gps;
+
+    private String childName;
+
+    private String userName;
+
+    private String nickName;
+
+    private int viewCount;
+
+    private String webSite;
+
+    private String dataSource;
+
+    private int payStatus;
+
+    private String phoneId;
+
+    private String num;
+
+    private int recommend;
+
+    private int thumbStatus;
+
+    private String hotsIds;
+
+    private String initialPointId;
+
+    private int style;
+
+    private int sceneScheme;
+
+    private String bgMusic;
+
+    private Long userId;
+
+    private Long cameraId;
+
+    private BigInteger space;
+
+    private Long createDate;
+
+    private String shareLogo;
+
+    private int mapVisi;
+
+    private int tourVisi;
+
+    private int vrVisi;
+    
+
+    /**
+     * 普通录屏文件地址
+     */
+    private String screencapVoiceSrc;
+
+    /**
+     * 录音文件地址
+     */
+    private String screencapVoiceSound;
+
+    /**
+     * 同步录音文件地址
+     */
+    private String screencapVoiceSoundsync;
+
+    /**
+     * 选择的类型,sound为screencapVoiceSound,file为screencapVoiceSrc
+     */
+    private String screencapVoiceType;
+
+    /**
+     * 录屏文件地址
+     */
+    private String playData;
+
+
+    /**
+     * 重新建模的版本
+     */
+    private int floorEditVer;
+
+    /**
+     * 正式发布重新建模的版本
+     */
+    private int floorPublishVer;
+
+    /**
+     * 录屏图片
+     */
+    private String screencapThumb;
+
+    /**
+     * cad平面图参数
+     */
+    private String cadInfo;
+
+    /**
+     * cad平面图参数
+     */
+    private String floorPlanPng;
+
+    /**
+     * 展示页面是否显示标尺
+     */
+    private int rulerVisi;
+
+    /**
+     * 展示页面cad图在平面图是否显示
+     */
+    private int cadImgVisi;
+
+    private int panoVisi;
+
+    private int m2dVisi;
+
+    private int m3dVisi;
+
+    private int measureVisi;
+
+    private String videos;
+
+    private String snCode;
+
+    private String overlay;
+
+    private Integer showLogoBottom;
+
+    private String recStatus;
+
+    private Integer needKey;
+
+    private String buildType;
+
+    private Integer imagesVersion;
+
+    private String bgMusicName;
+
+    /**
+     * 协作者用户id
+     */
+    private String cooperationUserId;
+
+    private String cooperationUserName;
+
+    private Integer sceneSource;
+
+    private boolean jumpScene;
+
+    /**
+     * 服务器的服务商
+     */
+    private String ecs;
+
+    /**
+     * 场景来源方式,为app提供,0相机,1用户,2协作者
+     */
+    private Integer sceneSourceType;
+
+    /**
+     * 随心装场景码
+     */
+    private String vrNum;
+
+    /**
+     * 随心装场景码
+     */
+    private String vrThumb;
+
+    /**
+     * 旋转角度
+     */
+    private String floorPlanAngle;
+
+    private Integer isFolder;
+
+    private String videosUser;
+
+    private Integer isUpgrade;
+}

+ 23 - 0
src/main/java/com/fdkankan/scene/bean/ResponseVideoSceneProgress.java

@@ -0,0 +1,23 @@
+package com.fdkankan.scene.bean;
+
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 视频进度返回
+ */
+@Data
+public class ResponseVideoSceneProgress implements Serializable {
+
+    private static final long serialVersionUID = 661912133849676944L;
+
+    private Long id;
+
+    private int rebuildResult;
+
+    private String videoName;
+
+
+
+
+}

+ 21 - 0
src/main/java/com/fdkankan/scene/controller/PicSceneProgressController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 视频重算进度 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@RestController
+@RequestMapping("/scene/picSceneProgress")
+public class PicSceneProgressController {
+
+}
+

+ 226 - 0
src/main/java/com/fdkankan/scene/controller/SceneAppEditController.java

@@ -0,0 +1,226 @@
+package com.fdkankan.scene.controller;
+
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.annotation.CheckCurrentUser;
+import com.fdkankan.scene.bean.RequestSceneEdit;
+import com.fdkankan.scene.service.ISceneProAppService;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+@Slf4j
+@RestController
+@RequestMapping("/api/scene/edit/forApp")
+public class SceneAppEditController {
+
+    @Autowired
+    private ISceneProAppService sceneProAppService;
+
+    /**
+     * 保存CAD图片
+     * @param sceneNum
+     * @param file
+     * @param cadInfo
+     * @return
+     * @throws Exception
+     */
+    @CheckCurrentUser(description = "上传图片多媒体数据,直接到七牛云")
+    @RequestMapping(value = "/uploadFloorplanPng", method = RequestMethod.POST)
+    public ResultData uploadFloorplanPng(@RequestParam("sceneNum") String sceneNum,
+        @RequestParam("file") MultipartFile file, String cadInfo) throws Exception {
+        return sceneProAppService.uploadFloorplanPng(sceneNum, file, cadInfo);
+    }
+
+    /**
+     * 新增画墙重建模型(钟文)
+     */
+    @CheckCurrentUser(description = "画墙重建模型")
+    @RequestMapping(value = "/uploadFloorJsonAndRebuild", method = RequestMethod.POST)
+    public ResultData uploadFloorJsonAndRebuild(RequestSceneEdit base) throws Exception{
+        return sceneProAppService.uploadFloorJsonAndRebuild(base);
+    }
+
+    /**
+     * App端删除某部分音频
+     * @return
+     */
+    @CheckCurrentUser(description = "App端删除某部分音频")
+    @RequestMapping(value = "/deleteRecordAudioPart", method = RequestMethod.POST)
+    public ResultData deleteRecordAudioPart(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        String fileName = request.getParameter("fileName");
+        String times = request.getParameter("times");
+        String index = request.getParameter("index");
+        String type = request.getParameter("type");
+        return sceneProAppService.deleteRecordAudioPart(sceneNum, fileName, times, index, type);
+    }
+
+    /**
+     * 获取从微信服务器的音频
+     * @return
+     */
+    @CheckCurrentUser(description = "获取从微信服务器的音频")
+    @RequestMapping(value = "/getRecordAudioFromWeixin", method = RequestMethod.POST)
+    public ResultData getRecordAudioFromWeixin(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setId(request.getParameter("id"));
+        return sceneProAppService.getRecordAudioFromWeixin(base);
+    }
+
+    /**
+     * 上传图片多媒体数据,直接到七牛云
+     * @param file
+     * @return
+     */
+    @CheckCurrentUser(description = "上传图片多媒体数据,直接到七牛云")
+    @RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
+    public ResultData uploadPic(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile file) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        String folderName = request.getParameter("folderName");
+        return sceneProAppService.uploadPic(sceneNum, folderName, file);
+    }
+
+    /**
+     * 保存编辑的数据并生效
+     * @return
+     */
+    @CheckCurrentUser(description = "保存编辑的数据并生效")
+    @RequestMapping(value = "/saveSceneInfo", method = RequestMethod.POST)
+    public ResultData saveSceneInfo(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setSceneDec(request.getParameter("sceneDec"));
+        base.setSceneType(request.getParameter("sceneType"));
+        base.setSceneKey(request.getParameter("sceneKey"));
+        base.setSceneName(request.getParameter("sceneName"));
+        return sceneProAppService.saveSceneInfo(base);
+    }
+
+    /**
+     * 保存场景显示控制
+     * @return
+     */
+    @CheckCurrentUser(description = "保存场景显示控制")
+    @RequestMapping(value = "/saveAllVisi", method = RequestMethod.POST)
+    public ResultData saveAllVisi(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setMapVisi(request.getParameter("mapVisi"));
+        base.setTourVisi(request.getParameter("tourVisi"));
+        base.setVrVisi(request.getParameter("vrVisi"));
+        base.setRulerVisi(request.getParameter("rulerVisi"));
+        base.setCadImgVisi(request.getParameter("cadImgVisi"));
+        base.setPanoVisi(request.getParameter("panoVisi"));
+        base.setM2dVisi(request.getParameter("m2dVisi"));
+        base.setM3dVisi(request.getParameter("m3dVisi"));
+        base.setMeasureVisi(request.getParameter("measureVisi"));
+        return sceneProAppService.saveAllVisi(base);
+    }
+
+    /**
+     * 保存初始页面
+     * @return
+     */
+    @CheckCurrentUser(description = "保存初始页面")
+    @RequestMapping(value = "/saveInitialPage", method = RequestMethod.POST)
+    public ResultData saveInitialPage(RequestSceneEdit base) throws Exception {
+        return sceneProAppService.saveInitialPage(base);
+    }
+
+    /**
+     * 保存背景音乐(只是编辑页面生效)
+     * @return
+     */
+    @CheckCurrentUser(description = "保存背景音乐(只是编辑页面生效)")
+    @RequestMapping(value = "/saveBackgroundMusic", method = RequestMethod.POST)
+    public ResultData saveBackgroundMusic(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setMusicName(request.getParameter("musicName"));
+        return sceneProAppService.saveBackgroundMusic(base);
+    }
+
+    /**
+     * 保存地面logo
+     * @return
+     */
+    @CheckCurrentUser(description = "保存地面logo")
+    @RequestMapping(value = "/saveFloorLogo", method = RequestMethod.POST)
+    public ResultData saveFloorLogo(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setSize(request.getParameter("size"));
+        base.setLogoType(request.getParameter("logoType"));
+        return sceneProAppService.saveFloorLogo(base);
+    }
+
+    /**
+     * 保存自动导览
+     * @return
+     */
+    @CheckCurrentUser(description = "保存自动导览")
+    @RequestMapping(value = "/saveScreencapData", method = RequestMethod.POST)
+    public ResultData saveScreencapData(RequestSceneEdit base) throws Exception {
+        return sceneProAppService.saveScreencapData(base);
+    }
+
+    /**
+     * 保存场景热点
+     * @return
+     */
+    @CheckCurrentUser(description = "保存场景热点")
+    @RequestMapping(value = "/saveHot", method = RequestMethod.POST)
+    public ResultData saveHot(RequestSceneEdit base) throws Exception {
+        return sceneProAppService.saveHot(base);
+    }
+
+    /**
+     * V3版本获取从微信服务器的音频
+     * @return
+     */
+    @CheckCurrentUser(description = "V3版本获取从微信服务器的音频")
+    @RequestMapping(value = "/getRecordAudioFromWeixinV3", method = RequestMethod.POST)
+    public ResultData getRecordAudioFromWeixinV3(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        String id = request.getParameter("id");
+
+        String type = request.getParameter("type");
+        String fileName = request.getParameter("fileName");
+        String length = request.getParameter("length");
+        //替换视频,1为替换,0或没值为不替换
+        String replace = request.getParameter("replace");
+
+        String times = request.getParameter("times");
+        String index = request.getParameter("index");
+        return sceneProAppService.getRecordAudioFromWeixinV3(sceneNum, id, type, fileName, length, replace,times, index);
+    }
+
+    /**
+     * 上传场景背景音乐
+     */
+    @CheckCurrentUser(description = "上传场景背景音乐")
+    @RequestMapping(value = "/uploadBgMusic", method = RequestMethod.POST)
+    public ResultData uploadBgMusic(HttpServletRequest request, @RequestParam("file") MultipartFile file) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        String fileName = request.getParameter("fileName");
+        return sceneProAppService.uploadBgMusic(sceneNum, fileName, file);
+    }
+
+    /**
+     * 删除上传的场景背景音乐
+     */
+    @CheckCurrentUser(description = "删除上传的场景背景音乐")
+    @RequestMapping(value = "/deleteUploadBgMusic", method = RequestMethod.POST)
+    public ResultData deleteUploadBgMusic(HttpServletRequest request) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        return sceneProAppService.deleteUploadBgMusic(sceneNum);
+    }
+
+}

+ 95 - 101
src/main/java/com/fdkankan/scene/controller/SceneController.java

@@ -1,13 +1,36 @@
 package com.fdkankan.scene.controller;
 
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.ConstantFilePath;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.model.SSOUser;
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.CreateObjUtil;
+import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
 import com.fdkankan.scene.bean.RequestSceneCooperation;
+import com.fdkankan.scene.bean.ResponseVideoSceneProgress;
+import com.fdkankan.scene.entity.Scene;
+import com.fdkankan.scene.entity.ScenePro;
+import com.fdkankan.scene.service.IPicSceneProgressService;
+import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneService;
+import com.fdkankan.scene.service.IVideoSceneProgressService;
+import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,110 +43,15 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/api/scene")
 public class SceneController extends BaseController {
 
-//    @Autowired
-//    private ISceneService sceneService;
-//    @Autowired
-//    private GoodsFeignClient goodsService;
-//    @Autowired
-//    private ObjectMapper mapper;
-//    @Autowired
-//    private UserFeignClient userService;
-//    @Autowired
-//    private ModelingMsgProducer producer;
-//
-//    @Autowired
-//    private ISceneProService sceneProService;
-//
-//    @Autowired
-//    private ISceneProEditService sceneProEditService;
-//
-//    @Autowired
-//    private IRebuildVideoProgressService rebuildVideoProgressService;
-//
-//
-//    @Autowired
-//    private IRebuildPicProgressService rebuildPicProgressService;
-//
-//    @Autowired
-//    private UploadToOssUtil uploadToOssUtil;
-//
-//    @Autowired
-//    private ICameraService cameraService;
-//
-//    @Autowired
-//    private RubberSheetingUtil rubberSheetingUtil;
-//
-//    @Autowired
-//    private ISceneModuleVideoService sceneModuleVideoService;
-//
-//    @Autowired
-//    private ISceneCooperationService sceneCooperationService;
-//
-//    @Autowired
-//    private ISceneResourceService sceneResourceService;
-//
-//    @Autowired
-//    private ISceneDataDownloadService sceneDataDownloadService;
-//
-//    @Autowired
-//    private ICameraDetailService cameraDetailService;
-//
-//    @Autowired
-//    private IUserIncrementService userIncrementService;
-//
-//    @Autowired
-//    private SceneNumService sceneNumService;
-//
-//    @Autowired
-//    private FdkkLaserService fdkkLaserService;
-//
-//    @Value("${main.url}")
-//    private String mainUrl;
-//
-//    @Value("${scene.url}")
-//    private String sceneUrl;
-//
-//    @Value("${scene.pro.url}")
-//    private String sceneProUrl;
-//
-//    @Value("${scene.pro.new.url}")
-//    private String sceneProNewUrl;
-//
-//    @Value("${scene.pro.v4.url}")
-//    private String sceneProV4Url;
-//
-//    @Value("${oss.type}")
-//    private String type;
-//
-//    @Value("${environment}")
-//    private String environment;
-//
-//    @Value("${formal.home.url}")
-//    private String formalHomeUrl;
-//
-//    @Value("${dev.home.url}")
-//    private String devHomeUrl;
-//
-//    @Value("${prefix.ali}")
-//    private String prefixAli;
-//
-//    @Value("${ecs.type}")
-//    private String ecsType;
-//
-//    @Value("${expected.time}")
-//    private String expectedTime;
-//
-//    @Autowired
-//    private ComputerUtil computerUtil;
-//
-//    @Autowired
-//    private FdkkV4Service fdkkV4Service;
-
-    //多线程共享判断是否正在打包中
-//    private AtomicBoolean isDownload = new AtomicBoolean(false);
 
     @Autowired
     private ISceneService sceneService;
+    @Autowired
+    private ISceneProService sceneProService;
+    @Autowired
+    private IVideoSceneProgressService videoSceneProgressService;
+    @Autowired
+    private IPicSceneProgressService picSceneProgressService;
 
     /**
      * 是否已登录
@@ -143,5 +71,71 @@ public class SceneController extends BaseController {
         return sceneService.sceneResourceBySceneNum(cooperation, this.getSsoUserV3());
     }
 
+    /**
+     * app录音获取录音文件版本
+     */
+    @RequestMapping(value = "/getVoiceSound")
+    public ResultData getVoiceSound(HttpServletRequest request) throws Exception {
+        String sceneNum = request.getParameter("num");
+        return sceneService.getVoiceSound(sceneNum);
+    }
+
+    /**
+     * 获取场景详情
+     */
+    @RequestMapping(value = "/getInfo")
+    public ResultData getInfo(HttpServletRequest request) throws Exception {
+        String sceneNum = request.getParameter("num");
+        return sceneProService.getInfo(sceneNum);
+    }
+
+    /**
+     * 场景模型重新计算
+     */
+    @RequestMapping(value = "/rebuildVideoScene", method = RequestMethod.POST)
+    public ResultData rebuildVideoScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
+        return sceneService.rebuildVideoScene(requestRebuildVedioScene);
+    }
+
+    /**
+     * 场景视频重新计算进度
+     */
+    @RequestMapping(value = "/rebuildVideoSceneProgress", method = RequestMethod.POST)
+    public ResultData rebuildVideoSceneProgress(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
+
+        if(StringUtils.isEmpty(requestRebuildVedioScene.getSceneNum())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+        ScenePro sceneProEntity = sceneProService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
+        if(null == sceneProEntity){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        return ResultData.ok(videoSceneProgressService.findVideoSceneProgress(requestRebuildVedioScene));
+    }
+
+    /**
+     * 场景图片重新计算
+     */
+    @RequestMapping(value = "/rebuildPicScene", method = RequestMethod.POST)
+    public ResultData rebuildPicScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
+        return sceneService.rebuildPicScene(requestRebuildVedioScene);
+    }
+
+    /**
+     * 场景图片重新计算进度
+     */
+    @RequestMapping(value = "/rebuildPicSceneProgress", method = RequestMethod.POST)
+    public ResultData rebuildPicSceneProgress(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
+
+        if(StrUtil.isEmpty(requestRebuildVedioScene.getSceneNum())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+        ScenePro sceneProEntity = sceneProService.findBySceneNum(requestRebuildVedioScene.getSceneNum());
+        if(null == sceneProEntity){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        ResponseVideoSceneProgress picSceneProgress = picSceneProgressService.findPicSceneProgress(requestRebuildVedioScene);
+        return ResultData.ok(picSceneProgress.getRebuildResult());
+    }
 
 }

+ 331 - 5
src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -1,23 +1,26 @@
 package com.fdkankan.scene.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.fdkankan.common.constant.ConstantFilePath;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
-import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.scene.annotation.CheckCurrentUser;
 import com.fdkankan.scene.annotation.SystemControllerLog;
+import com.fdkankan.scene.bean.RequestSceneEdit;
 import com.fdkankan.scene.service.ISceneProService;
-import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 
 @Slf4j
@@ -27,6 +30,8 @@ public class SceneEditController extends BaseController {
 
     @Autowired
     private ISceneProService sceneProService;
+    @Autowired
+    private UploadToOssUtil uploadToOssUtil;
 
     /**
      * 修改logoBottom状态
@@ -50,5 +55,326 @@ public class SceneEditController extends BaseController {
         return sceneProService.downloadTexData(sceneNum);
     }
 
+    /**
+     * 上传图片多媒体数据,直接到七牛云
+     * @param file
+     * @return
+     */
+    @CheckCurrentUser(description = "上传图片多媒体数据,直接到七牛云")
+    @RequestMapping(value = "/uploadPic", method = RequestMethod.POST)
+    public ResultData uploadPic(
+        @RequestParam("sceneNum")String sceneNum,
+        String folderName,String toOss,
+        @RequestParam("file") MultipartFile file) throws Exception {
+        return sceneProService.uploadPic(sceneNum, folderName, file, toOss);
+    }
+
+    /**
+     * 删除oss的数据
+     * @return
+     */
+    @CheckCurrentUser(description = "删除oss的数据")
+    @RequestMapping(value = "/deleteOss", method = RequestMethod.POST)
+    public ResultData deleteOss(@RequestParam("filePath")String filePath) throws Exception {
+        uploadToOssUtil.deleteFile(filePath);
+        return ResultData.ok();
+    }
+
+    /**
+     * 上传二维码和分享的logo
+     * @return
+     */
+    @CheckCurrentUser(description = "上传二维码和分享的logo")
+    @RequestMapping(value = "/uploadShareLogo", method = RequestMethod.POST)
+    public ResultData uploadShareLogo(
+        @RequestParam("sceneNum") String sceneNum,
+        @RequestParam("file") MultipartFile file) throws Exception {
+        return sceneProService.uploadShareLogo(sceneNum, file);
+    }
+
+    /**
+     * 上传场景的热点媒体文件
+     * @param file
+     * @return
+     */
+    @CheckCurrentUser(description = "上传场景的热点媒体文件")
+    @RequestMapping(value = "/uploadHotMedia", method = RequestMethod.POST)
+    public ResultData uploadHotMedia(
+        @RequestParam("sceneNum")  String sceneNum,
+        @RequestParam("sid")  String sid,
+        @RequestParam("file")  MultipartFile file) throws Exception {
+        return sceneProService.uploadHotMedia(sceneNum, file, sid);
+    }
+
+    /**
+     * 检验视频网站url是否正确
+     * @return
+     */
+    @CheckCurrentUser(description = "检验视频网站url是否正确")
+    @RequestMapping(value = "/checkVideoUrl", method = RequestMethod.POST)
+    public ResultData checkVideoUrl(@RequestParam("path") String path){
+        return sceneProService.checkVideoUrl(path);
+    }
+
+    /**
+     * 保存编辑的数据并生效
+     * @return
+     */
+    @CheckCurrentUser(description = "保存编辑的数据并生效")
+    @RequestMapping(value = "/saveSceneInfo", method = RequestMethod.POST)
+    public ResultData saveSceneInfo(RequestSceneEdit requestSceneEdit) throws Exception {
+        return sceneProService.saveSceneInfo(requestSceneEdit);
+    }
+
+    /**
+     * 保存CAD图片
+     * @param sceneNum
+     * @param file
+     * @param cadInfo
+     * @return
+     * @throws Exception
+     */
+    @CheckCurrentUser(description = "上传图片多媒体数据,直接到七牛云")
+    @RequestMapping(value = "/uploadFloorplanPng", method = RequestMethod.POST)
+    public ResultData uploadFloorplanPng(@RequestParam("sceneNum") String sceneNum,
+        @RequestParam("file") MultipartFile[] file, String cadInfo) throws Exception {
+        return sceneProService.uploadFloorplanPng(sceneNum, file, cadInfo);
+    }
+
+    /**
+     * 新增画墙重建模型(钟文)
+     */
+    @CheckCurrentUser(description = "画墙重建模型")
+    @RequestMapping(value = "/uploadFloorJson", method = RequestMethod.POST)
+    public ResultData uploadFloorJson(HttpServletRequest request, HttpServletResponse response) throws Exception{
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setFloor(request.getParameter("floor"));
+        base.setWebFloor(request.getParameter("webFloor"));
+        base.setSceneData(request.getParameter("sceneData"));
+        return sceneProService.uploadFloorJson(base);
+    }
+
+    /**
+     * 保存关联全景图
+     */
+    @CheckCurrentUser(description = "保存关联全景图json")
+    @RequestMapping(value = "/copyAndUpdateFloorJson", method = RequestMethod.POST)
+    public ResultData copyAndUpdateFloorJson(@RequestParam("sceneNum")String sceneNum, String floorJsonData) throws Exception{
+        return sceneProService.copyAndUpdateFloorJson(sceneNum, floorJsonData);
+    }
+
+    /**
+     * 保存场景热点
+     * @return
+     */
+    @CheckCurrentUser(description = "保存场景热点")
+    @RequestMapping(value = "/saveHot", method = RequestMethod.POST)
+    public ResultData saveHot(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        RequestSceneEdit base = new RequestSceneEdit();
+        base.setSceneNum(request.getParameter("sceneNum"));
+        base.setHotData(request.getParameter("hotData"));
+        base.setSid(request.getParameter("sid"));
+        base.setType(request.getParameter("type"));
+        base.setCapData(request.getParameter("capData"));
+        base.setFrameData(request.getParameter("frameData"));
+        base.setPlayData(request.getParameter("playData"));
+        base.setScreencapThumb(request.getParameter("screencapThumb"));
+        base.setStyleName(request.getParameter("styleName"));
+        return sceneProService.saveHot(base);
+    }
+
+    /**
+     * 保存热点可见性的数据
+     * @return
+     */
+    @CheckCurrentUser(description = "保存热点可见性的数据")
+    @RequestMapping(value = "/saveHotVisible", method = RequestMethod.POST)
+    public ResultData saveHotVisible(RequestSceneEdit base) throws Exception {
+        return sceneProService.saveHotVisible(base);
+    }
+
+    /**
+     * 保存漫游可行
+     * @return
+     */
+    @CheckCurrentUser(description = "漫游可行")
+    @RequestMapping(value = "/saveLinkPano", method = RequestMethod.POST)
+    public ResultData saveLinkPano(RequestSceneEdit base) throws Exception {
+        return sceneProService.saveLinkPano(base);
+    }
+
+    /**
+     * 保存初始页面
+     * @return
+     */
+    @CheckCurrentUser(description = "保存初始页面")
+    @RequestMapping(value = "/saveInitialPage", method = RequestMethod.POST)
+    public ResultData saveInitialPage(RequestSceneEdit base) throws Exception {
+        return sceneProService.saveInitialPage(base);
+    }
+
+    /**
+     * 上传音频
+     * @param file
+     * @return
+     */
+    @CheckCurrentUser(description = "上传音频")
+    @RequestMapping(value = "/uploadScreencapVoiceNewV3", method = RequestMethod.POST)
+    public ResultData uploadScreencapVoiceV3(HttpServletRequest request, HttpServletResponse response, @RequestParam("file")  MultipartFile file) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        String type = request.getParameter("type");
+        String fileName = request.getParameter("fileName");
+        String length = request.getParameter("length");
+        //替换视频,1为替换,0或没值为不替换
+        String replace = request.getParameter("replace");
+
+        String times = request.getParameter("times");
+        String index = request.getParameter("index");
+        return sceneProService.uploadScreencapVoiceNewV3(sceneNum, type, fileName, file, length, replace, times, index);
+    }
+
+    /**
+     * 删除录屏音频文件
+     * @return
+     */
+    @CheckCurrentUser(description = "删除录屏音频文件")
+    @RequestMapping(value = "/deleteScreencapVoiceNew", method = RequestMethod.POST)
+    public ResultData deleteScreencapVoiceNew(RequestSceneEdit base) throws Exception {
+        return sceneProService.deleteScreencapVoice(base);
+    }
+
+    /**
+     * 删除某部分音频
+     * @return
+     */
+    @CheckCurrentUser(description = "删除某部分音频")
+    @RequestMapping(value = "/deleteScreencapVoicePart", method = RequestMethod.POST)
+    public ResultData deleteScreencapVoicePart(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        String fileName = request.getParameter("fileName");
+        String times = request.getParameter("times");
+        String index = request.getParameter("index");
+        return sceneProService.deleteScreencapVoicePart(sceneNum, fileName, times, index);
+    }
+
+    /**
+     * 上传场景的Overlay媒体文件
+     * @param file
+     * @return
+     */
+    @CheckCurrentUser(description = "上传场景的Overlay媒体文件")
+    @RequestMapping(value = "/uploadOverlayMedia", method = RequestMethod.POST)
+    public ResultData uploadOverlayMedia(HttpServletRequest request, HttpServletResponse response, @RequestParam("file")  MultipartFile file) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        String sid = request.getParameter("sid");
+        return sceneProService.uploadOverlayMedia(sceneNum, file, sid);
+    }
+
+    /**
+     * 保存场景热点
+     * @return
+     */
+    @CheckCurrentUser(description = "保存场景热点")
+    @RequestMapping(value = "/saveOverlay", method = RequestMethod.POST)
+    public ResultData saveOverlay(RequestSceneEdit base) throws Exception {
+        return sceneProService.saveOverlay(base);
+    }
+
+    /**
+     * 直接上传hot.json到oss
+     * @return
+     */
+    @CheckCurrentUser(description = "上传图片多媒体数据,直接到七牛云")
+    @RequestMapping(value = "/uploadHotJsonToOss", method = RequestMethod.POST)
+    public ResultData uploadHotJsonToOss(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String sceneNum = request.getParameter("sceneNum");
+        return sceneProService.uploadHotJsonToOss(sceneNum);
+    }
+
+    /**
+     * 保存通用json数据
+     */
+    @CheckCurrentUser(description = "保存通用json数据")
+    @RequestMapping(value = "/saveJsonData", method = RequestMethod.POST)
+    public ResultData saveJsonData(HttpServletRequest request) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        String fileName = request.getParameter("fileName");
+        String jsonData = request.getParameter("jsonData");
+        return sceneProService.saveJsonData(sceneNum, fileName, jsonData);
+    }
+
+    /**
+     * 保存关联全景图
+     */
+    @CheckCurrentUser(description = "保存关联全景图")
+    @RequestMapping(value = "/savePanorama", method = RequestMethod.POST)
+    public ResultData savePanorama(HttpServletRequest request, @RequestParam("file") MultipartFile file) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        String sid = request.getParameter("sid");
+        String imagesName = request.getParameter("fileName");
+        return sceneProService.savePanorama(sceneNum, sid, file, imagesName);
+    }
+
+    /**
+     * 保存关联全景图json
+     */
+    @CheckCurrentUser(description = "保存关联全景图json")
+    @RequestMapping(value = "/savePanoramaJson", method = RequestMethod.POST)
+    public ResultData savePanoramaJson(HttpServletRequest request) throws Exception{
+
+        String sceneNum = request.getParameter("sceneNum");
+        String fileData = request.getParameter("fileData");
+        String fileName = request.getParameter("fileName");
+        String sid = request.getParameter("sid");
+        return sceneProService.savePanoramaJson(sceneNum, fileData, fileName, sid);
+    }
+
+    /**
+     * 保存关联全景图
+     */
+    @CheckCurrentUser(description = "保存关联全景图json")
+    @RequestMapping(value = "/updateFloorJson", method = RequestMethod.POST)
+    public ResultData updateFloorJson(HttpServletRequest request) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        String floorJsonData = request.getParameter("floorJsonData");
+        return sceneProService.updateFloorJson(sceneNum, floorJsonData);
+    }
+
+    /**
+     * 下载点位全景图或视频
+     */
+    @CheckCurrentUser(description = "下载点位全景图或视频")
+    @RequestMapping(value = "/downloadPanoramaOrVideo", method = RequestMethod.POST)
+    public ResultData downloadPanoramaOrVideo(HttpServletRequest request) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        String fileName = request.getParameter("fileName");
+        String type = request.getParameter("type");
+        String planId = request.getParameter("planId");
+        return sceneProService.downloadPanoramaOrVideo(sceneNum, fileName, type, planId);
+    }
+
+    /**
+     * 上传场景背景音乐
+     */
+    @CheckCurrentUser(description = "上传场景背景音乐")
+    @RequestMapping(value = "/uploadBgMusic", method = RequestMethod.POST)
+    public ResultData uploadBgMusic(HttpServletRequest request, @RequestParam("file") MultipartFile file) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        String fileName = request.getParameter("fileName");
+        return sceneProService.uploadBgMusic(sceneNum, fileName, file);
+    }
+
+    /**
+     * 删除上传的场景背景音乐
+     */
+    @CheckCurrentUser(description = "删除上传的场景背景音乐")
+    @RequestMapping(value = "/deleteUploadBgMusic", method = RequestMethod.POST)
+    public ResultData deleteUploadBgMusic(HttpServletRequest request) throws Exception{
+        String sceneNum = request.getParameter("sceneNum");
+        return sceneProService.deleteUploadBgMusic(sceneNum);
+    }
+
+
 
 }

+ 9 - 1
src/main/java/com/fdkankan/scene/controller/TestController.java

@@ -1,7 +1,9 @@
 package com.fdkankan.scene.controller;
 
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
 import com.fdkankan.scene.service.ISceneResourceService;
+import com.fdkankan.scene.service.IVideoSceneProgressService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,10 +23,16 @@ public class TestController {
 
     @Autowired
     private ISceneResourceService sceneResourceService;
+    @Autowired
+    private IVideoSceneProgressService videoSceneProgressService;
 
     @GetMapping("/test")
     public ResultData test(){
-        return ResultData.ok(sceneResourceService.list());
+        RequestRebuildVedioScene requestRebuildVedioScene = new RequestRebuildVedioScene();
+        requestRebuildVedioScene.setSceneNum("123123123");
+        requestRebuildVedioScene.setPanoId("123123123");
+        videoSceneProgressService.updateProgressRec(requestRebuildVedioScene);
+        return ResultData.ok();
     }
 
 }

+ 21 - 0
src/main/java/com/fdkankan/scene/controller/VideoSceneProgressController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 视频重算进度 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@RestController
+@RequestMapping("/scene/videoSceneProgress")
+public class VideoSceneProgressController {
+
+}
+

+ 108 - 0
src/main/java/com/fdkankan/scene/entity/PicSceneProgress.java

@@ -0,0 +1,108 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 视频重算进度
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Getter
+@Setter
+@TableName("t_pic_scene_progress")
+public class PicSceneProgress implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 大场景序号
+     */
+    @TableField("scene_code")
+    private String sceneCode;
+
+    /**
+     * 重算开始时间(进入队列)
+     */
+    @TableField("rebuild_queue_start_time")
+    private Date rebuildQueueStartTime;
+
+    /**
+     * 重算开始时间
+     */
+    @TableField("rebuild_start_time")
+    private Date rebuildStartTime;
+
+    /**
+     * 重算结束时间
+     */
+    @TableField("rebuild_end_time")
+    private Date rebuildEndTime;
+
+    /**
+     * 视频名称
+     */
+    @TableField("video_name")
+    private String videoName;
+
+    /**
+     * 原场景路径
+     */
+    @TableField("data_source")
+    private String dataSource;
+
+    /**
+     * 重算结果  0:失败,1:成功 2:等待 3:重算中  9:成功且轮询过
+     */
+    @TableField("rebuild_result")
+    private Integer rebuildResult;
+
+    /**
+     * 重算参数
+     */
+    @TableField("rebuild_param")
+    private String rebuildParam;
+
+    /**
+     * videos_hdr_param 参数
+     */
+    @TableField("hdr_param")
+    private String hdrParam;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic("A")
+    private String recStatus;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("is_delete")
+    private String isDelete;
+
+
+}

+ 279 - 0
src/main/java/com/fdkankan/scene/entity/Scene.java

@@ -0,0 +1,279 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 场景表
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Getter
+@Setter
+@TableName("t_scene")
+public class Scene implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景名称
+     */
+    @TableField("scene_name")
+    private String sceneName;
+
+    /**
+     * 场景描述
+     */
+    @TableField("scene_dec")
+    private String sceneDec;
+
+    /**
+     * 场景的链接地址
+     */
+    @TableField("web_site")
+    private String webSite;
+
+    /**
+     * 场景缩略图
+     */
+    @TableField("thumb")
+    private String thumb;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 0表示未建好,1表示建好,-1表示出错,-2表示不要在官网上显示
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 原始的大场景数据(七牛)
+     */
+    @TableField("data_source")
+    private String dataSource;
+
+    /**
+     * 用户表t_user的id
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 0表示未付款,1表示付款了,-1表示欠费
+     */
+    @TableField("pay_status")
+    private Integer payStatus;
+
+    /**
+     * 相机主表t_camera的id
+     */
+    @TableField("camera_id")
+    private Long cameraId;
+
+    /**
+     * 手机id
+     */
+    @TableField("phone_id")
+    private String phoneId;
+
+    /**
+     * 大场景序号
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 大场景的密钥
+     */
+    @TableField("scene_key")
+    private String sceneKey;
+
+    /**
+     * 0表示其他,1表示文博,2表示地产,3表示电商,4表示餐饮,5表示家居
+     */
+    @TableField("scene_type")
+    private Integer sceneType;
+
+    /**
+     * 1表示推荐,0表示正常
+     */
+    @TableField("recommend")
+    private Integer recommend;
+
+    /**
+     * 浏览次数
+     */
+    @TableField("view_count")
+    private Integer viewCount;
+
+    /**
+     * 版本
+     */
+    @TableField("version")
+    private Integer version;
+
+    /**
+     * 表示缩略图是否存在
+     */
+    @TableField("thumb_status")
+    private Integer thumbStatus;
+
+    /**
+     * 0表示默认,1表示自己上传
+     */
+    @TableField("floor_logo")
+    private String floorLogo;
+
+    /**
+     * 标记大小
+     */
+    @TableField("floor_logo_size")
+    private Integer floorLogoSize;
+
+    /**
+     * 要上传的热点的id集合,用逗号隔开
+     */
+    @TableField("hots_ids")
+    private String hotsIds;
+
+    /**
+     * 表示初始点信息
+     */
+    @TableField("entry")
+    private String entry;
+
+    /**
+     * 拍摄数量
+     */
+    @TableField("shoot_count")
+    private Integer shootCount;
+
+    /**
+     * 风格
+     */
+    @TableField("style")
+    private Integer style;
+
+    /**
+     * 要gps定位
+     */
+    @TableField("gps")
+    private String gps;
+
+    /**
+     * 方案:1是双目,2是转台,3是六目,4是八目
+     */
+    @TableField("scene_scheme")
+    private Integer sceneScheme;
+
+    /**
+     * 背景音乐名称
+     */
+    @TableField("bg_music")
+    private String bgMusic;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic("A")
+    private String recStatus;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 普通录屏文件地址
+     */
+    @TableField("screencap_voice_src")
+    private String screencapVoiceSrc;
+
+    /**
+     * 旧版录屏数据地址
+     */
+    @TableField("screencap_music")
+    private String screencapMusic;
+
+    /**
+     * 录屏文件个数
+     */
+    @TableField("screencap_len")
+    private Integer screencapLen;
+
+    /**
+     * 录音文件地址
+     */
+    @TableField("screencap_voice_sound")
+    private String screencapVoiceSound;
+
+    /**
+     * 选择的类型,sound为screencapVoiceSound,file为screencapVoiceSrc
+     */
+    @TableField("screencap_voice_type")
+    private String screencapVoiceType;
+
+    /**
+     * 录屏文件地址
+     */
+    @TableField("play_data")
+    private String playData;
+
+    /**
+     * 算法类型
+     */
+    @TableField("algorithm")
+    private String algorithm;
+
+    /**
+     * oss服务商
+     */
+    @TableField("oss")
+    private String oss;
+
+    /**
+     * 重新建模的版本
+     */
+    @TableField("floor_edit_ver")
+    private Integer floorEditVer;
+
+    /**
+     * 正式发布重新建模的版本
+     */
+    @TableField("floor_publish_ver")
+    private Integer floorPublishVer;
+
+    /**
+     * 使用容量
+     */
+    @TableField("space")
+    private Long space;
+
+    /**
+     * 录屏图片存放文件
+     */
+    @TableField("screencap_thumb")
+    private String screencapThumb;
+
+
+}

+ 108 - 0
src/main/java/com/fdkankan/scene/entity/VideoSceneProgress.java

@@ -0,0 +1,108 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 视频重算进度
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Getter
+@Setter
+@TableName("t_video_scene_progress")
+public class VideoSceneProgress implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 大场景序号
+     */
+    @TableField("scene_code")
+    private String sceneCode;
+
+    /**
+     * 重算开始时间(进入队列)
+     */
+    @TableField("rebuild_queue_start_time")
+    private Date rebuildQueueStartTime;
+
+    /**
+     * 重算开始时间
+     */
+    @TableField("rebuild_start_time")
+    private Date rebuildStartTime;
+
+    /**
+     * 重算结束时间
+     */
+    @TableField("rebuild_end_time")
+    private Date rebuildEndTime;
+
+    /**
+     * 视频名称
+     */
+    @TableField("video_name")
+    private String videoName;
+
+    /**
+     * 原场景路径
+     */
+    @TableField("data_source")
+    private String dataSource;
+
+    /**
+     * 重算结果  0:失败,1:成功 2:等待 3:重算中  9:成功且轮询过
+     */
+    @TableField("rebuild_result")
+    private Integer rebuildResult;
+
+    /**
+     * 重算参数
+     */
+    @TableField("rebuild_param")
+    private String rebuildParam;
+
+    /**
+     * videos_hdr_param 参数
+     */
+    @TableField("hdr_param")
+    private String hdrParam;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic("A")
+    private String recStatus;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("is_delete")
+    private String isDelete;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/scene/generate/AutoGenerate.java

@@ -20,7 +20,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"scene", getTables(new String[]{
-                "t_log",
+                "t_video_scene_progress",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 53 - 53
src/main/java/com/fdkankan/scene/listener/RabbitMqListener.java

@@ -1,53 +1,53 @@
-package com.fdkankan.scene.listener;
-
-import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
-import com.rabbitmq.client.Channel;
-import java.nio.charset.StandardCharsets;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.rabbit.annotation.Queue;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-/**
- * <p>
- * TODO
- * </p>
- *
- * @author dengsixing
- * @since 2022/4/19
- **/
-@Slf4j
-@Component
-public class RabbitMqListener {
-
-    @Value("${queue.scene.upgrade-to-v4}")
-    private String upgradeToV4;
-    @Autowired
-    private ISceneUpgradeToV4Service sceneUpgradeToV4Service;
-
-    /**
-     * 场景计算前置资源准备处理
-     * @param channel
-     * @param message
-     * @throws Exception
-     */
-    @RabbitListener(
-        queuesToDeclare = @Queue("${queue.scene.upgrade-to-v4}"),
-        concurrency = "${maxThread.scene.upgrade-to-v4}"
-    )
-    public void buildScenePreHandler(Channel channel, Message message) throws Exception {
-        Object correlation = message.getMessageProperties().getHeader("spring_returned_message_correlation");
-        String correlationId = (String) correlation;
-        String msg = new String(message.getBody(), StandardCharsets.UTF_8);
-        log.info("场景升级开始,队列名:{},id:{},消息体:{}", upgradeToV4, correlationId, msg);
-        long sceneProId = Long.parseLong(msg);
-        //迁移数据
-        sceneUpgradeToV4Service.upgrade(sceneProId);
-        log.info("场景升级结束,队列名:{},id:{}", upgradeToV4, correlationId);
-        channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
-    }
-
-}
+//package com.fdkankan.scene.listener;
+//
+//import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
+//import com.rabbitmq.client.Channel;
+//import java.nio.charset.StandardCharsets;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.amqp.core.Message;
+//import org.springframework.amqp.rabbit.annotation.Queue;
+//import org.springframework.amqp.rabbit.annotation.RabbitListener;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * <p>
+// * TODO
+// * </p>
+// *
+// * @author dengsixing
+// * @since 2022/4/19
+// **/
+//@Slf4j
+//@Component
+//public class RabbitMqListener {
+//
+//    @Value("${queue.scene.upgrade-to-v4}")
+//    private String upgradeToV4;
+//    @Autowired
+//    private ISceneUpgradeToV4Service sceneUpgradeToV4Service;
+//
+//    /**
+//     * 场景计算前置资源准备处理
+//     * @param channel
+//     * @param message
+//     * @throws Exception
+//     */
+//    @RabbitListener(
+//        queuesToDeclare = @Queue("${queue.scene.upgrade-to-v4}"),
+//        concurrency = "${maxThread.scene.upgrade-to-v4}"
+//    )
+//    public void buildScenePreHandler(Channel channel, Message message) throws Exception {
+//        Object correlation = message.getMessageProperties().getHeader("spring_returned_message_correlation");
+//        String correlationId = (String) correlation;
+//        String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+//        log.info("场景升级开始,队列名:{},id:{},消息体:{}", upgradeToV4, correlationId, msg);
+//        long sceneProId = Long.parseLong(msg);
+//        //迁移数据
+//        sceneUpgradeToV4Service.upgrade(sceneProId);
+//        log.info("场景升级结束,队列名:{},id:{}", upgradeToV4, correlationId);
+//        channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+//    }
+//
+//}

+ 18 - 0
src/main/java/com/fdkankan/scene/mapper/IPicSceneProgressMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.PicSceneProgress;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 视频重算进度 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Mapper
+public interface IPicSceneProgressMapper extends BaseMapper<PicSceneProgress> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/scene/mapper/ISceneMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.scene.entity.Scene;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Mapper
+public interface ISceneMapper extends BaseMapper<Scene> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/scene/mapper/IVideoSceneProgressMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.VideoSceneProgress;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 视频重算进度 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Mapper
+public interface IVideoSceneProgressMapper extends BaseMapper<VideoSceneProgress> {
+
+}

+ 29 - 0
src/main/java/com/fdkankan/scene/service/IPicSceneProgressService.java

@@ -0,0 +1,29 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
+import com.fdkankan.scene.bean.ResponseVideoSceneProgress;
+import com.fdkankan.scene.entity.PicSceneProgress;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 视频重算进度 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+public interface IPicSceneProgressService extends IService<PicSceneProgress> {
+
+    PicSceneProgress findrebuildVideoProgressDetail (String num,String panId);
+
+    void updateProgressRec(RequestRebuildVedioScene requestRebuildVedioScene);
+
+    ResponseVideoSceneProgress findPicSceneProgress(RequestRebuildVedioScene requestRebuildVedioScene);
+
+    List<PicSceneProgress> findrebuildPicProgress(String sceneCode);
+
+    void updatePageView(String sceneCode);
+}

+ 2 - 0
src/main/java/com/fdkankan/scene/service/IScenePlusExtService.java

@@ -13,4 +13,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IScenePlusExtService extends IService<ScenePlusExt> {
 
+    ScenePlusExt getByScenePlusId(long scenePlusId);
+
 }

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

@@ -13,4 +13,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IScenePlusService extends IService<ScenePlus> {
 
+    ScenePlus getByNum(String num);
+
 }

+ 41 - 0
src/main/java/com/fdkankan/scene/service/ISceneProAppService.java

@@ -0,0 +1,41 @@
+package com.fdkankan.scene.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.bean.RequestSceneEdit;
+import com.fdkankan.scene.entity.ScenePro;
+import org.springframework.web.multipart.MultipartFile;
+
+public interface ISceneProAppService extends IService<ScenePro> {
+
+    ResultData uploadFloorplanPng(String sceneNum, MultipartFile file, String cadInfo) throws Exception;
+
+    ResultData uploadFloorJsonAndRebuild(RequestSceneEdit base) throws Exception;
+
+    ResultData deleteRecordAudioPart(String sceneNum, String fileName, String times, String index, String type) throws Exception;
+
+    ResultData getRecordAudioFromWeixin(RequestSceneEdit base) throws Exception;
+
+    ResultData uploadPic(String sceneNum, String folderName, MultipartFile file) throws Exception;
+
+    ResultData saveSceneInfo(RequestSceneEdit base) throws Exception;
+
+    ResultData saveAllVisi(RequestSceneEdit base) throws Exception;
+
+    ResultData saveInitialPage(RequestSceneEdit base) throws Exception;
+
+    ResultData saveBackgroundMusic(RequestSceneEdit base) throws Exception;
+
+    ResultData saveFloorLogo(RequestSceneEdit base) throws Exception;
+
+    ResultData saveScreencapData(RequestSceneEdit base) throws Exception;
+
+    ResultData saveHot(RequestSceneEdit base) throws Exception;
+
+    ResultData getRecordAudioFromWeixinV3(String sceneNum, String id, String type,
+        String fileName, String length, String replace, String times, String index) throws Exception;
+
+    ResultData uploadBgMusic(String sceneNum, String fileName, MultipartFile file) throws Exception;
+
+    ResultData deleteUploadBgMusic(String sceneNum) throws Exception;
+}

+ 57 - 0
src/main/java/com/fdkankan/scene/service/ISceneProService.java

@@ -2,10 +2,12 @@ package com.fdkankan.scene.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.bean.RequestSceneEdit;
 import com.fdkankan.scene.bean.RequestSceneProV4;
 import com.fdkankan.scene.entity.ScenePro;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * <p>
@@ -25,4 +27,59 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ResultData downloadTexData(String sceneNum) throws Exception;
 
+    ResultData uploadPic(String sceneNum, String folderName, MultipartFile file, String toOss) throws Exception;
+
+    ResultData uploadShareLogo(String  sceneNum, MultipartFile file) throws Exception;
+
+    ResultData uploadHotMedia(String sceneNum, MultipartFile file, String sid) throws Exception;
+
+    ResultData checkVideoUrl(@RequestParam("path") String path);
+
+    ResultData saveSceneInfo(RequestSceneEdit base) throws Exception;
+
+    ResultData uploadFloorplanPng(String sceneNum, MultipartFile[] file, String cadInfo) throws Exception;
+
+    ResultData uploadFloorJson(RequestSceneEdit sceneEdit) throws Exception;
+
+    ResultData copyAndUpdateFloorJson(String sceneNum, String floorJsonData) throws Exception;
+
+    ResultData saveHot(RequestSceneEdit base) throws Exception;
+
+    ResultData saveHotVisible(RequestSceneEdit base) throws Exception;
+
+    ResultData saveLinkPano(RequestSceneEdit base) throws Exception;
+
+    ResultData saveInitialPage(RequestSceneEdit base) throws Exception;
+
+    ResultData uploadScreencapVoiceNewV3(String sceneNum, String type, String fileName, MultipartFile file,
+        String length, String replace, String times, String index) throws Exception;
+
+    ResultData deleteScreencapVoice(RequestSceneEdit base) throws Exception;
+
+    ResultData deleteScreencapVoicePart(String sceneNum, String fileName, String times, String index) throws Exception;
+
+    ResultData uploadOverlayMedia(String sceneNum, MultipartFile file, String sid) throws Exception;
+
+    ResultData saveOverlay(RequestSceneEdit base) throws Exception;
+
+    ResultData uploadHotJsonToOss(String sceneNum) throws Exception;
+
+    ResultData saveJsonData(String sceneNum, String fileName, String jsonData) throws Exception;
+
+    ResultData savePanorama(String sceneNum, String sid, MultipartFile file, String imagesName) throws Exception;
+
+    ResultData savePanoramaJson(String sceneNum, String fileData, String fileName, String sid) throws Exception;
+
+    ResultData updateFloorJson(String sceneNum, String floorJsonData) throws Exception;
+
+    ResultData getInfo(String sceneNum) throws Exception;
+
+    ScenePro findLikeSceneNum(String sceneNum) throws Exception;
+
+    ResultData downloadPanoramaOrVideo(String sceneNum, String fileName, String type, String planId) throws Exception;
+
+    ResultData uploadBgMusic(String sceneNum, String fileName, MultipartFile file) throws Exception;
+
+    ResultData deleteUploadBgMusic(String sceneNum) throws Exception;
+
 }

+ 13 - 0
src/main/java/com/fdkankan/scene/service/ISceneService.java

@@ -2,7 +2,9 @@ package com.fdkankan.scene.service;
 
 import com.fdkankan.common.model.SSOUser;
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
 import com.fdkankan.scene.bean.RequestSceneCooperation;
+import com.fdkankan.scene.entity.Scene;
 import javax.servlet.http.HttpServletRequest;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -20,4 +22,15 @@ public interface ISceneService {
 
     ResultData sceneResourceBySceneNum(RequestSceneCooperation cooperation, SSOUser ssoUser) throws Exception;
 
+    ResultData getVoiceSound(String sceneNum) throws Exception;
+
+    ResultData updateViewCount(String sceneNum) throws Exception;
+
+    Scene findByNum(String num);
+
+    ResultData rebuildVideoScene(@RequestBody RequestRebuildVedioScene requestRebuildVedioScene) throws Exception;
+
+    ResultData rebuildPicScene(RequestRebuildVedioScene requestRebuildVedioScene) throws Exception;
+
+
 }

+ 28 - 0
src/main/java/com/fdkankan/scene/service/IVideoSceneProgressService.java

@@ -0,0 +1,28 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
+import com.fdkankan.scene.bean.ResponseVideoSceneProgress;
+import com.fdkankan.scene.entity.VideoSceneProgress;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 视频重算进度 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+public interface IVideoSceneProgressService extends IService<VideoSceneProgress> {
+
+    void updateProgressRec(RequestRebuildVedioScene requestRebuildVedioScene);
+
+    List<ResponseVideoSceneProgress> findVideoSceneProgress(RequestRebuildVedioScene requestRebuildVedioScene);
+
+    List<VideoSceneProgress> findrebuildVideoProgress(String sceneCode);
+
+    void updatePageView(String sceneCode);
+
+}

+ 62 - 0
src/main/java/com/fdkankan/scene/service/impl/PicSceneProgressServiceImpl.java

@@ -0,0 +1,62 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.constant.RecStatus;
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
+import com.fdkankan.scene.bean.ResponseVideoSceneProgress;
+import com.fdkankan.scene.entity.PicSceneProgress;
+import com.fdkankan.scene.mapper.IPicSceneProgressMapper;
+import com.fdkankan.scene.service.IPicSceneProgressService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.Calendar;
+import java.util.List;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 视频重算进度 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Service
+public class PicSceneProgressServiceImpl extends ServiceImpl<IPicSceneProgressMapper, PicSceneProgress> implements IPicSceneProgressService {
+    @Override
+    public PicSceneProgress findrebuildVideoProgressDetail(String num,String panId) {
+        return this.getOne(new LambdaQueryWrapper<PicSceneProgress>().eq(PicSceneProgress::getSceneCode, num));
+    }
+
+    @Override
+    public void updateProgressRec(RequestRebuildVedioScene requestRebuildVedioScene) {
+        this.update(new LambdaUpdateWrapper<PicSceneProgress>()
+            .set(PicSceneProgress::getRecStatus, RecStatus.DISABLE.code())
+            .set(PicSceneProgress::getUpdateTime, Calendar.getInstance().getTime())
+            .eq(PicSceneProgress::getSceneCode, requestRebuildVedioScene.getSceneNum()));
+    }
+
+    @Override
+    public ResponseVideoSceneProgress findPicSceneProgress(RequestRebuildVedioScene requestRebuildVedioScene) {
+        List<PicSceneProgress> picSceneProgressEntityList = this.findrebuildPicProgress(requestRebuildVedioScene.getSceneNum());
+        ResponseVideoSceneProgress responseVideoSceneProgress = new ResponseVideoSceneProgress();
+        BeanUtils.copyProperties(picSceneProgressEntityList.get(0), responseVideoSceneProgress);
+        //更新访问量
+        this.updatePageView(requestRebuildVedioScene.getSceneNum());
+        return responseVideoSceneProgress;
+    }
+
+    @Override
+    public List<PicSceneProgress> findrebuildPicProgress(String sceneCode) {
+        return this.list(new LambdaQueryWrapper<PicSceneProgress>().eq(PicSceneProgress::getSceneCode, sceneCode));
+    }
+
+    @Override
+    public void updatePageView(String sceneCode) {
+        this.update(new LambdaUpdateWrapper<PicSceneProgress>()
+            .set(PicSceneProgress::getRebuildResult, "9")
+            .eq(PicSceneProgress::getSceneCode, sceneCode)
+            .eq(PicSceneProgress::getRebuildResult, "1"));
+    }
+}

+ 5 - 0
src/main/java/com/fdkankan/scene/service/impl/ScenePlusExtServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.mapper.IScenePlusExtMapper;
 import com.fdkankan.scene.service.IScenePlusExtService;
@@ -17,4 +18,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class ScenePlusExtServiceImpl extends ServiceImpl<IScenePlusExtMapper, ScenePlusExt> implements IScenePlusExtService {
 
+    @Override
+    public ScenePlusExt getByScenePlusId(long scenePlusId) {
+        return this.getOne(new LambdaQueryWrapper<ScenePlusExt>().eq(ScenePlusExt::getPlusId, scenePlusId));
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.mapper.IScenePlusMapper;
 import com.fdkankan.scene.service.IScenePlusService;
@@ -17,4 +18,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
 
+    @Override
+    public ScenePlus getByNum(String num) {
+        return this.getOne(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num));
+    }
 }

Fichier diff supprimé car celui-ci est trop grand
+ 1275 - 0
src/main/java/com/fdkankan/scene/service/impl/SceneProAppServiceImpl.java


Fichier diff supprimé car celui-ci est trop grand
+ 2538 - 4
src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java


+ 302 - 1
src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -1,39 +1,71 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.model.SSOUser;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.user.SSOLoginHelper;
+import com.fdkankan.common.util.CreateObjUtil;
 import com.fdkankan.common.util.DateUtil;
+import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
+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.RequestRebuildVedioScene;
 import com.fdkankan.scene.bean.RequestSceneCooperation;
 import com.fdkankan.scene.entity.Camera;
 import com.fdkankan.scene.entity.CameraDetail;
+import com.fdkankan.scene.entity.PicSceneProgress;
+import com.fdkankan.scene.entity.Scene;
 import com.fdkankan.scene.entity.SceneCooperation;
+import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.entity.ScenePro;
+import com.fdkankan.scene.entity.SceneProEdit;
 import com.fdkankan.scene.entity.SceneResource;
 import com.fdkankan.scene.entity.User;
 import com.fdkankan.scene.entity.UserIncrement;
+import com.fdkankan.scene.entity.VideoSceneProgress;
+import com.fdkankan.scene.mapper.ISceneMapper;
+import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.ICameraDetailService;
 import com.fdkankan.scene.service.ICameraService;
+import com.fdkankan.scene.service.IPicSceneProgressService;
 import com.fdkankan.scene.service.ISceneCooperationService;
+import com.fdkankan.scene.service.IScenePlusExtService;
+import com.fdkankan.scene.service.IScenePlusService;
+import com.fdkankan.scene.service.ISceneProEditService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneResourceService;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.service.IUserIncrementService;
 import com.fdkankan.scene.service.IUserService;
+import com.fdkankan.scene.service.IVideoSceneProgressService;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
 import javax.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 /**
  * <p>
@@ -45,7 +77,7 @@ import org.springframework.stereotype.Service;
  **/
 @Slf4j
 @Service
-public class SceneServiceImpl implements ISceneService {
+public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implements ISceneService {
 
     @Autowired
     private ISceneProService sceneProService;
@@ -61,7 +93,29 @@ public class SceneServiceImpl implements ISceneService {
     private ISceneCooperationService sceneCooperationService;
     @Autowired
     private ISceneResourceService sceneResourceService;
+    @Autowired
+    private ISceneProEditService sceneProEditService;
+    @Autowired
+    private RedisUtil redisUtil;
+    @Autowired
+    private RedisLockUtil redisLockUtil;
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private IScenePlusExtService scenePlusExtService;
+    @Autowired
+    private UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    private IVideoSceneProgressService videoSceneProgressService;
+    @Autowired
+    private IPicSceneProgressService picSceneProgressService;
+    @Autowired
+    private RabbitMqProducer rabbitMqProducer;
 
+    @Value("${queue.modeling.queue-video-a}")
+    private String queueVideoA;
+    @Value("${queue.modeling.queue_pic_a}")
+    private String queuePicA;
     @Value("${expected-time}")
     private String expectedTime;
 
@@ -231,4 +285,251 @@ public class SceneServiceImpl implements ISceneService {
 
         return ResultData.ok(sceneResourceService.findByCooperationId(sceneCooperation.getId()));
     }
+
+    @Override
+    public ResultData getVoiceSound(String sceneNum) throws Exception {
+        if(StringUtils.isEmpty(sceneNum)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+        ScenePro sceneProEntity = sceneProService.findBySceneNum(sceneNum);
+        if(sceneProEntity == null){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneProEdit editEntity = sceneProEditService.findBySceneProId(sceneProEntity.getId());
+
+        return ResultData.ok(editEntity.getScreencapVoiceSoundsync());
+    }
+
+    @Override
+    public ResultData updateViewCount(String sceneNum) {
+        String key = RedisKey.SCENE_VISIT_CNT;
+        if(!redisUtil.hHasKey(key, sceneNum)){
+            String lockKey = String.format(RedisLockKey.LOCK_SCENE_VISIT_CNT, sceneNum);
+            boolean lock = redisLockUtil.lock(lockKey, RedisKey.EXPIRE_TIME_10_MINUTE);
+            if(!lock){
+                return ResultData.ok();
+            }
+            try {
+                String cnt = redisUtil.hget(key, sceneNum);
+                if(StrUtil.isEmpty(cnt)){
+                    //标记是否找到了场景,如果找到就不往下找
+                    boolean getScene = false;
+                    Integer viewCount = null;
+                    ScenePlus scenePlus = scenePlusService.getByNum(sceneNum);
+                    if(Objects.nonNull(scenePlus)){
+                        ScenePlusExt scenePlusExt = scenePlusExtService.getByScenePlusId(scenePlus.getId());
+                        viewCount = scenePlusExt.getViewCount();
+                        getScene = true;
+                    }
+                    if(!getScene){
+                        ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
+                        if(Objects.nonNull(scenePro)){
+                            viewCount = scenePro.getViewCount();
+                            getScene = true;
+                        }
+                    }
+                    if(!getScene){
+                        Scene scene = this.findByNum(sceneNum);
+                        if(Objects.nonNull(scene)){
+                            viewCount = scene.getViewCount();
+                            getScene = true;
+                        }
+                    }
+                    if(!getScene){
+                        throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+                    }
+
+                    redisUtil.hset(key,  sceneNum, Objects.isNull(viewCount) ? "0" : String.valueOf(viewCount));
+                }
+            }finally {
+                redisLockUtil.unlockLua(lockKey);
+            }
+        }
+        redisUtil.hincr(key, sceneNum, 1);
+        return ResultData.ok();
+    }
+
+    @Override
+    public Scene findByNum(String num) {
+        return this.getOne(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num));
+    }
+
+    @Override
+    public ResultData rebuildVideoScene(RequestRebuildVedioScene requestRebuildVedioScene)
+        throws Exception {
+        if(StrUtil.isEmpty(requestRebuildVedioScene.getSceneNum()) || StrUtil.isEmpty(requestRebuildVedioScene.getPanoId())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        String num = requestRebuildVedioScene.getSceneNum();
+
+        ScenePro sceneProEntity = sceneProService.findBySceneNum(num);
+        Scene scene = null;
+        String path = "";
+        if(sceneProEntity == null){
+            scene = this.findByNum(requestRebuildVedioScene.getSceneNum());
+            if(scene == null){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }else {
+                path = ConstantFilePath.BUILD_MODEL_PATH + scene.getDataSource().split("/")[scene.getDataSource().split("/").length - 2];
+            }
+        }else {
+            path = sceneProEntity.getDataSource();
+        }
+
+        //先从备份文件下拉取
+        CreateObjUtil.ossUtilCp("video/video" +sceneProEntity.getNum()  + File.separator + "back" + File.separator,
+            sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback_temp");
+
+        String backpathtemp = sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback_temp";
+        File fileback = new File(backpathtemp);
+        File[] filebackList = fileback.listFiles();
+
+        if(filebackList.length<=0){
+            String backpath = sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback";
+            log.info("------------------" +  backpath);
+
+            File file = new File(backpath);
+
+            //验证video 文件夹下是否有备份
+            CreateObjUtil.ossUtilCp("video/video" +sceneProEntity.getNum()  + File.separator,
+                sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback");
+
+            String name = "";
+            Map<String,String> map = new HashMap<String,String>();
+            file = new File(backpath);
+            File[] fileList = file.listFiles();
+            if(fileList.length>0){
+                for(File f:fileList){
+                    name = f.getName();
+                    log.info("file name :" + name);
+                    map.put(sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback" + File.separator + name,
+                        "video/video" +sceneProEntity.getNum()  + File.separator + "back" + File.separator + name);
+
+                }
+            }
+            //上传
+            log.info("上传内容 ===== + " + map);
+            uploadToOssUtil.uploadMulFiles(map);
+            FileUtils.deleteDirectory(backpathtemp);
+        }
+
+
+        //更新旧记录
+        videoSceneProgressService.updateProgressRec(requestRebuildVedioScene);
+
+        //往文件中写入值
+        JSONObject reObject = new JSONObject();
+        JSONObject Object = new JSONObject();
+        Object.put("name",requestRebuildVedioScene.getPanoId());
+        Object.put("x",requestRebuildVedioScene.getX());
+        Object.put("y",requestRebuildVedioScene.getY());
+        Object.put("width",requestRebuildVedioScene.getW());
+        Object.put("height",requestRebuildVedioScene.getH());
+        JSONArray arrayRe = new JSONArray();
+        arrayRe.add(Object);
+        reObject.put("required_videos",arrayRe);
+
+        JSONObject hdrObject = new JSONObject();
+        if(StringUtils.isNotEmpty(sceneProEntity.getVideos())){
+            JSONObject object = JSONObject.parseObject(sceneProEntity.getVideos());
+            if(object.containsKey("data")){
+                JSONArray array = new JSONArray();
+                array = (JSONArray) object.get("data");
+                arrayRe = new JSONArray();
+                if(array.size()>0){
+                    for(int i = 0; i < array.size(); i++) {
+                        JSONObject obj = (JSONObject) array.get(i);
+                        Object = new JSONObject();
+                        Object.put("name",(String) obj.get("id"));
+                        Object.put("value",(String) obj.get("value"));
+                        Object.put("fov",(String) obj.get("blend_fov"));
+                        arrayRe.add(Object);
+                    }
+                    hdrObject.put("hdr_param",arrayRe);
+                }
+            }
+        }else{
+            hdrObject.put("hdr_param","{}");
+        }
+
+        //重新计算时需要删除文件夹,否知使用缓存
+        log.info("开始清除result");
+        FileUtils.delAllFile(path + File.separator + "results");
+        log.info("清除result结束");
+
+        String fileId = path.split("/")[path.split("/").length - 2];
+        log.info("fileId:" + fileId);
+
+        String parametr = "";
+        parametr += sceneProEntity.getNum() + ":;" +
+            requestRebuildVedioScene.getPanoId();
+
+
+
+        long start = System.currentTimeMillis();
+
+        VideoSceneProgress videoSceneProgressEntity = new VideoSceneProgress();
+        videoSceneProgressEntity.setSceneCode(sceneProEntity.getNum());
+        videoSceneProgressEntity.setVideoName(requestRebuildVedioScene.getPanoId());
+        videoSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
+        videoSceneProgressEntity.setRebuildResult(2);
+        videoSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
+        videoSceneProgressEntity.setRebuildQueueStartTime(new Date());
+        videoSceneProgressEntity.setHdrParam(hdrObject.toJSONString());
+        videoSceneProgressEntity.setRebuildParam(reObject.toJSONString());
+        videoSceneProgressService.save(videoSceneProgressEntity);
+
+        rabbitMqProducer.sendByWorkQueue(queueVideoA, parametr);
+
+        return ResultData.ok("视频场景计算中");
+    }
+
+    @Override
+    public ResultData rebuildPicScene(RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
+        if(StrUtil.isEmpty(requestRebuildVedioScene.getSceneNum())){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+
+        String num = requestRebuildVedioScene.getSceneNum();
+
+        ScenePro sceneProEntity = sceneProService.findBySceneNum(num);
+        String path = "";
+        if(sceneProEntity == null){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+
+        path = sceneProEntity.getDataSource();
+
+        PicSceneProgress picSceneProgress = picSceneProgressService.findrebuildVideoProgressDetail(num,null);
+        if(!ObjectUtils.isEmpty(picSceneProgress) && (picSceneProgress.getRebuildResult() == 2 || picSceneProgress.getRebuildResult() == 3)){
+            return ResultData.error(ErrorCode.FAILURE_CODE_5035);
+        }
+
+        //更新旧记录
+        picSceneProgressService.updateProgressRec(requestRebuildVedioScene);
+
+        //重新计算时需要删除文件夹,否知使用缓存
+        log.info("开始清除result");
+        FileUtils.delAllFile(path + File.separator + "results");
+        log.info("清除result结束");
+
+        String fileId = path.split("/")[path.split("/").length - 2];
+        log.info("fileId:" + fileId);
+
+        PicSceneProgress picSceneProgressEntity = new PicSceneProgress();
+        picSceneProgressEntity.setSceneCode(sceneProEntity.getNum());
+        picSceneProgressEntity.setVideoName(requestRebuildVedioScene.getPanoId());
+        picSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
+        picSceneProgressEntity.setRebuildResult(2);
+        picSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
+        picSceneProgressEntity.setRebuildQueueStartTime(new Date());
+        picSceneProgressEntity.setRebuildParam(JSONObject.toJSONString(requestRebuildVedioScene));
+        picSceneProgressService.save(picSceneProgressEntity);
+
+        String parametr = picSceneProgressEntity.getId()+"";
+        rabbitMqProducer.sendByWorkQueue(queuePicA, parametr);
+
+        return ResultData.ok("图片场景计算中");
+    }
 }

+ 1 - 1
src/main/java/com/fdkankan/scene/service/impl/SceneUpgradeToV4Service.java

@@ -103,7 +103,7 @@ public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
     @Autowired
     private UploadToOssUtil uploadToOssUtil;
     @Autowired
-    RedisUtil redisUtil;
+    private RedisUtil redisUtil;
 
     @Override
     public void upgrade(long sceneProId)  throws Exception{

+ 66 - 0
src/main/java/com/fdkankan/scene/service/impl/VideoSceneProgressServiceImpl.java

@@ -0,0 +1,66 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.constant.RecStatus;
+import com.fdkankan.scene.bean.RequestRebuildVedioScene;
+import com.fdkankan.scene.bean.ResponseVideoSceneProgress;
+import com.fdkankan.scene.entity.VideoSceneProgress;
+import com.fdkankan.scene.mapper.IVideoSceneProgressMapper;
+import com.fdkankan.scene.service.IVideoSceneProgressService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 视频重算进度 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-07-08
+ */
+@Service
+public class VideoSceneProgressServiceImpl extends ServiceImpl<IVideoSceneProgressMapper, VideoSceneProgress> implements IVideoSceneProgressService {
+
+    @Override
+    public void updateProgressRec(RequestRebuildVedioScene requestRebuildVedioScene) {
+        this.update(new LambdaUpdateWrapper<VideoSceneProgress>()
+            .set(VideoSceneProgress::getRecStatus, RecStatus.DISABLE.code())
+            .set(VideoSceneProgress::getUpdateTime, Calendar.getInstance().getTime())
+            .eq(VideoSceneProgress::getSceneCode, requestRebuildVedioScene.getSceneNum())
+            .eq(VideoSceneProgress::getVideoName, requestRebuildVedioScene.getPanoId()));
+    }
+
+    @Override
+    public List<ResponseVideoSceneProgress> findVideoSceneProgress(RequestRebuildVedioScene requestRebuildVedioScene) {
+        List<VideoSceneProgress> videoSceneProgressEntityList = this.findrebuildVideoProgress(requestRebuildVedioScene.getSceneNum());
+
+        List<ResponseVideoSceneProgress> responseVideoSceneProgressList = new ArrayList<>();
+        for (VideoSceneProgress videoSceneProgressEntity : videoSceneProgressEntityList){
+            ResponseVideoSceneProgress responseVideoSceneProgress = new ResponseVideoSceneProgress();
+            BeanUtils.copyProperties(videoSceneProgressEntity, responseVideoSceneProgress);
+            responseVideoSceneProgressList.add(responseVideoSceneProgress);
+        }
+
+        //更新访问量
+        this.updatePageView(requestRebuildVedioScene.getSceneNum());
+        return responseVideoSceneProgressList;
+    }
+
+    @Override
+    public List<VideoSceneProgress> findrebuildVideoProgress(String sceneCode) {
+        return this.list(new LambdaQueryWrapper<VideoSceneProgress>().eq(VideoSceneProgress::getSceneCode, sceneCode));
+    }
+
+    @Override
+    public void updatePageView(String sceneCode) {
+        this.update(new LambdaUpdateWrapper<VideoSceneProgress>()
+            .set(VideoSceneProgress::getRebuildResult, "9")
+            .eq(VideoSceneProgress::getSceneCode, sceneCode)
+            .eq(VideoSceneProgress::getRebuildResult, "1"));
+    }
+}

+ 1 - 1
src/main/resources/logback-spring.xml

@@ -9,7 +9,7 @@
 
 	<contextName>logback</contextName>
 	<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
-	<property name="log.path" value="${LOG_PATH}/repair" />
+	<property name="log.path" value="${LOG_PATH}/v3scene" />
 
 	<!-- 彩色日志 -->
 	<!-- 彩色日志依赖的渲染类 -->

+ 5 - 0
src/main/resources/mapper/scene/PicSceneProgressMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.scene.mapper.IPicSceneProgressMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/scene/SceneMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.scene.mapper.ISceneMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/scene/VideoSceneProgressMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.scene.mapper.IVideoSceneProgressMapper">
+
+</mapper>