Prechádzať zdrojové kódy

rocketmq切换为rabbitmq

dengsixing 3 rokov pred
rodič
commit
3ceeec62f2

+ 5 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/TestController.java

@@ -2,9 +2,11 @@ package com.fdkankan.scene.controller;
 
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.UploadFilePath;
 import com.fdkankan.common.controller.BaseController;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.SpringUtil;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.platform.api.dto.Camera;
 import com.fdkankan.platform.api.dto.Company;
 import com.fdkankan.platform.api.dto.User;
@@ -78,6 +80,9 @@ public class TestController extends BaseController {
     @Autowired
     private RabbitMqProducer rabbitMqProducer;
 
+    @Autowired
+    private UploadToOssUtil uploadToOssUtil;
+
 
 
     @PostMapping("/test")

+ 48 - 25
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/BuildScenePostServiceImpl.java

@@ -46,6 +46,7 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.bean.SceneJsonBean;
 import com.fdkankan.scene.entity.SceneEditControls;
 import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
 import com.fdkankan.scene.entity.SceneFileBuild;
 import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.entity.ScenePlusExt;
@@ -55,6 +56,7 @@ import com.fdkankan.scene.service.IBuildSceneDTService;
 import com.fdkankan.scene.service.IBuildScenePostService;
 import com.fdkankan.scene.service.IBuildScenePreService;
 import com.fdkankan.scene.service.ISceneEditControlsService;
+import com.fdkankan.scene.service.ISceneEditInfoExtService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneFileBuildService;
 import com.fdkankan.scene.service.IScenePlusExtService;
@@ -63,6 +65,7 @@ import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.vo.SceneEditControlsVO;
+import com.sun.org.apache.bcel.internal.generic.RETURN;
 import java.io.File;
 import java.io.IOException;
 import java.util.Calendar;
@@ -129,6 +132,8 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
     IScenePlusExtService scenePlusExtService;
     @Autowired
     IBuildSceneDTService buildSceneDTService;
+    @Autowired
+    ISceneEditInfoExtService sceneEditInfoExtService;
 
     @Override
     public void buildScenePost(BuildSceneResultMqMessage message) {
@@ -202,7 +207,8 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
 
             Object[] editInfoArr = this.updateEditInfo(scenePro, scenePlus);
             SceneEditInfo sceneEditInfo = (SceneEditInfo)editInfoArr[0];
-            SceneEditControls sceneEditControls = (SceneEditControls)editInfoArr[1];
+            SceneEditInfoExt sceneEditInfoExt = (SceneEditInfoExt)editInfoArr[0];
+            SceneEditControls sceneEditControls = (SceneEditControls)editInfoArr[2];
 
             String sceneUrl = mainUrl + "/" + sceneProNewUrl;
             String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneCode+".png";
@@ -235,15 +241,8 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
 //            buildScenePreService.uploadLogFile(sceneCode, sceneProExt.getDataSource());
 
             //写scene.json
-            String sceneJson = this.writeSceneJson(sceneCode, videosJson,
-                sceneEditInfo, sceneEditControls, scenePlus, scenePlusExt, arrearCap);
-
-            //上传sceneJson文件
-            String sceneJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH+"scene.json", sceneCode);
-            uploadToOssUtil.upload(sceneJson.getBytes(), sceneJsonPath);
-
-            //scenejson写入缓存
-            redisUtil.set(String.format(RedisKey.SCENE_JSON, sceneCode), sceneJson);
+            this.writeSceneJson(sceneCode, videosJson,
+                sceneEditInfo, sceneEditInfoExt, sceneEditControls, scenePlus, scenePlusExt, arrearCap);
 
             log.info("场景计算结果处理结束,场景码:{}", message.getSceneCode());
 
@@ -255,15 +254,15 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
         }
     }
 
