Selaa lähdekoodia

Merge branch 'eur-increment-ss'

# Conflicts:
#	src/main/resources/mapper/ucenter/ScenePlusMapper.xml
lyhzzz 1 vuosi sitten
vanhempi
commit
0207c44bec
26 muutettua tiedostoa jossa 491 lisäystä ja 176 poistoa
  1. 1 1
      src/main/java/com/fdkankan/ucenter/common/RedisKeyUtil.java
  2. 17 0
      src/main/java/com/fdkankan/ucenter/controller/TestController.java
  3. 5 0
      src/main/java/com/fdkankan/ucenter/entity/CameraType.java
  4. 10 0
      src/main/java/com/fdkankan/ucenter/httpClient/client/LaserClient.java
  5. 53 7
      src/main/java/com/fdkankan/ucenter/httpClient/service/LaserService.java
  6. 13 0
      src/main/java/com/fdkankan/ucenter/httpClient/vo/LaserSceneParam.java
  7. 56 0
      src/main/java/com/fdkankan/ucenter/mq/consumer/LaserSceneStatusConsumer.java
  8. 1 3
      src/main/java/com/fdkankan/ucenter/mq/consumer/ScenePayStatusConsumer.java
  9. 6 12
      src/main/java/com/fdkankan/ucenter/pay/strategy/impl/DownloadOrderImpl.java
  10. 3 2
      src/main/java/com/fdkankan/ucenter/service/ICameraDetailService.java
  11. 4 0
      src/main/java/com/fdkankan/ucenter/service/ICameraTypeService.java
  12. 2 1
      src/main/java/com/fdkankan/ucenter/service/IScenePlusService.java
  13. 3 2
      src/main/java/com/fdkankan/ucenter/service/ISceneProService.java
  14. 20 0
      src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java
  15. 27 12
      src/main/java/com/fdkankan/ucenter/service/impl/CameraDetailServiceImpl.java
  16. 19 12
      src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java
  17. 41 0
      src/main/java/com/fdkankan/ucenter/service/impl/CameraTypeServiceImpl.java
  18. 40 23
      src/main/java/com/fdkankan/ucenter/service/impl/DownService.java
  19. 5 1
      src/main/java/com/fdkankan/ucenter/service/impl/SceneApiService.java
  20. 17 3
      src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java
  21. 95 49
      src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java
  22. 12 2
      src/main/java/com/fdkankan/ucenter/service/impl/UserIncrementServiceImpl.java
  23. 3 3
      src/main/java/com/fdkankan/ucenter/service/impl/UserServiceImpl.java
  24. 2 1
      src/main/java/com/fdkankan/ucenter/vo/request/AppSceneParam.java
  25. 1 0
      src/main/java/com/fdkankan/ucenter/vo/response/SimpleSceneVo.java
  26. 35 42
      src/main/resources/mapper/ucenter/ScenePlusMapper.xml

+ 1 - 1
src/main/java/com/fdkankan/ucenter/common/RedisKeyUtil.java

@@ -15,5 +15,5 @@ public class RedisKeyUtil {
 
     public static final String SCENE_COOPERATION_NUM_USERID = "scene:cooperation:num:userId";
 
-
+    public static final String laserCopyLock = "ucenter:laser:copy:lock:";
 }

+ 17 - 0
src/main/java/com/fdkankan/ucenter/controller/TestController.java

@@ -141,6 +141,23 @@ public class TestController extends BaseController {
         return Result.success( );
     }
 
+    @Autowired
+    ICameraDetailService cameraDetailService;
+    @Autowired
+    IIncrementTypeService incrementTypeService;
+
+    @GetMapping("/checkSsCamera")
+    public Result checkSsCamera() throws Exception {
+        LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(CameraDetail::getType,Arrays.asList(10,11));
+        List<CameraDetail> list = cameraDetailService.list(wrapper);
+        for (CameraDetail cameraDetail : list) {
+            Long cameraId = cameraDetail.getCameraId();
+            sceneProService.lockOrUnLockBySpace(cameraId);
+        }
+        return Result.success();
+    }
+
     public static void main(String[] args) {
         System.out.println(SecurityUtil.MD5(" \u0011\u0007"));
     }

