瀏覽代碼

国际服,深时,深光添加会员权益限制

lyhzzz 1 年之前
父節點
當前提交
ea4b2c2f35

+ 5 - 0
src/main/java/com/fdkankan/ucenter/entity/CameraType.java

@@ -36,6 +36,11 @@ public class CameraType implements Serializable {
      */
     @TableField("camera_type")
     private Integer cameraType;
+    /**
+     * 是否是激光系统相机 0否,1是
+     */
+    @TableField("is_laser")
+    private Integer isLaser;
 
     /**
      * 场景码前缀

+ 6 - 0
src/main/java/com/fdkankan/ucenter/httpClient/client/LaserClient.java

@@ -72,4 +72,10 @@ public interface LaserClient {
      */
     @Post("/laser/4dage/scene/camera/toBind")
     Result toBind(@JSONBody SsBindParam param) ;
+
+    /**
+     * 修改场景状态
+     */
+    @Post("/laser/4dage/scene/updateStatus")
+    Result updateStatus( @JSONBody  Map<String,Object> params);
 }

+ 15 - 2
src/main/java/com/fdkankan/ucenter/httpClient/service/LaserService.java

@@ -13,12 +13,14 @@ import com.fdkankan.ucenter.common.constants.NacosProperty;
 import com.fdkankan.ucenter.common.utils.ShellUtil;
 import com.fdkankan.ucenter.entity.Camera;
 import com.fdkankan.ucenter.entity.CameraDetail;
+import com.fdkankan.ucenter.entity.CameraType;
 import com.fdkankan.ucenter.entity.User;
 import com.fdkankan.ucenter.httpClient.client.LaserClient;
 import com.fdkankan.ucenter.httpClient.param.SSDownSceneParam;
 import com.fdkankan.ucenter.httpClient.param.SsBindParam;
 import com.fdkankan.ucenter.httpClient.vo.SSDownSceneVo;
 import com.fdkankan.ucenter.service.ICameraService;
+import com.fdkankan.ucenter.service.ICameraTypeService;
 import com.fdkankan.ucenter.service.IUserService;
 import com.fdkankan.ucenter.vo.SceneBySnCodeVo;
 import com.fdkankan.ucenter.vo.response.SceneNumVo;
