Просмотр исходного кода

Merge branch 'task-lyh-inctype2' into test

# Conflicts:
#	src/main/resources/mapper/ucenter/CameraMapper.xml
lyhzzz 2 лет назад
Родитель
Сommit
7977610684

+ 6 - 0
src/main/java/com/fdkankan/ucenter/controller/app/AppCameraController.java

@@ -2,6 +2,7 @@ package com.fdkankan.ucenter.controller.app;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.ucenter.common.Result;
+import com.fdkankan.ucenter.common.ResultData;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.service.impl.AppCameraService;
 import lombok.extern.slf4j.Slf4j;
@@ -79,4 +80,9 @@ public class AppCameraController {
         return Result.success();
     }
 
+    @GetMapping("/checkCameraSpace")
+    public Result checkCameraSpace(@RequestParam(required = false) String snCode){
+
+        return Result.success( appCameraService.checkCameraSpace(snCode));
+    }
 }

+ 9 - 1
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.IncrementType;
 import com.fdkankan.ucenter.entity.User;
 import com.fdkankan.ucenter.vo.response.CameraAppVo;
 import com.fdkankan.ucenter.vo.response.CameraExcelVo;
@@ -35,7 +36,7 @@ public interface ICameraDetailService extends IService<CameraDetail> {
 
     void addUsedSpace(HashMap<Long, Long> cameraMap);
 
-    void addUsedSpace(Long id,Long space);
+    void addUsedSpace(CameraDetail cameraDetail,Long space);
 
     List<CameraAppVo> getListByUserAndType(Long userId, Integer cameraType);
 
@@ -50,4 +51,11 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     void updateSpaceByCameraId(Long cameraId, Long cameraDetailSpace);
 
     Long getTotalSpaceByCameraId(Long cameraId);
+    Long getTotalSpaceByCameraId(CameraDetail detailEntity);
+
+    Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space);
+
+    Boolean checkSpace(CameraDetail detailEntity, Long space);
+
+    Boolean checkSpace(Long cameraId, Long space);
 }

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

@@ -1,6 +1,7 @@
 package com.fdkankan.ucenter.service.impl;
 
 import com.fdkankan.common.constant.AppConstant;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.FileSizeUtil;
 import com.fdkankan.ucenter.constant.CameraConstant;
@@ -10,6 +11,7 @@ import com.fdkankan.ucenter.entity.CameraDetail;
 import com.fdkankan.ucenter.entity.User;
 import com.fdkankan.ucenter.entity.UserIncrement;
 import com.fdkankan.ucenter.service.*;
+import com.fdkankan.ucenter.vo.response.AppCameraSpace;
 import com.fdkankan.ucenter.vo.response.CameraAppVo;
 import com.fdkankan.ucenter.vo.response.GroupByCount;
 import org.apache.commons.lang3.StringUtils;
@@ -92,11 +94,17 @@ public class AppCameraService {
         scenePlusService.bindOrUnCamera(cameraIds,user.getId());
         CameraAppVo responseCamera = new CameraAppVo();
         responseCamera.setChildName(camera.getChildName());
-
+        responseCamera.setUnit(cameraDetail.getUnit());
         responseCamera.setUsedSpace(BigInteger.valueOf(cameraDetail.getUsedSpace()));
         responseCamera.setTotalSpace(BigInteger.valueOf(cameraDetail.getTotalSpace()));
-        responseCamera.setUsedSpaceStr(FileSizeUtil.formatFileSize(cameraDetail.getUsedSpace()));
-        responseCamera.setTotalSpaceStr(FileSizeUtil.formatFileSize(cameraDetail.getTotalSpace()));
+        if("GB".equals(cameraDetail.getUnit())){
+            responseCamera.setUsedSpaceStr(FileSizeUtil.formatFileSize(cameraDetail.getUsedSpace()));
+            responseCamera.setTotalSpaceStr(FileSizeUtil.formatFileSize(cameraDetail.getTotalSpace()));
+        }
+        if("SP".equals(cameraDetail.getUnit())){
+            responseCamera.setUsedSpaceStr(String.valueOf(cameraDetail.getUsedSpace()));
+            responseCamera.setTotalSpaceStr(String.valueOf(cameraDetail.getTotalSpace()));
+        }
         return responseCamera;
     }
 
@@ -161,4 +169,17 @@ public class AppCameraService {
         }
         cameraDetailService.uploadUserCameraInfo(cameraEntity.getId(),cameraVersion,appVersion);
     }