+ 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;
 
     /**
      * 场景码前缀

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

@@ -5,6 +5,7 @@ import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.httpClient.address.LaserAddressSource;
 import com.fdkankan.ucenter.httpClient.param.SSDownSceneParam;
 import com.fdkankan.ucenter.httpClient.param.SsBindParam;
+import com.fdkankan.ucenter.httpClient.vo.LaserSceneParam;
 
 import java.util.List;
 import java.util.Map;
@@ -72,4 +73,13 @@ 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);
+
+    @Post("/laser/4dage/managerSceneList")
+    Result sceneList(@JSONBody LaserSceneParam param);
 }

+ 53 - 7
src/main/java/com/fdkankan/ucenter/httpClient/service/LaserService.java

@@ -1,8 +1,10 @@
 package com.fdkankan.ucenter.httpClient.service;
 
 import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.http.client.NacosAsyncRestTemplate;
+import com.fdkankan.common.constant.PayStatus;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
@@ -13,12 +15,15 @@ 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.LaserSceneParam;
 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 +56,8 @@ public class LaserService {
     private IUserService userService;
     @Autowired
     ICameraService cameraService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
     /**
      * 根据用户获取激光相机数量
      * @param token
@@ -106,7 +113,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 +130,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());
@@ -217,12 +226,8 @@ public class LaserService {
         }
         if(isObj == 1){
             params.put("buildObjStatus",isObj);
-
-        }
-        Result result = laserClient.saveOrEdit(newNum, params);
-        if( result.getCode() != HttpStatus.OK.value()){
-            log.error("激光场景状态同步失败!");
         }
+        rabbitMqProducer.sendByWorkQueue("laser-update-scene",params);
     }
 
     public List<SceneBySnCodeVo> getScenesBySnCode(String snCode, String token) {
@@ -342,4 +347,45 @@ public class LaserService {
             log.error("解绑用户获取激光转台下载状态失败!",e);
         }
     }
+
+    public void updateStatus(List<String> numList, Integer payStatus) {
+        Map<String,Object> params = new HashMap<>();
+        params.put("sceneCodes", numList);
+        params.put("payStatus", payStatus);
+        rabbitMqProducer.sendByWorkQueue("update-laser-scene-status" ,params);
+        //return laserClient.updateStatus( params);
+    }
+
+
+    public HashMap<String, JSONObject> list(List<String> sceneNumList) {
+        LaserSceneParam newParam = new LaserSceneParam();
+        newParam.setPageNum(1);
+        newParam.setPageSize(sceneNumList.size());
+        newParam.setSceneCodes(sceneNumList);
+        return this.list(newParam);
+    }
+    public HashMap<String, JSONObject> list(List<String> sceneNumList,Integer status) {
+        LaserSceneParam newParam = new LaserSceneParam();
+        newParam.setPageNum(1);
+        newParam.setPageSize(sceneNumList.size());
+        newParam.setSceneCodes(sceneNumList);
+        newParam.setStatus(status);
+        return this.list(newParam);
+    }
+
+    public HashMap<String, JSONObject> list(LaserSceneParam newParam) {
+        HashMap<String, JSONObject> map = new HashMap<>();
+        Result fdkkResponse = laserClient.sceneList(newParam);
+        JSONObject jsonObject = (JSONObject) fdkkResponse.getData();
+        if(jsonObject == null){
+            return map;
+        }
+        JSONArray list = jsonObject.getJSONArray("list");
+
+        for (Object o : list) {
+            JSONObject obj = (JSONObject) o;
+            map.put(obj.getString("num"),obj);
+        }
+        return map;
+    }
 }

+ 13 - 0
src/main/java/com/fdkankan/ucenter/httpClient/vo/LaserSceneParam.java

@@ -0,0 +1,13 @@
+package com.fdkankan.ucenter.httpClient.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LaserSceneParam {
+    private  Integer pageNum;
+    private  Integer pageSize;
+    private  Integer status;
+    private List<String> sceneCodes;
+}

+ 56 - 0
src/main/java/com/fdkankan/ucenter/mq/consumer/LaserSceneStatusConsumer.java

@@ -0,0 +1,56 @@
+package com.fdkankan.ucenter.mq.consumer;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.ucenter.common.RedisKeyUtil;
+import com.fdkankan.ucenter.mq.vo.ScenePayStatusVo;
+import com.fdkankan.ucenter.service.ISceneProService;
+import com.rabbitmq.client.Channel;
+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.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 场景封存解封 mq
+ */
+@Slf4j
+@Component
+public class LaserSceneStatusConsumer {
+
+
+    @Autowired
+    RedisUtil redisUtil;
+
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.scene.laser.status:update-scene-status-ucent}")
+    )
+    public void consumerQueue(Channel channel, Message message)  {
+        try {
+            String messageId = message.getMessageProperties().getMessageId();
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("update-scene-status-ucent--messageId:{},msg:{}",messageId,msg);
+
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+
+            JSONObject jsonObject = JSONObject.parseObject(msg);
+            String num = jsonObject.getString("num");
+            Integer status = jsonObject.getInteger("status");
+            String redisKey = RedisKeyUtil.laserCopyLock + num;
+            if(redisUtil.hasKey(redisKey)){
+                redisUtil.del(redisKey);
+            }
+
+        }catch (Exception e){
+            log.info("update-scene-status-ucent----消费失败",e);
+        }finally {
+
+        }
+
+    }
+
+}