@@ -51,6 +53,8 @@ public class LaserService {
     private IUserService userService;
     @Autowired
     ICameraService cameraService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
     /**
      * 根据用户获取激光相机数量
      * @param token
@@ -106,7 +110,8 @@ public class LaserService {
             HashMap<Long, User> userMap = userService.getByIds(userIds);
             for (Long cameraId : detailMap.keySet()) {
                 CameraDetail cameraDetail = detailMap.get(cameraId);
-                if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+                CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+                if (cameraType.getIsLaser() == 1) {
                     Camera cameraEntity = cameraMap.get(cameraId);
                     Map<String, String> param = new HashMap<>();
                     param.put("snCode", cameraEntity.getSnCode());
@@ -122,7 +127,8 @@ public class LaserService {
         List<Map<String, String>> laserParams = new ArrayList<>();
             for (Long cameraId : detailMap.keySet()) {
                 CameraDetail cameraDetail = detailMap.get(cameraId);
-                if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+                CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+                if (cameraType.getIsLaser() == 1) {
                     Camera cameraEntity = cameraMap.get(cameraId);
                     Map<String, String> param = new HashMap<>();
                     param.put("snCode", cameraEntity.getSnCode());
@@ -342,4 +348,11 @@ public class LaserService {
             log.error("解绑用户获取激光转台下载状态失败!",e);
         }
     }
+
+    public Result updateStatus(List<String> numList, Integer status) {
+        Map<String,Object> params = new HashMap<>();
+        params.put("sceneCodes", numList);
+        params.put("status", status);
+        return laserClient.updateStatus( params);
+    }
 }

+ 6 - 12
src/main/java/com/fdkankan/ucenter/pay/strategy/impl/DownloadOrderImpl.java

@@ -2,15 +2,10 @@ package com.fdkankan.ucenter.pay.strategy.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fdkankan.ucenter.entity.DownloadOrder;
-import com.fdkankan.ucenter.entity.ScenePlus;
-import com.fdkankan.ucenter.entity.ScenePro;
-import com.fdkankan.ucenter.entity.User;
+import com.fdkankan.ucenter.common.constants.NacosProperty;
+import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.pay.strategy.OrderStrategy;
-import com.fdkankan.ucenter.service.IDownloadOrderService;
-import com.fdkankan.ucenter.service.IScenePlusService;
-import com.fdkankan.ucenter.service.ISceneProService;
-import com.fdkankan.ucenter.service.IUserService;
+import com.fdkankan.ucenter.service.*;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,8 +21,7 @@ public class DownloadOrderImpl implements OrderStrategy {
     @Autowired
     private ISceneProService sceneProService;
     @Autowired
-    private IScenePlusService scenePlusService;
-
+    ICameraTypeService cameraTypeService;
     @Override
     public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long spaceId) throws Exception {
         DownloadOrder downloadOrder = downloadOrderService.getByOrderSnNoPay(orderSn);
@@ -45,8 +39,8 @@ public class DownloadOrderImpl implements OrderStrategy {
         LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(User::getId,downloadOrder.getUserId());
         if(StringUtils.isNotBlank(downloadOrder.getSceneNum())){
-            Integer sceneSource = sceneProService.getSceneSourceByNum(downloadOrder.getSceneNum());
-            if(sceneSource != null  && (sceneSource == 4 || sceneSource == 5)){    //深时场景
+            CameraType cameraType = cameraTypeService.getByNum(downloadOrder.getSceneNum());
+            if(!"aws".equals(NacosProperty.uploadType) && cameraType!= null && cameraType.getIsLaser() == 1){    //深时场景
                 wrapper.setSql("ss_download_num_total = ss_download_num_total + " + downloadOrder.getCount());
             }else {
                 wrapper.setSql("download_num_total = download_num_total + " + downloadOrder.getCount());

+ 3 - 2
src/main/java/com/fdkankan/ucenter/service/ICameraDetailService.java

@@ -2,6 +2,7 @@ package com.fdkankan.ucenter.service;
 
 import com.fdkankan.ucenter.entity.CameraDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.ucenter.entity.CameraType;
 import com.fdkankan.ucenter.entity.IncrementType;
 import com.fdkankan.ucenter.entity.User;
 import com.fdkankan.ucenter.vo.response.CameraAppVo;
@@ -53,9 +54,9 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     Long getTotalSpaceByCameraId(Long cameraId);
     Long getTotalSpaceByCameraId(CameraDetail detailEntity);
 
-    Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space);
+    Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space,CameraType cameraType);
 
-    Boolean checkSpace(CameraDetail detailEntity, Long space);
+    Boolean checkSpace(CameraDetail detailEntity, Long space, CameraType cameraType);
 
     Boolean checkSpace(Long cameraId, Long space);
 

+ 4 - 0
src/main/java/com/fdkankan/ucenter/service/ICameraTypeService.java

@@ -14,4 +14,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface ICameraTypeService extends IService<CameraType> {
 
     CameraType getByCameraType(Integer cameraType);
+
+    CameraType getByNum(String sceneNum);
+
+    CameraType getByCameraId(Long cameraId);
 }

+ 24 - 12
src/main/java/com/fdkankan/ucenter/service/impl/CameraDetailServiceImpl.java

@@ -53,6 +53,8 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     IIncrementTypeService incrementTypeService;
     @Autowired
     IFolderSceneService folderSceneService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     @Override
     public CameraDetail getByCameraId(Long cameraId) {
@@ -116,10 +118,17 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
             wrapper.set(CameraDetail::getUserId,null);
             wrapper.set(CameraDetail::getCooperationUser,null);
             this.update(wrapper);
-            if(!"local".equals(NacosProperty.uploadType) && cameraDetail.getType()!=10){
+            CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+
+            //国内服解绑
+            if(!"aws".equals(NacosProperty.uploadType) && !"local".equals(NacosProperty.uploadType) && cameraType.getIsLaser() ==0){
+                sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId());     //封存场景
+            }
+            //国际服解绑
+            if("aws".equals(NacosProperty.uploadType) ){
                 sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId());     //封存场景
             }
-            if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+            if (cameraType.getIsLaser() == 1) {
                 fdkkLaserService.toBind(false,cameraMap.get(cameraDetail.getCameraId()).getSnCode(),null,null);
             }
         }
@@ -160,7 +169,8 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
             HashMap<Long, CameraDetail> detailMap = this.getByCameraIds(cameraIds);
             HashMap<Long, Camera> cameraMap = cameraService.getByIds(cameraIds);
             for (CameraDetail cameraDetail : detailMap.values()) {
-                if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+                CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+                if (cameraType.getIsLaser() == 1) {
                     fdkkLaserService.toBind(true,cameraMap.get(cameraDetail.getCameraId()).getSnCode(),user.getUserName(),user.getId());
                 }
             }
@@ -265,7 +275,8 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     }
     @Override
     public Long getTotalSpaceByCameraId(CameraDetail cameraDetail) {
-        if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+        if (!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1) {
             return -1L;
         }
         UserIncrement userIncrement = userIncrementService.getByCameraId(cameraDetail.getCameraId());
@@ -282,29 +293,30 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         if(cameraDetail == null){
             return false;
         }
-        if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+        if (!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1) {
             return true;
         }
-        return checkSpace(cameraDetail,space);
+        return checkSpace(cameraDetail,space, cameraType);
     }
 
     @Override
-    public Boolean checkSpace(CameraDetail detailEntity, Long space) {
-        if (detailEntity.getType() == CameraTypeEnum.LASER_TURN.getType() || detailEntity.getType() == CameraTypeEnum.SG_TURN.getType()) {
+    public Boolean checkSpace(CameraDetail detailEntity, Long space,CameraType cameraType) {
+        if (!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1) {
             return true;
         }
         UserIncrement userIncrement = userIncrementService.getByCameraId(detailEntity.getCameraId());
         if(userIncrement == null || userIncrement.getIsExpired() == 1){
-            return checkSpace(detailEntity,null,space);
+            return checkSpace(detailEntity,null,space,cameraType);
         }
         IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
-        return checkSpace(detailEntity,incrementType,space);
+        return checkSpace(detailEntity,incrementType,space,cameraType);
     }
 
     @Override
-    public Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space) {
+    public Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space,CameraType cameraType) {
         Long totalSpace = 0L;
-        if (detailEntity.getType() == CameraTypeEnum.LASER_TURN.getType() || detailEntity.getType() == CameraTypeEnum.SG_TURN.getType()) {
+        if (!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1) {
             return true;
         }
         if("SP".equals(detailEntity.getUnit())){

+ 6 - 3
src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java

@@ -73,6 +73,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     IMailTemplateService mailTemplateService;
     @Autowired
     IIncrementTypeService incrementTypeService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     @Override
     public Camera getBySnCode(String snCode) {
@@ -241,8 +243,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
                 }
             }
-
-            if (responseCamera.getType() == CameraTypeEnum.LASER_TURN.getType() || responseCamera.getType() == CameraTypeEnum.SG_TURN.getType()) {
+            CameraType cameraType = cameraTypeService.getByCameraType(responseCamera.getType());
+            if (cameraType.getIsLaser() == 1) {
                 Map<String, String> params = new HashMap<>();
                 params.put("snCode", responseCamera.getSnCode());
                 responseCamera.setSceneNum(fdkkLaserService.getLaserSceneNum(params));
@@ -358,7 +360,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             List<Long> laserCameraIds = new ArrayList<>();
             for (Long cameraId : detailMap.keySet()) {
                 CameraDetail detail = detailMap.get(cameraId);
-                if (detail.getType() == CameraTypeEnum.LASER_TURN.getType() || detail.getType() == CameraTypeEnum.SG_TURN.getType()) {
+                CameraType cameraType = cameraTypeService.getByCameraType(detail.getType());
+                if (cameraType.getIsLaser() == 1) {
                     laserCameraIds.add(cameraId);
                 }
             }

+ 41 - 0
src/main/java/com/fdkankan/ucenter/service/impl/CameraTypeServiceImpl.java

@@ -1,10 +1,17 @@
 package com.fdkankan.ucenter.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.ucenter.entity.CameraDetail;
 import com.fdkankan.ucenter.entity.CameraType;
+import com.fdkankan.ucenter.entity.ScenePlus;
+import com.fdkankan.ucenter.entity.ScenePro;
 import com.fdkankan.ucenter.mapper.ICameraTypeMapper;
+import com.fdkankan.ucenter.service.ICameraDetailService;
 import com.fdkankan.ucenter.service.ICameraTypeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.ucenter.service.IScenePlusService;
+import com.fdkankan.ucenter.service.ISceneProService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -18,10 +25,44 @@ import org.springframework.stereotype.Service;
 @Service
 public class CameraTypeServiceImpl extends ServiceImpl<ICameraTypeMapper, CameraType> implements ICameraTypeService {
 
+    @Autowired
+    ISceneProService sceneProService;
+    @Autowired
+    IScenePlusService scenePlusService;
+    @Autowired
+    ICameraDetailService cameraDetailService;
     @Override
     public CameraType getByCameraType(Integer cameraType) {
         LambdaQueryWrapper<CameraType> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CameraType::getCameraType,cameraType);
         return this.getOne(wrapper);
     }
+
+    @Override
+    public CameraType getByCameraId(Long cameraId) {
+        CameraDetail cameraDetail = cameraDetailService.getByCameraId(cameraId);
+        if(cameraDetail!= null){
+            return this.getByCameraType(cameraDetail.getType());
+        }
+        return null;
+    }
+
+    @Override
+    public CameraType getByNum(String sceneNum) {
+        ScenePro scenePro = sceneProService.getByNum(sceneNum);
+
+        Long cameraId = null;
+        if(scenePro != null){
+            cameraId = scenePro.getCameraId();
+        }else {
+            ScenePlus scenePlus = scenePlusService.getByNum(sceneNum);
+            if(scenePlus!= null){
+                cameraId = scenePlus.getCameraId();
+            }
+        }
+        if(cameraId != null){
+           return this.getByCameraId(cameraId);
+        }
+        return null;
+    }
 }

+ 26 - 17
src/main/java/com/fdkankan/ucenter/service/impl/DownService.java

@@ -8,6 +8,7 @@ import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.DownloadStatusEnum;
+import com.fdkankan.ucenter.common.constants.NacosProperty;
 import com.fdkankan.ucenter.common.constants.ResultCode;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.*;
@@ -47,7 +48,8 @@ public class DownService implements IDownService {
     IUserService userService;
     @Autowired
     LaserService laserService;
-
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     @Override
     public DownVo checkDownLoad(String sceneNum,Integer isObj) {
@@ -59,11 +61,12 @@ public class DownService implements IDownService {
         if(scenePro == null && plus == null){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
         }
-        Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : plus.getSceneSource();
+        Long cameraId = scenePro !=null ? scenePro.getCameraId() : plus.getCameraId();
+        CameraType cameraType = cameraTypeService.getByCameraId(cameraId);
         isObj = isObj == null ?0 :isObj;
 
-        log.info("checkDownLoad--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4 || sceneType == 5) && isObj !=1){ //深时场景
+        log.info("checkDownLoad--cameraType:{},isObj:{}",cameraType.getCameraType(),isObj);
+        if(cameraType.getIsLaser() == 1 && isObj !=1){ //深时场景
             return SSCheckDownload(sceneNum);
         }
         SceneDownloadLog sceneDownloadLog;
@@ -125,16 +128,16 @@ public class DownService implements IDownService {
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
         ScenePro scenePro = sceneProService.getByNum(sceneNum);
-        ScenePlus scenePlus = scenePlusService.getByNum(sceneNum);
-        if(scenePro == null && scenePlus == null){
+        ScenePlus plus = scenePlusService.getByNum(sceneNum);
+        if(scenePro == null && plus == null){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
         }
-        Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : scenePlus.getSceneSource();
-
+        Long cameraId = scenePro !=null ? scenePro.getCameraId() : plus.getCameraId();
+        CameraType cameraType = cameraTypeService.getByCameraId(cameraId);
         isObj = isObj == null ?0 :isObj;
 
-        log.info("down--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4|| sceneType == 5) && isObj !=1){ //深时场景
+        log.info("down--cameraType:{},isObj:{}",cameraType.getCameraType(),isObj);
+        if(cameraType.getIsLaser() == 1 && isObj !=1){ //深时场景
             return SSDownload(sceneNum,userName);
         }
         DownVo downVo = new DownVo();
@@ -145,7 +148,7 @@ public class DownService implements IDownService {
         }
         Integer downLoadTotal = 0;
         Integer downLoadNum = 0;
-        if(sceneType == 4 || sceneType == 5){
+        if(!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1){
             downLoadTotal = user.getSsDownloadNumTotal();
             downLoadNum = user.getSsDownloadNum();
 
@@ -157,7 +160,7 @@ public class DownService implements IDownService {
             downVo.setDownloadStatus(-1);
             return downVo;
         }
-        Integer sceneVersion = getSceneVersion(scenePro, scenePlus);
+        Integer sceneVersion = getSceneVersion(scenePro, plus);
 
         Map<String,String> params = new HashMap<>(2);
         params.put("type","local");
@@ -177,12 +180,14 @@ public class DownService implements IDownService {
         redisUtil.lRightPush(downloadTaskKey, JSONObject.toJSONString(params));
 
         //修改用户的下载次数
-        if(sceneType == 4|| sceneType == 5){
-            user.setSsDownloadNum(user.getSsDownloadNum() + 1);
+        LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(User::getId,user.getId());
+        if(!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1 ){    //深时场景
+            wrapper.setSql("ss_download_num = ss_download_num + " + 1);
         }else {
-            user.setDownloadNum(user.getDownloadNum() + 1);
+            wrapper.setSql("download_num = download_num + " + 1);
         }
-        userService.updateById(user);
+        userService.update(wrapper);
         SceneDownloadLog sceneDownloadLogEntity = new SceneDownloadLog();
         sceneDownloadLogEntity.setUserId(user.getId());
         sceneDownloadLogEntity.setSceneNum(sceneNum);
@@ -291,7 +296,11 @@ public class DownService implements IDownService {
         }
         LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(User::getId,user.getId());
-        wrapper.set(User::getSsDownloadNum ,user.getSsDownloadNum() + 1);
+        if(!"aws".equals(NacosProperty.uploadType) ){    //深时场景
+            wrapper.setSql("ss_download_num = ss_download_num + " + 1);
+        }else {
+            wrapper.setSql("download_num = download_num + " + 1);
+        }
         userService.update(wrapper);
 
         SceneDownloadLog sceneDownloadLogEntity = new SceneDownloadLog();

+ 5 - 1
src/main/java/com/fdkankan/ucenter/service/impl/SceneApiService.java

@@ -1,6 +1,7 @@
 package com.fdkankan.ucenter.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.amazonaws.services.connect.model.HistoricalMetricResult;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.exception.BusinessException;
@@ -53,6 +54,8 @@ public class SceneApiService {
     LaserService laserService;
     @Autowired
     IUserService userService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     public Result getScenesBySnCode(String snCode, String token) {
         User user = checkToken(token);
@@ -71,7 +74,8 @@ public class SceneApiService {
         if(!cameraDetailEntity.getUserId().equals(user.getId())){
             return Result.success();
         }
-        if (cameraDetailEntity.getType() == CameraTypeEnum.LASER_TURN.getType() || cameraDetailEntity.getType() == CameraTypeEnum.SG_TURN.getType()) {
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetailEntity.getType());
+        if (cameraType.getIsLaser() == 1) {
             List<SceneBySnCodeVo> scenesBySnCode = laserService.getScenesBySnCode(snCode, token);
             return Result.success(scenesBySnCode);
         }

+ 45 - 36
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -132,6 +132,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     @Autowired
     private RabbitMqProducer mqProducer;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     @Override
     public HashMap<String, SceneNumVo> findSceneNumber(String token) {
@@ -236,9 +238,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         this.lockOrUnLockBySpace(cameraDetail,cameraId);
     }
 
-    /**
-     * @param payStatus -2 封存,为 1 解封
-     */
     @Override
     public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId) {
 
@@ -246,6 +245,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(voList .size() <=0){
             return;
         }
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+
         Long totalSpace = cameraDetailService.getTotalSpaceByCameraId(cameraDetail);
         Long usedSpace = 0L;
 
@@ -267,14 +268,16 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             lockOrUnLockScenes(sceneIds,1);
             return;
         }