-    private String writeSceneJson(String num, JSONObject videosJson, SceneEditInfo sceneEditInfo,
+    private void writeSceneJson(String num, JSONObject videosJson, SceneEditInfo sceneEditInfo,SceneEditInfoExt sceneEditInfoExt,
         SceneEditControls sceneEditControls, ScenePlus scenePlus, ScenePlusExt scenePlusExt, boolean arrearCap)  throws Exception{
-        String sceneJsonPath = String.format(ConstantFilePath.SCENE_PATH_FORMAT, num);
-        String strsceneInfos = FileUtils.readFile(sceneJsonPath);
-        SceneJsonBean sceneJson = null;
-        if(strsceneInfos!=null){
-            sceneJson = JSON.parseObject(strsceneInfos, SceneJsonBean.class);
-        }else{
-            sceneJson = BeanUtil.copyProperties(sceneEditInfo, SceneJsonBean.class);
+        String sceneJsonKey = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "scene.json";
+        boolean exist = uploadToOssUtil.existKey(sceneJsonKey);
+        //如果云端没有scene.json文件,生成一份
+        if(!exist){
+            SceneJsonBean sceneJson = new SceneJsonBean();
+            BeanUtil.copyProperties(sceneEditInfoExt, sceneJson);
+            BeanUtil.copyProperties(sceneEditInfo, sceneJson);
             SceneEditControlsVO sceneEditControlsVO = BeanUtil.copyProperties(sceneEditControls, SceneEditControlsVO.class);
             sceneJson.setControls(sceneEditControlsVO);
             sceneJson.setNum(num);
@@ -271,16 +270,30 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
             sceneJson.setSceneResolution(scenePlusExt.getSceneResolution());
             sceneJson.setSceneFrom(scenePlusExt.getSceneFrom());
             sceneJson.setVideos(videosJson);
+            if(arrearCap) {
+                sceneJson.setPayStatus(PayStatus.NO_CAPACITY.code());
+            }
+
+            String sceneJsonStr = JSON.toJSONString(sceneJson);
+            //上传sceneJson文件
+            uploadToOssUtil.upload(sceneJsonStr.getBytes(), sceneJsonKey);
+            //scenejson写入缓存
+            redisUtil.set(String.format(RedisKey.SCENE_JSON, num), sceneJsonStr);
         }
-        sceneJson.setVideos(videosJson);
 
-        if(arrearCap) {
-            sceneJson.setPayStatus(PayStatus.NO_CAPACITY.code());
+        // TODO: 2022/4/21 plus版本稳定后删除------------------------------------------start
+        String localSceneJsonPath = String.format(ConstantFilePath.SCENE_PATH_FORMAT, num);
+        String localSceneJson = FileUtils.readFile(localSceneJsonPath);
+        if(StrUtil.isNotEmpty(localSceneJson)){
+            JSONObject sceneJsonObject = JSON.parseObject(localSceneJson);
+            sceneJsonObject.put("videos", videosJson);
+            if(arrearCap) {
+                sceneJsonObject.put("payStatus", PayStatus.NO_CAPACITY.code());
+            }
+            FileUtils.writeFile(localSceneJsonPath, sceneJsonObject.toJSONString());
         }
+        // TODO: 2022/4/21 plus版本稳定后删除------------------------------------------end
 
-        String sceneJsonStr = JSON.toJSONString(sceneJson);
-        FileUtils.writeFile(sceneJsonPath, sceneJsonStr);
-        return sceneJsonStr;
     }
 
     private void sendSms(Integer pushChannel, String pushToken, int cameraType, String sceneName, String webSite){
@@ -688,6 +701,7 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
     private Object[] updateEditInfo(ScenePro scenePro, ScenePlus scenePlus){
         SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         SceneEditControls sceneEditControls = null;
+        SceneEditInfoExt sceneEditInfoExt = null;
         if(sceneEditInfo == null){
             sceneEditInfo = new SceneEditInfo();
             sceneEditInfo.setScenePlusId(scenePlus.getId());
@@ -695,14 +709,23 @@ public class BuildScenePostServiceImpl implements IBuildScenePostService {
             sceneEditInfo.setDescription(scenePlus.getDescription());
             sceneEditInfo.setTitle(scenePlus.getTitle());
             sceneEditInfoService.save(sceneEditInfo);
+
         }else{
             sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
+            sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
         }
         if(sceneEditControls == null){
             sceneEditControls = new SceneEditControls();
             sceneEditControls.setEditInfoId(sceneEditInfo.getId());
             sceneEditControlsService.save(sceneEditControls);
         }
-        return new Object[]{sceneEditInfo, sceneEditControls};
+        if(sceneEditInfoExt == null){
+            sceneEditInfoExt = new SceneEditInfoExt();
+            sceneEditInfoExt.setScenePlusId(scenePlus.getId());
+            sceneEditInfoExt.setSceneProId(scenePro.getId());
+            sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
+            sceneEditInfoExtService.save(sceneEditInfoExt);
+        }
+        return new Object[]{sceneEditInfo, sceneEditInfoExt, sceneEditControls};
     }
 }