+ 1 - 3
src/main/java/com/fdkankan/ucenter/mq/consumer/ScenePayStatusConsumer.java

@@ -45,9 +45,7 @@ public class ScenePayStatusConsumer {
             if(vo == null){
                 return;
             }
-            if(vo.getSceneId() != null && vo.getPayStatus() != null){
-                sceneProService.lockOrUnLockScenes(Arrays.asList(vo.getSceneId()),vo.getPayStatus());
-            }else if(vo.getCameraId() != null){
+            if(vo.getCameraId() != null){
                 sceneProService.lockOrUnLockBySpace(vo.getCameraId());
             }
 

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

+ 2 - 1
src/main/java/com/fdkankan/ucenter/service/IScenePlusService.java

@@ -3,6 +3,7 @@ package com.fdkankan.ucenter.service;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.entity.CameraDetail;
+import com.fdkankan.ucenter.entity.CameraType;
 import com.fdkankan.ucenter.entity.ScenePlus;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.ucenter.vo.ResponseScene;
@@ -39,7 +40,7 @@ public interface IScenePlusService extends IService<ScenePlus> {
 
     ScenePlus getByNum(String sceneNum);
 
-    Long copyV4Scene(ScenePlus scenePlus,String newNum, CameraDetail cameraDetail) ;
+    Long copyV4Scene(ScenePlus scenePlus, String newNum, CameraDetail cameraDetail, CameraType cameraType) ;
 
     List<ScenePlus> getByIds(List<Long> plusIds);
 

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.ucenter.common.Result;
 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.baomidou.mybatisplus.extension.service.IService;
@@ -32,10 +33,10 @@ public interface ISceneProService extends IService<ScenePro> {
 
 
     void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId);
+    public void lockOrUnLockScenes( List<String> v3NumList,List<String> v4NumList,Integer payStatus,Integer isLaser);
 
     void lockOrUnLockBySpace(Long cameraId);
 
-    void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus);
 
     List<ScenePro> getListByCameraId(Long cameraId);
 
@@ -57,7 +58,7 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ScenePro getByNum(String sceneNum);
 
-    Long copyV3Scene(ScenePro scenePro, String newNum, CameraDetail cameraDetail) throws Exception;
+    Long copyV3Scene(ScenePro scenePro, String newNum, CameraDetail cameraDetail, CameraType cameraType) throws Exception;
 
 
     void delete(String sceneNum,Long userId);

+ 20 - 0
src/main/java/com/fdkankan/ucenter/service/impl/AppSceneService.java

@@ -1,5 +1,6 @@
 package com.fdkankan.ucenter.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.util.JwtUtil;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
@@ -104,6 +105,12 @@ public class AppSceneService {
         param.setCopyNumSet(copyNumSet);
         
         Page<AppSceneVo> page =  scenePlusMapper.pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
+        List<String> numList = page.getRecords().stream().map(AppSceneVo::getNum).collect(Collectors.toList());
+
+        HashMap<String, JSONObject> ssSceneMap = new HashMap<>();
+        if(param.getCameraType() == 10 || param.getCameraType() == 11){  //深时
+            ssSceneMap = laserService.list(numList);
+        }
 
 //        Set<Long> cameraIdSet = page.getRecords().stream().map(AppSceneVo::getCameraId).collect(Collectors.toSet());
 //        List<Long> cameraIds =  new ArrayList<>(cameraIdSet);
@@ -113,6 +120,19 @@ public class AppSceneService {
         //相机登录     sceneSourceType 取值皆为0
 
         for (AppSceneVo record : page.getRecords()) {
+            if(param.getCameraType() == 10 || param.getCameraType() == 11){  //深时
+                JSONObject ssObj = ssSceneMap.get(record.getNum());
+                if(ssObj!=null){
+                    record.setSceneName(ssObj.getString("title"));
+                    record.setThumb(ssObj.getString("thumb"));
+                    record.setWebSite(ssObj.getString("webSite"));
+                    record.setViewCount(ssObj.getInteger("viewCount"));
+                }else{
+                    record.setStatus(-1);
+                    record.setWebSite(null);
+                }
+            }
+
             if (record.getStatus() == -1) {
                 record.setStatus(0);
             } else if (record.getStatus() == 500) {

+ 27 - 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,33 @@ 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(detailEntity == null){
+            return false;
+        }
+        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())){

+ 19 - 12
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,17 +243,21 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
                 }
             }
-
-            if (responseCamera.getType() == CameraTypeEnum.LASER_TURN.getType() || responseCamera.getType() == CameraTypeEnum.SG_TURN.getType()) {
-                Map<String, String> params = new HashMap<>();
-                params.put("snCode", responseCamera.getSnCode());
-                responseCamera.setSceneNum(fdkkLaserService.getLaserSceneNum(params));
-            }else{
-                Integer sceneNum = sceneNumMap.get(responseCamera.getId()) == null ? 0 : Math.toIntExact(sceneNumMap.get(responseCamera.getId()).getCount());
-                String lastTime = sceneNumMap.get(responseCamera.getId()) == null ? "" : sceneNumMap.get(responseCamera.getId()).getLastTime();
-                responseCamera.setSceneNum(sceneNum);
-                responseCamera.setLastTime(lastTime);
-            }
+//            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));
+//            }else{
+//                Integer sceneNum = sceneNumMap.get(responseCamera.getId()) == null ? 0 : Math.toIntExact(sceneNumMap.get(responseCamera.getId()).getCount());
+//                String lastTime = sceneNumMap.get(responseCamera.getId()) == null ? "" : sceneNumMap.get(responseCamera.getId()).getLastTime();
+//                responseCamera.setSceneNum(sceneNum);
+//                responseCamera.setLastTime(lastTime);
+//            }
+            Integer sceneNum = sceneNumMap.get(responseCamera.getId()) == null ? 0 : Math.toIntExact(sceneNumMap.get(responseCamera.getId()).getCount());
+            String lastTime = sceneNumMap.get(responseCamera.getId()) == null ? "" : sceneNumMap.get(responseCamera.getId()).getLastTime();
+            responseCamera.setSceneNum(sceneNum);
+            responseCamera.setLastTime(lastTime);
         }
         return PageInfo.PageInfo(page);
     }
@@ -358,7 +364,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;
+    }
 }