+
         //按计算完成时间由新到旧封存
         //按计算完成时间由旧到新解封
-        List<Long> lockedIds = new ArrayList<>();
+        //payStatus 1解封,-2封存
+        List<SimpleSceneVo> lockedIds = new ArrayList<>();
         if(usedSpace > totalSpace){
             sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() ==1).collect(Collectors.toList());
             Long space = getSceneLockedIds(lockedIds, sceneVos, usedSpace - totalSpace,cameraDetail.getUnit());
             log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,-2);
-            lockOrUnLockScenes(lockedIds,-2);
+            lockOrUnLockScenes(lockedIds,-2,cameraType.getIsLaser());
             return;
         }
 
@@ -283,11 +286,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             CollectionUtil.reverse(sceneVos);
             Long space = getSceneUnLockedIds(lockedIds, sceneVos, totalSpace - usedSpace,cameraDetail.getUnit());
             log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,1);
-            lockOrUnLockScenes(lockedIds,1);
+            lockOrUnLockScenes(lockedIds,1,cameraType.getIsLaser());
         }
     }
 
-    private Long getSceneUnLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
+    private Long getSceneUnLockedIds(List<SimpleSceneVo> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
         Long space = 0L;
         if (list != null && list.size() > 0){
             for (SimpleSceneVo scenePro : list){
@@ -299,13 +302,13 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     break;
                 }
                 space += sceneSpace;
-                lockedIds.add(scenePro.getId());
+                lockedIds.add(scenePro);
             }
         }
         return space;
     }
 