+
+    public AppCameraSpace checkCameraSpace(String snCode) {
+        Camera camera = cameraService.getBySnCode(snCode);
+        if(camera == null){
+            throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
+        }
+        CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
+        if(cameraDetail == null){
+            throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
+        }
+        Long totalSpace = cameraDetailService.getTotalSpaceByCameraId(cameraDetail);
+        return new AppCameraSpace(totalSpace,cameraDetail.getUnit());
+    }
 }

+ 75 - 7
src/main/java/com/fdkankan/ucenter/service/impl/CameraDetailServiceImpl.java

@@ -166,6 +166,9 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         List<CameraDetail> list = this.list(wrapper);
         for (CameraDetail cameraDetail : list) {
             long subSpace = cameraMap.get(cameraDetail.getCameraId()) == null ? 0L : cameraMap.get(cameraDetail.getCameraId());
+            if("SP".equals(cameraDetail.getUnit())){
+                subSpace = 1L;
+            }
             long usedSpace = cameraDetail.getUsedSpace() - subSpace ;
             cameraDetail.setUsedSpace(usedSpace < 0 ? 0L :usedSpace);
             //解封封存场景
@@ -175,9 +178,12 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     }
 
     @Override
-    public void addUsedSpace(Long id,Long space) {
+    public void addUsedSpace(CameraDetail cameraDetail,Long space) {
+        if("SP".equals(cameraDetail.getUnit())){
+            space = 1L;
+        }
         LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(CameraDetail::getId,id);
+        wrapper.eq(CameraDetail::getId,cameraDetail.getId());
         wrapper.setSql("used_space =  used_space + " + space);
         this.update(wrapper);
     }
@@ -229,12 +235,74 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
     @Override
     public Long getTotalSpaceByCameraId(Long cameraId) {
-        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
+        CameraDetail cameraDetail = this.getByCameraId(cameraId);
+        if(cameraDetail == null){
+            return 0L;
+        }
+        return getTotalSpaceByCameraId(cameraDetail);
+    }
+    @Override
+    public Long getTotalSpaceByCameraId(CameraDetail cameraDetail) {
+        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraDetail.getCameraId());
         if(userIncrement != null && userIncrement.getIsExpired() == 0){
-            Integer incrementTypeId = userIncrement.getIncrementTypeId();
-            IncrementType incrementType = incrementTypeService.getById(incrementTypeId);
-            return incrementType.getCameraCapacity() * 1024 *1024 *1024L;
+            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+            return getTotalSpace(cameraDetail,incrementType);
         }
-        return null;
+        return getTotalSpace(cameraDetail,null);
+    }
+
+    @Override
+    public Boolean checkSpace(Long cameraId, Long space) {
+        CameraDetail cameraDetail = this.getByCameraId(cameraId);
+        if(cameraDetail == null){
+            return false;
+        }
+        return checkSpace(cameraDetail,space);
+    }
+
+    @Override
+    public Boolean checkSpace(CameraDetail detailEntity, Long space) {
+        UserIncrement userIncrement = userIncrementService.getByCameraId(detailEntity.getCameraId());
+        if(userIncrement == null || userIncrement.getIsExpired() == 1){
+            return checkSpace(detailEntity,null,space);
+        }
+        IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+        return checkSpace(detailEntity,incrementType,space);
+    }
+
+    @Override
+    public Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space) {
+        Long totalSpace = 0L;
+        if("SP".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraSpace() == -1){
+                return true;
+            }
+            totalSpace = incrementType != null ?incrementType.getCameraSpace() : detailEntity.getTotalSpace();
+            return detailEntity.getUsedSpace() + 1 <= totalSpace;
+        }
+        if("GB".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraCapacity() == -1){
+                return true;
+            }
+            totalSpace = incrementType != null ?incrementType.getCameraCapacity() : detailEntity.getTotalSpace();
+            return detailEntity.getUsedSpace() + space <= totalSpace * 1024 * 1024 * 1024L;
+        }
+        return false;
+    }
+
+    public Long getTotalSpace(CameraDetail detailEntity, IncrementType incrementType) {
+        if("SP".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraSpace() == -1){
+                return -1L;
+            }
+            return incrementType != null ?incrementType.getCameraSpace() : detailEntity.getTotalSpace();
+        }
+        if("GB".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraCapacity() == -1){
+                return -1L;
+            }
+            return incrementType != null ?incrementType.getCameraCapacity() : detailEntity.getTotalSpace();
+        }
+        return 0L;
     }
 }

