Sfoglia il codice sorgente

国际复制场景超容量封存

lyhzzz 2 anni fa
parent
commit
d758a14886

+ 4 - 1
src/main/java/com/fdkankan/ucenter/service/ISceneProService.java

@@ -89,4 +89,7 @@ public interface ISceneProService extends IService<ScenePro> {
     Page<SceneVo> pageListAndFolder(Page<Object> page, SceneParam param);
 
     Object getScenes(String username, RequestScene param);
-}
+
+     void updateOssStatus(String path,Integer payStatus) ;
+
+    }

+ 9 - 3
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.image.MatrixToImageWriterUtil;
+import com.fdkankan.ucenter.common.OssPath;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.ucenter.common.constants.ConstantFilePath;
 import com.fdkankan.ucenter.common.constants.UploadFilePath;
@@ -158,9 +159,6 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         scenePlus.setSceneStatus(0);
         this.save(scenePlus);
 
-        cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + plusExt.getSpace());
-        cameraDetailService.updateById(cameraDetail);
-
         CompletableFuture.runAsync(() -> {
             try {
                 // 拷贝场景编辑资源
@@ -279,6 +277,14 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 fYunFileServiceInterface.uploadFile(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, newNum) + newNum + "_en.png");
                 scenePlus.setSceneStatus(-2);
                 this.updateById(scenePlus);
+
+                cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + plusExt.getSpace());
+                cameraDetailService.updateById(cameraDetail);
+
+                if(scenePlus.getPayStatus() == -2){
+                    sceneProService.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),-2);
+                }
+
                 log.info("复制场景结束-{}", new Date());
                 if(scenePlus.getSceneSource() == 4){  //深时复制
                     String laserPath = laserService.copyDataSource(oldDataSource,plusExt.getDataSource());

+ 30 - 2
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -236,7 +236,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 if(incrementType.getCameraCapacity() == -1){
                     totalSpace   = -1L;
                 }else {
-                    totalSpace = incrementType.getCameraCapacity() * 1024 * 1024L;
+                    totalSpace = incrementType.getCameraCapacity() * 1024* 1024 * 1024L;
                 }
             }
         }
@@ -361,7 +361,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     /**
      * 从oss中获取文件,并重写,上传替换
      */
-    private void updateOssStatus(String path,Integer payStatus) {
+    @Override
+    public void updateOssStatus(String path,Integer payStatus) {
         try {
             if(!fYunFileService.fileExist(path)){
                 return;
@@ -657,6 +658,27 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(detailEntity == null){
             throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
         }
+        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
+        if(userIncrement == null){
+            throw new BusinessException(LoginConstant.FAILURE_CODE_3030, LoginConstant.FAILURE_MSG_3030);
+        }
+        IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+        if(incrementType == null){
+            throw new BusinessException(LoginConstant.FAILURE_CODE_3030, LoginConstant.FAILURE_MSG_3030);
+        }
+        if(incrementType.getCameraCapacity() != -1){
+            Long usedSpace = detailEntity.getUsedSpace();
+            if( scenePro != null && scenePro.getSpace() + usedSpace > incrementType.getCameraCapacity() * 1024 * 1024 * 1024L){
+                scenePro.setPayStatus(-2);
+            }
+            if( scenePlus != null ){
+                ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
+                if(ext.getSpace() + usedSpace > incrementType.getCameraCapacity() * 1024 * 1024 * 1024L){
+                    scenePlus.setPayStatus(-2);
+                }
+            }
+        }
+
         String newNum = scene3dNumService.generateSceneNum(detailEntity.getType());
         String title = scenePro == null ? scenePlus.getTitle() : scenePro.getSceneName();
         String newTitle = title.concat("(copy)");
@@ -785,6 +807,12 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 FileUtils.copyDirectiory(ConstantFilePath.SCENE_PATH +"video/video" + oldNum,ConstantFilePath.SCENE_PATH +"video/video" + newNum);
                 oldScene.setStatus(-2);
                 this.updateById(oldScene);
+
+                cameraDetail.setUsedSpace(cameraDetail.getUsedSpace() + oldScene.getSpace());
+                cameraDetailService.updateById(cameraDetail);
+                if(oldScene.getPayStatus() == -2){
+                    this.updateOssStatus(String.format(OssPath.v3_statusPath,oldScene.getNum()),-2);
+                }
                 log.info("复制场景结束-{}", new Date());
                 if(oldScene.getSceneSource() == 4){  //深时复制
                     String laserPath = laserService.copyDataSource(preDataSource,oldScene.getDataSource());