+ 40 - 23
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);
@@ -201,16 +206,17 @@ 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("downloadProcess--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4 || sceneType == 5 )&& isObj !=1){ //深时场景
+        log.info("downloadProcess--cameraType:{},isObj:{}",cameraType.getCameraType(),isObj);
+        if(cameraType.getIsLaser() == 1 && isObj !=1){ //深时场景
             return SSDownloadProcess(sceneNum);
         }
         String redisKey = RedisKey.PREFIX_DOWNLOAD_PROGRESS;
@@ -240,7 +246,14 @@ public class DownService implements IDownService {
                     }
                 case DownloadStatusEnum.DOWNLOAD_FAILED_CODE:
                     sceneDownloadLog.setStatus(-1);
-                    userService.updateDownloadNum(userId, -1);
+                    LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
+                    wrapper.eq(User::getId,userId);
+                    if(!"aws".equals(NacosProperty.uploadType) && cameraType.getIsLaser() == 1 ){    //深时场景
+                        wrapper.setSql("ss_download_num = ss_download_num - " + 1);
+                    }else {
+                        wrapper.setSql("download_num = download_num - " + 1);
+                    }
+                    userService.update(wrapper);
                     break;
             }
             sceneDownloadLogService.updateById(sceneDownloadLog);
@@ -291,7 +304,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);
         }

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

@@ -19,6 +19,7 @@ import com.fdkankan.image.MatrixToImageWriterUtil;
 import com.fdkankan.model.utils.CreateObjUtil;
 import com.fdkankan.ucenter.common.OssPath;
 import com.fdkankan.ucenter.common.PageInfo;