+ 49 - 23
src/main/java/com/fdkankan/ucenter/service/impl/CameraServiceImpl.java

@@ -70,6 +70,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     ICameraIncrementLogService cameraIncrementLogService;
     @Autowired
     IMailTemplateService mailTemplateService;
+    @Autowired
+    IIncrementTypeService incrementTypeService;
 
     @Override
     public Camera getBySnCode(String snCode) {
@@ -173,30 +175,31 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         Page<CameraVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
         List<Long> cameraIdList = page.getRecords().parallelStream().map(CameraVo::getId).collect(Collectors.toList());
         HashMap<Long,GroupByCount> sceneNumMap = new HashMap<>();      //场景数量,最后拍摄时间
-        HashMap<Long, CameraSpaceVo> cameraSpaceMap = new HashMap<>();   //到期时间
+        //HashMap<Long, CameraSpaceVo> cameraSpaceMap = new HashMap<>();   //到期时间
         HashMap<Long, UserIncrement> incrementMap = new HashMap<>();   //到期时间,是否过期
         if(cameraIdList.size() >0){
             sceneNumMap =  sceneProService.findSceneNumByCameraIds(cameraIdList);
-            cameraSpaceMap = cameraSpaceService.getVoListByCameraIds(cameraIdList);
+            //cameraSpaceMap = cameraSpaceService.getVoListByCameraIds(cameraIdList);
             incrementMap = userIncrementService.findByCameraIds(cameraIdList);
         }
         for (CameraVo responseCamera : page.getRecords()) {
             responseCamera.setCameraType(param.getCameraType());
             if (responseCamera.getType() != 0){
-                responseCamera.setUsedSpaceStr(FileSizeUtil.formatFileSize(Long.parseLong(responseCamera.getUsedSpace())));
-                responseCamera.setTotalSpaceStr(FileSizeUtil.formatFileSize(Long.parseLong(responseCamera.getTotalSpace())));
-                String usedSpace = String.valueOf(FileSizeUtil.formetFileSize(Long.parseLong(responseCamera.getUsedSpace()), FileSizeUtil.SIZETYPE_GB));
-                String totalSpace = String.valueOf(FileSizeUtil.formetFileSize(Long.parseLong(responseCamera.getTotalSpace()), FileSizeUtil.SIZETYPE_GB));
-                responseCamera.setUsedSpace(usedSpace);
-                responseCamera.setTotalSpace(totalSpace);
-            }
-            if(cameraSpaceMap.get(responseCamera.getId()) !=null){
-                responseCamera.setSpace((long)FileSizeUtil.formetFileSize(cameraSpaceMap.get(responseCamera.getId()).getSpace().longValue(), FileSizeUtil.SIZETYPE_GB));
-                responseCamera.setSpaceStr(FileSizeUtil.formatFileSize(cameraSpaceMap.get(responseCamera.getId()).getSpace().longValue()));
-                responseCamera.setSpaceEndStr(DateUtil.date2String(cameraSpaceMap.get(responseCamera.getId()).getSpaceEndTime(), DateUtil.YYYY_MM_DD_DATE_FORMAT));
-                if(Days.daysBetween(new DateTime(), new DateTime(cameraSpaceMap.get(responseCamera.getId()).getSpaceEndTime())).getDays() < 7){
-                    responseCamera.setIsExpire(true);
+                if("GB".equals(responseCamera.getUnit())){
+                    responseCamera.setUsedSpaceStr(FileSizeUtil.formatFileSize(Long.parseLong(responseCamera.getUsedSpace())));
+                    responseCamera.setTotalSpaceStr(FileSizeUtil.formatFileSize(Long.parseLong(responseCamera.getTotalSpace())));
+                    String usedSpace = String.valueOf(FileSizeUtil.formetFileSize(Long.parseLong(responseCamera.getUsedSpace()), FileSizeUtil.SIZETYPE_GB));
+                    String totalSpace = String.valueOf(FileSizeUtil.formetFileSize(Long.parseLong(responseCamera.getTotalSpace()), FileSizeUtil.SIZETYPE_GB));
+                    responseCamera.setUsedSpace(usedSpace);
+                    responseCamera.setTotalSpace(totalSpace);
+                }
+                if("SP".equals(responseCamera.getUnit())){
+                    responseCamera.setUsedSpaceStr(responseCamera.getUsedSpace());
+                    responseCamera.setTotalSpaceStr(responseCamera.getTotalSpace());
+                    responseCamera.setUsedSpace(responseCamera.getUsedSpace());
+                    responseCamera.setTotalSpace(responseCamera.getTotalSpace());
                 }
+
             }
             if(incrementMap.get(responseCamera.getId()) != null){
                 UserIncrement userIncrement = incrementMap.get(responseCamera.getId());
@@ -214,14 +217,29 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
                     }else {
                         responseCamera.setIsExpire(false);
                     }
-                    if("SE".equals(userIncrement.getMemberLevels()) && DateUserUtil.getDate(dayTime).getTime() > new Date().getTime() ){  //高级会员 50G容量
-                        responseCamera.setTotalSpaceStr("50.00GB");
-                        responseCamera.setTotalSpace("50.00");
+                    IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+                    String totalSpaceStr = null;
+                    String totalSpace = null;
+                    if("GB".equals(responseCamera.getUnit())){
+                        if(incrementType!= null && "SE".equals(userIncrement.getMemberLevels()) && DateUserUtil.getDate(dayTime).getTime() > new Date().getTime() ){  //高级会员 50G容量
+                            totalSpaceStr = incrementType.getCameraCapacity() + ".00GB";
+                            totalSpace = incrementType.getCameraCapacity() + ".00";
+                        }
+                    }
+                    if("SP".equals(responseCamera.getUnit())){
+                        if(incrementType != null && "SE".equals(userIncrement.getMemberLevels()) && DateUserUtil.getDate(dayTime).getTime() > new Date().getTime() ){  //高级会员 50G容量
+                            totalSpaceStr = incrementType.getCameraSpace() + ".00";
+                            totalSpace = incrementType.getCameraSpace() + ".00";
+                        }
                     }
+                    if(totalSpace!=null){
+                        responseCamera.setTotalSpaceStr(totalSpaceStr);
+                        responseCamera.setTotalSpace(totalSpace);
+                    }
+
                 }
             }
 
-
             if(responseCamera.getType() == 10){
                 Map<String, String> params = new HashMap<>();
                 params.put("snCode", responseCamera.getSnCode());
@@ -409,10 +427,18 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
                 vo.setChildName(cameraEntity.getChildName());
                 vo.setSnCode(cameraEntity.getSnCode());
                 if (detailEntity.getType() != 0){
-                    vo.setUsedSpace(Double.valueOf(FileSizeUtil.formetFileSize(detailEntity.getUsedSpace().longValue(), FileSizeUtil.SIZETYPE_GB)).intValue() +"" );
-                    vo.setTotalSpace(Double.valueOf(FileSizeUtil.formetFileSize(detailEntity.getTotalSpace().longValue(), FileSizeUtil.SIZETYPE_GB)).intValue() +"");
-                    vo.setUsedSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getUsedSpace().longValue()));
-                    vo.setTotalSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getTotalSpace().longValue()));
+                    if("GB".equals(detailEntity.getUnit())){
+                        vo.setUsedSpace(Double.valueOf(FileSizeUtil.formetFileSize(detailEntity.getUsedSpace().longValue(), FileSizeUtil.SIZETYPE_GB)).intValue() +"" );
+                        vo.setTotalSpace(Double.valueOf(FileSizeUtil.formetFileSize(detailEntity.getTotalSpace().longValue(), FileSizeUtil.SIZETYPE_GB)).intValue() +"");
+                        vo.setUsedSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getUsedSpace().longValue()));
+                        vo.setTotalSpaceStr(FileSizeUtil.formatFileSize(detailEntity.getTotalSpace().longValue()));
+                    }
+                    if("SP".equals(detailEntity.getUnit())){
+                        vo.setUsedSpace(String.valueOf(detailEntity.getUsedSpace()));
+                        vo.setTotalSpace(String.valueOf(detailEntity.getTotalSpace()));
+                        vo.setUsedSpaceStr(String.valueOf(detailEntity.getUsedSpace()));
+                        vo.setTotalSpaceStr(String.valueOf(detailEntity.getTotalSpace()));
+                    }
                 }
                 vo.setType(detailEntity.getType());
                 vo.setCountry(detailEntity.getCountry());

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