-    private Long getSceneLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
+    private Long getSceneLockedIds(List<SimpleSceneVo> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
         Long space = 0L;
         if (list != null && list.size() > 0){
             for (SimpleSceneVo scenePro : list){
@@ -314,7 +317,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     sceneSpace = 1L;
                 }
                 space += sceneSpace;
-                lockedIds.add(scenePro.getId());
+                lockedIds.add(scenePro);
                 if (space >= beyondSpace){
                     break;
                 }
@@ -325,43 +328,46 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
 
     // payStatus 为 -2 封存,为 1 解封
-    public void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus) {
+    public void lockOrUnLockScenes(List<SimpleSceneVo> lockedIds,Integer payStatus,Integer isLaser) {
         if (lockedIds == null || lockedIds.size() == 0){
             return;
         }
-        LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.set(ScenePro::getPayStatus,payStatus)
-                .eq(ScenePro::getIsUpgrade,0)
-                .in(ScenePro::getId,lockedIds);
-        this.update(updateWrapper);
+        List<String> v3NumList = lockedIds.stream().filter(e ->"v3".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+        List<String> v4NumList = lockedIds.stream().filter(e ->"v4".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+        if(!v3NumList.isEmpty()){
+            LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.set(ScenePro::getPayStatus,payStatus)
+                    .eq(ScenePro::getIsUpgrade,0)
+                    .in(ScenePro::getNum,lockedIds);
+            this.update(updateWrapper);
+        }
+        if(!v4NumList.isEmpty()){
+            LambdaUpdateWrapper<ScenePlus> updatePlusWrapper = new LambdaUpdateWrapper<>();
+            updatePlusWrapper.set(ScenePlus::getPayStatus,payStatus)
+                    .in(ScenePlus::getNum,lockedIds);
+            scenePlusService.update(updatePlusWrapper);
+        }
 
-        LambdaUpdateWrapper<ScenePlus> updatePlusWrapper = new LambdaUpdateWrapper<>();
-        updatePlusWrapper.set(ScenePlus::getPayStatus,payStatus)
-                .in(ScenePlus::getId,lockedIds);
-        scenePlusService.update(updatePlusWrapper);
+        this.updateOssStatus(v3NumList,v4NumList,payStatus);
 
-        this.updateOssStatus(lockedIds,payStatus);
+        if(isLaser == 1){
+            //激光系统相机
+            //1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4重算中
+            v3NumList.addAll(v4NumList);
+            laserService.updateStatus(v3NumList,payStatus== 1 ?2:3);
+        }
     }
 
     /**
      *  修改oss status.json中 payStatus
      */
-    private void updateOssStatus(List<Long> lockedIds, Integer payStatus) {
-        LambdaQueryWrapper<ScenePro> proWr = new LambdaQueryWrapper<>();
-        proWr.eq(ScenePro::getIsUpgrade,0);
-        proWr.in(ScenePro::getId,lockedIds);
-        List<ScenePro> proList = this.list(proWr);
-
-        LambdaQueryWrapper<ScenePlus> pluWr = new LambdaQueryWrapper<>();
-        pluWr.in(ScenePlus::getId,lockedIds);
-        List<ScenePlus> plusList = scenePlusService.list(pluWr);
-        for (ScenePro scenePro : proList) {
-            this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),payStatus);
+    private void updateOssStatus(List<String> v3NumList ,List<String> v4NumList , Integer payStatus) {
+        if(!v3NumList.isEmpty()){
+            v3NumList.forEach(e ->this.updateOssStatus(String.format(OssPath.v3_statusPath,e),payStatus));
         }
-        for (ScenePlus scenePlus : plusList) {
-            this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),payStatus);
+        if(!v4NumList.isEmpty()){
+            v4NumList.forEach(e ->this.updateOssStatus(String.format(OssPath.v4_statusPath,e),payStatus));
         }
-
     }
 
     /**
@@ -671,8 +677,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
             space = ext.getSpace();
         }
+        CameraType cameraType = cameraTypeService.getByCameraType(detailEntity.getType());
 
-        Boolean canSpace = cameraDetailService.checkSpace(detailEntity,incrementType,space);
+        Boolean canSpace = cameraDetailService.checkSpace(detailEntity,incrementType,space,cameraType);
 
         if(!canSpace){
             throw new BusinessException(CameraConstant.FAILURE_CODE_6008, CameraConstant.FAILURE_MSG_6008);
@@ -1072,6 +1079,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             sceneVo.setPayStatus(scenePro.getPayStatus());
             sceneVo.setCreateTime(DateUserUtil.getDate(scenePro.getCreateTime()).getTime());
             sceneVo.setSpace(scenePro.getSpace());
+            sceneVo.setVersion("v3");
             voList.add(sceneVo);
         }
         List<ScenePlus> plusList = scenePlusService.getListByCameraId(cameraId);
@@ -1093,6 +1101,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
             sceneVo.setCreateTime(DateUserUtil.getDate(time).getTime());
             sceneVo.setSpace(ext.getSpace());
+            sceneVo.setVersion("v4");
             voList.add(sceneVo);
         }
         return voList;

+ 12 - 2
src/main/java/com/fdkankan/ucenter/service/impl/UserIncrementServiceImpl.java

@@ -60,6 +60,8 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     IExceedSpaceSceneService exceedSpaceSceneService;
     @Autowired
     IIncrementTypeService incrementTypeService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     @Override
     public Long getCountByUserId(Long userId, int type) {
@@ -230,9 +232,13 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         wrapper.eq(UserIncrement::getId,param.getId());
         wrapper.set(UserIncrement::getCameraId,null);
         this.update(wrapper);
-        if(cameraDetail.getType() !=10){
+        CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+        if(!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 0){
             sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId());
         }
+        if("aws".equals(NacosProperty.uploadType) ){
+            sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId());     //封存场景
+        }
     }
 
     @Override
@@ -260,7 +266,11 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
                 if(cameraDetail == null){
                     continue;
                 }
-                if(cameraDetail.getType() !=10){
+                CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
+                if(!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 0){
+                    sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId());
+                }
+                if("aws".equals(NacosProperty.uploadType) ){
                     sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId());
                 }
             }

+ 1 - 0
src/main/java/com/fdkankan/ucenter/vo/response/SimpleSceneVo.java

@@ -17,4 +17,5 @@ public class SimpleSceneVo {
     private Integer payStatus;
     private Long createTime;
     private Long space = 0L;
+    private String version;
 }