+import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.common.Result;
 import com.fdkankan.ucenter.common.constants.ConstantFilePath;
 import com.fdkankan.ucenter.common.constants.NacosProperty;
@@ -93,6 +94,8 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     ISceneCopyLogService sceneCopyLogService;
     @Autowired
     private IUserService userService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
 
     @Override
@@ -172,7 +175,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     }
 
     @Override
-    public Long copyV4Scene(ScenePlus scenePlus,String newNum ,CameraDetail cameraDetail)  {
+    public Long copyV4Scene(ScenePlus scenePlus,String newNum ,CameraDetail cameraDetail,CameraType cameraType)  {
         String oldNum = scenePlus.getNum();
 
         Long plusId = scenePlus.getId();
@@ -260,18 +263,29 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
 
                 sceneCommonService.updateNasSceneJson(targetData,oldNum,newNum,scenePlus.getTitle(),"v4","scene.json");
 
-                if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){  //深时复制
+                if(cameraType.getIsLaser() == 1){  //深时复制
                     String laserPath = laserService.copyDataSource(oldDataSource,plusExt.getDataSource());
                     laserService.copy(oldNum,scenePlus.getCameraId(),scenePlus.getCreateTime(),newNum,2,laserPath,
                             sceneEditInfo.getScenePassword(),plusExt.getLocation(),scenePlus.getUserId(),"V4",plusExt.getIsObj(),scenePlus.getSceneSource(),plusExt.getAlgorithmTime(),plusExt.getShootCount());
                 }
+                String redisKey = RedisKeyUtil.laserCopyLock + newNum;
+                long startTime = new Date().getTime();
+                long startTime2 = new Date().getTime();
+                while (redisUtil.hasKey(redisKey) ){     //深时场景复制同步锁
+                    long waitTime = new Date().getTime();
+                    if(waitTime - startTime2 >1000){
+                        startTime2  = new Date().getTime();
+                        log.info("等待激光复制业务结束----:{}",(waitTime - startTime) /1000);
+                    }
+                }
+
                 scenePlus.setSceneStatus(-2);
                 this.updateById(scenePlus);
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePlus.getUserId());
 
                 Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), plusExt.getSpace());
                 if(!checkSpace){
-                    sceneProService.lockOrUnLockScenes(Arrays.asList(scenePlus.getId()),-2);
+                    sceneProService.lockOrUnLockScenes(new ArrayList<>(),Arrays.asList(scenePlus.getNum()),-2,cameraType.getIsLaser());
                 }
                 cameraDetailService.addUsedSpace(cameraDetail,plusExt.getSpace());
 

+ 95 - 49
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -23,6 +23,7 @@ import com.fdkankan.ucenter.common.OssPath;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.image.MatrixToImageWriterUtil;
+import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.common.constants.ConstantFilePath;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.constants.NacosProperty;
@@ -32,6 +33,7 @@ import com.fdkankan.ucenter.constant.CameraConstant;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.httpClient.service.LaserService;
+import com.fdkankan.ucenter.httpClient.service.PayService;
 import com.fdkankan.ucenter.mapper.ISceneProMapper;
 import com.fdkankan.ucenter.mapper.ISceneUpgradeMapper;
 import com.fdkankan.ucenter.service.*;
@@ -132,6 +134,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 +240,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 +247,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;
 
@@ -263,18 +266,19 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<SimpleSceneVo> sceneVos = voList.stream().sorted(Comparator.comparing(SimpleSceneVo::getCreateTime).reversed()).collect(Collectors.toList());
 
         if(totalSpace == -1){  //  无限容量 全部解封
-            List<Long> sceneIds = sceneVos.stream().filter(entity -> entity.getPayStatus() !=1).map(SimpleSceneVo::getId).collect(Collectors.toList());
-            lockOrUnLockScenes(sceneIds,1);
+            lockOrUnLockScenes(sceneVos,1,cameraType);
             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);
             return;
         }
 
@@ -283,11 +287,17 @@ 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);
         }
     }
 