@@ -267,15 +267,11 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 }
                 scenePlus.setSceneStatus(-2);
                 this.updateById(scenePlus);
-                cameraDetailService.addUsedSpace(cameraDetail.getId(),plusExt.getSpace());
+                cameraDetailService.addUsedSpace(cameraDetail,plusExt.getSpace());
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePlus.getUserId());
 
-                Long totalSpace = cameraDetail.getTotalSpace();
-                Long totalSpace1 = cameraDetailService.getTotalSpaceByCameraId(cameraDetail.getCameraId());
-                if(totalSpace1 != null ){
-                    totalSpace = totalSpace1;
-                }
-                if(totalSpace > 0 && cameraDetail.getUsedSpace() + plusExt.getSpace()  > totalSpace ){
+                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), plusExt.getSpace());
+                if(!checkSpace){
                     sceneProService.lockOrUnLockScenes(Arrays.asList(scenePlus.getId()),-2);
                 }
             }catch (Exception e){

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

@@ -237,27 +237,22 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     @Override
     public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId) {
 
-        Long totalSpace = cameraDetail.getTotalSpace();
-        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
-        if(userIncrement!=null && userIncrement.getIsExpired()==0){
-            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
-            if(incrementType!=null){
-                if(incrementType.getCameraCapacity() == -1){
-                    totalSpace   = -1L;
-                }else {
-                    totalSpace = incrementType.getCameraCapacity() * 1024* 1024 * 1024L;
-                }
-            }
-        }
-        Long usedSpace = 0L;
         List<SimpleSceneVo> voList = this.getSimpleSceneVo(cameraId);
         if(voList .size() <=0){
             return;
         }
+        Long totalSpace = cameraDetailService.getTotalSpaceByCameraId(cameraDetail);
+        Long usedSpace = 0L;
+
         //获取未被封存的场景容量
         List<Long> spaceList = voList.stream().filter(entity -> entity.getPayStatus() == 1).map(SimpleSceneVo::getSpace).collect(Collectors.toList());
-        for (Long aLong : spaceList) {
-            usedSpace += aLong;
+        if("SP".equals(cameraDetail.getUnit())){
+            usedSpace = (long) spaceList.size();
+        }
+        if("GB".equals(cameraDetail.getUnit())){
+            for (Long aLong : spaceList) {
+                usedSpace += aLong;
+            }
         }
         //计算时间倒序
         List<SimpleSceneVo> sceneVos = voList.stream().sorted(Comparator.comparing(SimpleSceneVo::getCreateTime).reversed()).collect(Collectors.toList());
@@ -272,7 +267,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<Long> lockedIds = new ArrayList<>();
         if(usedSpace > totalSpace){
             sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() ==1).collect(Collectors.toList());
-            Long space = getSceneLockedIds(lockedIds, sceneVos, usedSpace - totalSpace);
+            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);
             return;
@@ -281,17 +276,20 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(usedSpace < totalSpace){  //使用容量小于总容量,解封
             sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() !=1).collect(Collectors.toList());
             CollectionUtil.reverse(sceneVos);
-            Long space = getSceneUnLockedIds(lockedIds, sceneVos, totalSpace - usedSpace);
+            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);
         }
     }
 