-    private Long getSceneUnLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
+    private void lockOrUnLockScenes(List<SimpleSceneVo> sceneVos, Integer payStatus,CameraType cameraType){
+        List<String> v3NumList = sceneVos.stream().filter(e ->"v3".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+        List<String> v4NumList = sceneVos.stream().filter(e ->"v4".equals(e.getVersion())).map(SimpleSceneVo::getNum).collect(Collectors.toList());
+        lockOrUnLockScenes(v3NumList,v4NumList,payStatus,cameraType.getIsLaser());
+    }
+
+    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 +309,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 +324,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 +335,47 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
 
     // payStatus 为 -2 封存,为 1 解封
-    public void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus) {
-        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);
-
-        LambdaUpdateWrapper<ScenePlus> updatePlusWrapper = new LambdaUpdateWrapper<>();
-        updatePlusWrapper.set(ScenePlus::getPayStatus,payStatus)
-                .in(ScenePlus::getId,lockedIds);
-        scenePlusService.update(updatePlusWrapper);
+    @Override
+    public void lockOrUnLockScenes( List<String> v3NumList,List<String> v4NumList,Integer payStatus,Integer isLaser) {
 
-        this.updateOssStatus(lockedIds,payStatus);
+        if(!v3NumList.isEmpty()){
+            LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.set(ScenePro::getPayStatus,payStatus)
+                    .eq(ScenePro::getIsUpgrade,0)
+                    .in(ScenePro::getNum,v3NumList);
+            this.update(updateWrapper);
+        }
+        if(!v4NumList.isEmpty()){
+            LambdaUpdateWrapper<ScenePlus> updatePlusWrapper = new LambdaUpdateWrapper<>();
+            updatePlusWrapper.set(ScenePlus::getPayStatus,payStatus)
+                    .in(ScenePlus::getNum,v4NumList);
+            scenePlusService.update(updatePlusWrapper);
+        }
+
+        this.updateOssStatus(v3NumList,v4NumList,payStatus);
+
+        if(isLaser == 1){
+            //激光系统相机
+            //1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4重算中'
+            List<String> numList = new ArrayList<>();
+            numList.addAll(v3NumList);
+            numList.addAll(v4NumList);
+            if(!numList.isEmpty()){
+                laserService.updateStatus(numList,payStatus);
+            }
+        }
     }
 
     /**
      *  修改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,13 +685,14 @@ 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);
         }
-        this.copySceneNoCheck(sceneNum);
+        copyScene(detailEntity,scenePro,scenePlus,cameraType);
 
     }
 
@@ -690,22 +705,50 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(detailEntity == null){
             throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
         }
+        IncrementType incrementType  = null;
+        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
+        if(userIncrement != null && userIncrement.getIsExpired() != 1){
+             incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+        }
+        Long space = null;
+        if( scenePro != null ){
+            space = scenePro.getSpace();
+        }
+        if( scenePlus != null ){
+            ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
+            space = ext.getSpace();
+        }
+        CameraType cameraType = cameraTypeService.getByCameraType(detailEntity.getType());
+
+        Boolean canSpace = cameraDetailService.checkSpace(detailEntity,incrementType,space,cameraType);
+
+        if(!canSpace){
+            throw new BusinessException(CameraConstant.FAILURE_CODE_6008, CameraConstant.FAILURE_MSG_6008);
+        }
+
+        copyScene(detailEntity,scenePro,scenePlus,cameraType);
+    }
 
+    private  void copyScene(CameraDetail detailEntity,ScenePro scenePro,ScenePlus scenePlus,CameraType cameraType) throws Exception {
         String newNum = scene3dNumService.generateSceneNum(detailEntity.getType());
 
         Long sceneId = scenePro == null ? scenePlus.getId() :scenePro.getId();
         Long newSceneId = null;
         FolderScene folderScene = folderSceneService.getByType(sceneId, null);
+        if(cameraType.getIsLaser() == 1){
+            String redisKey = RedisKeyUtil.laserCopyLock + newNum;
+            redisUtil.set(redisKey,"1",60*60);
+        }
 
         if(scenePro !=null){        //v3场景复制
             log.info("场景复制--V3--OldNum:{},oldTitle:{},newNum:{},", scenePro.getNum(),scenePro.getSceneName(),newNum);
 
-            newSceneId = this.copyV3Scene(scenePro, newNum, detailEntity);
+            newSceneId = this.copyV3Scene(scenePro, newNum, detailEntity,cameraType);
         }
         if(scenePlus != null){      //v4场景复制
             log.info("场景复制--V4--OldNum:{},oldTitle:{},newNum:{}", scenePlus.getNum(),scenePlus.getTitle(),newNum);
 
-            newSceneId =  scenePlusService.copyV4Scene(scenePlus,newNum,detailEntity);
+            newSceneId =  scenePlusService.copyV4Scene(scenePlus,newNum,detailEntity,cameraType);
         }
         log.info("场景复制--完成--sceneId:{}",newSceneId);
 
@@ -730,7 +773,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
 
     @Override
-    public Long copyV3Scene(ScenePro scenePro,String newNum,CameraDetail cameraDetail) throws Exception {
+    public Long copyV3Scene(ScenePro scenePro,String newNum,CameraDetail cameraDetail,CameraType cameraType) throws Exception {
 
         String oldNum = scenePro.getNum();
         Long sceneProId = scenePro.getId();
@@ -744,6 +787,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         scenePro.setStatus(0);
         this.save(scenePro);
 
+
         ExecutorService executor = ThreadUtil.newSingleExecutor();
         try {
 
@@ -802,7 +846,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 String targetVoice = String.format(SceneResourcePath.voicePath, scenePro.getNum());
                 this.copyOssAndNas(oldNum,scenePro.getNum(),sourceVoice,targetVoice);
 
-                if(scenePro.getSceneSource() == 4 || scenePro.getSceneSource() == 5){  //深时复制
+                if(cameraType.getIsLaser() == 1){  //深时复制
                     String laserPath = laserService.copyDataSource(oldDataSource,scenePro.getDataSource());
                     laserService.copy(oldNum,scenePro.getCameraId(),scenePro.getCreateTime(),newNum,2,laserPath,
                             oldEditScene.getSceneKey(),null,scenePro.getUserId(),"V3",scenePro.getIsObj(),scenePro.getSceneSource(),scenePro.getCreateTime(),scenePro.getShootCount());
@@ -812,9 +856,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePro.getUserId());
 
-                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), scenePro.getSpace());
+                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail, scenePro.getSpace(),cameraType);
                 if(!checkSpace){
-                    this.lockOrUnLockScenes(Arrays.asList(scenePro.getId()),-2);
+                    this.lockOrUnLockScenes(Arrays.asList(scenePro.getNum()),new ArrayList<>(),-2,cameraType.getIsLaser());
                 }
                 cameraDetailService.addUsedSpace(cameraDetail,scenePro.getSpace());
 
@@ -1072,6 +1116,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 +1138,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());
                 }
             }

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

@@ -14,6 +14,7 @@ import com.fdkankan.ucenter.common.constants.ConstantFilePath;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.sensitive.Variable;
+import com.fdkankan.ucenter.common.constants.NacosProperty;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.*;
 import com.fdkankan.ucenter.mapper.IUserIncrementMapper;
@@ -71,6 +72,8 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     ICameraService cameraService;
     @Autowired
     ICameraSpaceService cameraSpaceService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     private User getByEmail(String email){
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
@@ -347,9 +350,6 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
             }
 
         }
-        if("10".equals(cameraVo.getCameraType()) ){ //深时权益
-            cameraVo.setUsedSpace("0");
-        }
         return cameraVo;
     }
 

+ 2 - 1
src/main/java/com/fdkankan/ucenter/vo/request/AppSceneParam.java

@@ -4,6 +4,7 @@ import com.fdkankan.ucenter.common.RequestBase;
 import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -21,7 +22,7 @@ public class AppSceneParam extends RequestBase {
     private String snCode;
 
     private String cooperationNums;
-    private List<String> cooperationNumList;
+    private List<String> cooperationNumList = new ArrayList<>();
 
     private Long cameraId;
 

+ 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;
 }

+ 35 - 42
src/main/resources/mapper/ucenter/ScenePlusMapper.xml

@@ -2,28 +2,55 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fdkankan.ucenter.mapper.IScenePlusMapper">
 
+    <sql id="commonWhere">
+        left join t_user u on p.user_id = u.id
+        left join t_camera c on p.camera_id = c.id
+        left join t_camera_detail d on c.id = d.camera_id
+        where   p.rec_status = 'A'    AND p.scene_type != 99
+        <if test="param.sceneType !=null and param.sceneType !=''">
+            and  p.scene_type  = #{param.sceneType}
+        </if>
+        <if test= 'param.cameraType != null' >
+            and d.type = #{param.cameraType}
+        </if>
+        <if test="param.copyNumSet !=null and param.copyNumSet.size >0">
+            and  p.num not in
+            <foreach collection="param.copyNumSet" item="num" open="("  separator="," close=")">
+                #{num}
+            </foreach>
+        </if>
+
+        <if test="param.userId !=null and param.cooperationNumList !=null and param.cooperationNumList.size >0">
+            and ( p.user_id = #{param.userId}  or p.num in
+            <foreach collection="param.cooperationNumList" item="coNum" open="(" separator="," close=")">
+                #{coNum}
+            </foreach>
+            )
+        </if>
+        <if test="param.userId !=null  and param.cooperationNumList !=null and param.cooperationNumList.size ==0 ">
+            and  p.user_id = #{param.userId}
+        </if>
+    </sql>
+
+
     <select id="pageList" resultType="com.fdkankan.ucenter.vo.response.AppSceneVo">
         SELECT p.id ,null as name ,0 as isFolder,null as type,null as parentId ,p.create_time,num,scene_name,scene_dec,
         p.status,pay_status,thumb,web_site,0 as is_upgrade,view_count,
-         p.camera_id,p.user_id ,p.data_source,p.scene_type,build_type,ca.sn_code,ca.child_name,4 as location
+        p.camera_id,p.user_id ,p.data_source,p.scene_type,build_type,c.sn_code,c.child_name,4 as location
         FROM t_scene_pro p
-        left join t_camera ca on p.camera_id = ca.id
-        left join `t_camera_detail` tcd on p.camera_id = tcd.camera_id
-        WHERE is_upgrade = 0 and  p.rec_status = 'A'   AND ( p.status = 1 OR p.status = -2) AND p.scene_type != 99
         <include refid="commonWhere"></include>
+        and is_upgrade = 0 AND ( p.status = 1 OR p.status = -2)
         <if test="param.sceneName !=null and param.sceneName !=''">
             and  p.scene_name like CONCAT('%',#{param.sceneName},'%')
         </if>
         UNION
         SELECT p.id as id ,null as name ,0 as isFolder,null as type,null as parentId,p.create_time ,num,title as scene_name,description as scene_dec,
         scene_status as status,pay_status,thumb,web_site,1 as is_upgrade,view_count,
-        p.camera_id,p.user_id,e.data_source,p.scene_type,build_type,ca.sn_code,ca.child_name,e.location
+        p.camera_id,p.user_id,e.data_source,p.scene_type,build_type,c.sn_code,c.child_name,e.location
         FROM t_scene_plus p
-        left join t_camera ca on p.camera_id = ca.id
         LEFT JOIN t_scene_plus_ext e on p.id = e.plus_id
-        left join `t_camera_detail` tcd on p.camera_id = tcd.camera_id
-        WHERE  p.rec_status = 'A' AND ( p.scene_status = 1 OR p.scene_status = -2) AND p.scene_type != 99
         <include refid="commonWhere"></include>
+        AND ( p.scene_status = 1 OR p.scene_status = -2)
         <if test="param.sceneName !=null and param.sceneName !=''">
             and  p.title like CONCAT('%',#{param.sceneName},'%')
         </if>
@@ -37,40 +64,6 @@
     </select>
 
 
-    <sql id="commonWhere">
-        <if test= 'param.userId != null or param.cooperationNumList != null or param.cameraId != null'>
-           and  ( 1!=1
-        </if>
-        <if test="param.userId != null">
-            or  p.user_id =#{param.userId}
-        </if>
-        <if test="param.cameraId !=null ">
-            or p.camera_id = #{param.cameraId}
-        </if>
-        <if test="param.cooperationNumList !=null and param.cooperationNumList.size >0">
-            or p.num in
-               <foreach collection="param.cooperationNumList" item="sceneNum" open="("  separator="," close=")">
-                   #{sceneNum}
-               </foreach>
-        </if>
-        <if test= 'param.userId != null or param.cooperationNumList != null or param.cameraId != null'>
-            )
-        </if>
-        <if test="param.sceneType !=null and param.sceneType !=''">
-            and  p.scene_type  = #{param.sceneType}
-        </if>
-        <if test= 'param.cameraType != null' >
-            and tcd.type = #{param.cameraType}
-        </if>
-        <if test="param.copyNumSet !=null and param.copyNumSet.size >0">
-            and  p.num not in
-            <foreach collection="param.copyNumSet" item="num" open="("  separator="," close=")">
-                #{num}
-            </foreach>
-        </if>
-    </sql>
-
-
     <select id="getCountByUserId" resultType="java.lang.Long">
         select count(*) from t_scene_plus s left join t_camera_detail d on s.camera_id = d.camera_id
         where s.rec_status = 'A'