-    private Long getSceneUnLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace){
+    private Long getSceneUnLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
         Long space = 0L;
         if (list != null && list.size() > 0){
             for (SimpleSceneVo scenePro : list){
                 Long sceneSpace  = scenePro.getSpace()== null ? 0 : scenePro.getSpace();
+                if("SP".equals(unit)){
+                    sceneSpace = 1L;
+                }
                 if (space + sceneSpace > beyondSpace){
                     continue;
                 }
@@ -302,11 +300,14 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         return space;
     }
 
-    private Long getSceneLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace){
+    private Long getSceneLockedIds(List<Long> lockedIds ,List<SimpleSceneVo> list,Long beyondSpace,String unit){
         Long space = 0L;
         if (list != null && list.size() > 0){
             for (SimpleSceneVo scenePro : list){
                 Long sceneSpace  = scenePro.getSpace()== null ? 0 : scenePro.getSpace();
+                if("SP".equals(unit)){
+                    sceneSpace = 1L;
+                }
                 space += sceneSpace;
                 lockedIds.add(scenePro.getId());
                 if (space > beyondSpace){
@@ -650,25 +651,26 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             throw new BusinessException(CameraConstant.FAILURE_CODE_6029, CameraConstant.FAILURE_MSG_6029);
         }
         UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
-        if(userIncrement == null){
+        if(userIncrement == null || userIncrement.getIsExpired() == 1){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3030, LoginConstant.FAILURE_MSG_3030);
         }
         IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
         if(incrementType == null){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3030, LoginConstant.FAILURE_MSG_3030);
         }
+        Long space = null;
+        if( scenePro != null ){
+            space = scenePro.getSpace();
+        }
+        if( scenePlus != null ){
+            ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
+            space = ext.getSpace();
+        }
 
-        if(incrementType.getCameraCapacity() != -1){
-            Long usedSpace = detailEntity.getUsedSpace();
-            if( scenePro != null && scenePro.getSpace() + usedSpace > incrementType.getCameraCapacity() * 1024 * 1024 * 1024L){
-                throw new BusinessException(CameraConstant.FAILURE_CODE_6008, CameraConstant.FAILURE_MSG_6008);
-            }
-            if( scenePlus != null ){
-                ScenePlusExt ext = scenePlusExtService.getByPlusId(scenePlus.getId());
-                if(ext.getSpace() + usedSpace > incrementType.getCameraCapacity() * 1024 * 1024 * 1024L){
-                    throw new BusinessException(CameraConstant.FAILURE_CODE_6008, CameraConstant.FAILURE_MSG_6008);
-                }
-            }
+        Boolean canSpace = cameraDetailService.checkSpace(detailEntity,incrementType,space);
+
+        if(!canSpace){
+            throw new BusinessException(CameraConstant.FAILURE_CODE_6008, CameraConstant.FAILURE_MSG_6008);
         }
         this.copySceneNoCheck(sceneNum);
 
@@ -803,15 +805,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 scenePro.setStatus(-2);
                 this.updateById(scenePro);
 
-                cameraDetailService.addUsedSpace(cameraDetail.getId(),scenePro.getSpace());
+                cameraDetailService.addUsedSpace(cameraDetail,scenePro.getSpace());
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePro.getUserId());
 
-                Long totalSpace = cameraDetail.getTotalSpace();
-                Long totalSpace1 = cameraDetailService.getTotalSpaceByCameraId(cameraDetail.getCameraId());
-                if(totalSpace1 != null ){
-                    totalSpace = totalSpace1;
-                }
-                if(totalSpace >0 && cameraDetail.getUsedSpace() + scenePro.getSpace()  > totalSpace ){
+                Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), scenePro.getSpace());
+                if(!checkSpace){
                     this.lockOrUnLockScenes(Arrays.asList(scenePro.getId()),-2);
                 }
 

+ 11 - 0
src/main/java/com/fdkankan/ucenter/vo/response/AppCameraSpace.java

@@ -0,0 +1,11 @@
+package com.fdkankan.ucenter.vo.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class AppCameraSpace {
+    private Long space;
+    private String unit;
+}

+ 2 - 0
src/main/java/com/fdkankan/ucenter/vo/response/CameraAppVo.java

@@ -84,4 +84,6 @@ public class CameraAppVo extends GoodsVo {
     private Long userIncrementId;
 
     private Integer isExpire = 1;
+
+    private String unit;
 }

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

@@ -10,6 +10,7 @@ public class CameraVo {
     private String snCode;          //相机snCode
     private String childName;
 
+    private String unit;
     private Long space;
     private String spaceStr;
     private String usedSpace;       //使用容量

+ 2 - 1
src/main/resources/mapper/ucenter/CameraMapper.xml

@@ -4,7 +4,7 @@
 
     <select id="pageList" resultType="com.fdkankan.ucenter.vo.response.CameraVo">
         select c.id,c.sn_code,c.child_name ,d.balance,d.type , d.total_space,d.used_space,
-        u.id as cooperationUser,u.user_name as cooperationUserName
+        u.id as cooperationUser,u.user_name as cooperationUserName,d.unit
         from t_camera c
         left join t_camera_detail d on c.id = d.camera_id
         left join t_user u on d.cooperation_user = u.id
@@ -29,6 +29,7 @@
     <select id="getCameraInfo" resultType="com.fdkankan.ucenter.vo.response.CameraAppVo">
          select * from  t_camera c
         left join t_camera_detail d on c.id = d.camera_id
+        left join t_goods g on d.goods_id = g.id
         left join t_user u on d.user_id = u.id
         where c.rec_status = 'A'
         and c.child_name = #{childName}