lyhzzz 2 years ago
parent
commit
47ca2b1900

+ 2 - 0
src/main/java/com/fdkankan/manage/service/IUserIncrementService.java

@@ -31,4 +31,6 @@ public interface IUserIncrementService extends IService<UserIncrement> {
     void unbindCamera(Long cameraId);
     void unbindCamera(Long cameraId);
 
 
     Long getValidCountByCameraId(Long cameraId);
     Long getValidCountByCameraId(Long cameraId);
+
+    UserIncrement getByCameraId(Long cameraId);
 }
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java

@@ -92,8 +92,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
 
     @Override
     @Override
     public void unbindCamera(Long cameraId) {
     public void unbindCamera(Long cameraId) {
-        cameraDetailService.unbindCamera(cameraId);         //取消相机用户关联
         userIncrementService.unbindCamera(cameraId);        //取消关联用户权益
         userIncrementService.unbindCamera(cameraId);        //取消关联用户权益
+        cameraDetailService.unbindCamera(cameraId);         //取消相机用户关联
         sceneService.unbindCamera(cameraId);                //取消关联场景
         sceneService.unbindCamera(cameraId);                //取消关联场景
         sceneProService.unbindCamera(cameraId);             //取消关联场景
         sceneProService.unbindCamera(cameraId);             //取消关联场景
         scenePlusService.unbindCamera(cameraId);             //取消关联场景
         scenePlusService.unbindCamera(cameraId);             //取消关联场景

+ 42 - 12
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -64,6 +64,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     @Autowired
     @Autowired
     IUserIncrementService userIncrementService;
     IUserIncrementService userIncrementService;
     @Autowired
     @Autowired
+    IIncrementTypeService incrementTypeService;
+    @Autowired
     ISceneProEditService sceneProEditService;
     ISceneProEditService sceneProEditService;
     @Autowired
     @Autowired
     private MangerUploadToOssUtil mangeUploadToOssUtil;
     private MangerUploadToOssUtil mangeUploadToOssUtil;
@@ -133,14 +135,31 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId, Integer payStatus) {
     public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId, Integer payStatus) {
         LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<ScenePlus> plusWr = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<ScenePlus> plusWr = new LambdaQueryWrapper<>();
-        Long count = 0L;
+        Long totalSpace = cameraDetail.getTotalSpace();
+        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
+        if(userIncrement!=null){
+            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+            if(incrementType!=null){
+                if(incrementType.getCameraCapacity() == -1){
+                    totalSpace   = -1L;
+                }else {
+                    totalSpace = incrementType.getCameraCapacity() * 1024 * 1024L;
+                }
+            }
+        }
+
+        log.info("lockOrUnLockBySpace---cameraId:{},payStatus:{},totalSpace:{},useSpace{}",
+                cameraId,payStatus,totalSpace,cameraDetail.getUsedSpace());
         if(payStatus == 1){         //解封,判断用户权益,用户会员权益无限容量
         if(payStatus == 1){         //解封,判断用户权益,用户会员权益无限容量
-            count = userIncrementService.getValidCountByCameraId(cameraId);
             wrapper.orderByAsc(ScenePro::getCreateTime);
             wrapper.orderByAsc(ScenePro::getCreateTime);
             plusWr.orderByAsc(ScenePlus::getCreateTime);
             plusWr.orderByAsc(ScenePlus::getCreateTime);
             wrapper.eq(ScenePro::getPayStatus,-2);
             wrapper.eq(ScenePro::getPayStatus,-2);
             plusWr.eq(ScenePlus::getPayStatus,-2);
             plusWr.eq(ScenePlus::getPayStatus,-2);
         }else {
         }else {
+            if (totalSpace >= cameraDetail.getUsedSpace()) {
+                // 总容量大于已使用容量,不予封存
+                return;
+            }
             wrapper.orderByDesc(ScenePro::getCreateTime);
             wrapper.orderByDesc(ScenePro::getCreateTime);
             plusWr.orderByDesc(ScenePlus::getCreateTime);
             plusWr.orderByDesc(ScenePlus::getCreateTime);
             wrapper.eq(ScenePro::getPayStatus,1);
             wrapper.eq(ScenePro::getPayStatus,1);
@@ -155,17 +174,17 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         List<ScenePro> list = this.list(wrapper);
         List<ScenePro> list = this.list(wrapper);
         List<ScenePlus> plusList = scenePlusService.list(plusWr);
         List<ScenePlus> plusList = scenePlusService.list(plusWr);
 
 
-        Long beyondSpace = Math.abs(cameraDetail.getUsedSpace() - cameraDetail.getTotalSpace());
+        Long beyondSpace = Math.abs(cameraDetail.getUsedSpace() - totalSpace);
         Long accumulateSpace = 0L;
         Long accumulateSpace = 0L;
         List<Long> lockedIds = new ArrayList<>();
         List<Long> lockedIds = new ArrayList<>();
         if(payStatus == 1){
         if(payStatus == 1){
-            Long doSpace = getScenePlusLockedIds(lockedIds, plusList, count, beyondSpace, accumulateSpace);
+            Long doSpace = getScenePlusLockedIds(lockedIds, plusList, totalSpace, beyondSpace, accumulateSpace);
             beyondSpace -= doSpace;
             beyondSpace -= doSpace;
-            getSceneLockedIds(lockedIds,list,count,beyondSpace,accumulateSpace);
+            getSceneLockedIds(lockedIds,list,totalSpace,beyondSpace,accumulateSpace);
         }else {
         }else {
-            Long doSpace = getSceneLockedIds(lockedIds, list, count, beyondSpace, accumulateSpace);
+            Long doSpace = getSceneLockedIds(lockedIds, list, totalSpace, beyondSpace, accumulateSpace);
             beyondSpace -= doSpace;
             beyondSpace -= doSpace;
-            getScenePlusLockedIds(lockedIds,plusList,count,beyondSpace,accumulateSpace);
+            getScenePlusLockedIds(lockedIds,plusList,totalSpace,beyondSpace,accumulateSpace);
         }
         }
 
 
         lockOrUnLockScenes(lockedIds,payStatus);
         lockOrUnLockScenes(lockedIds,payStatus);
@@ -175,7 +194,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if (list != null && list.size() > 0){
         if (list != null && list.size() > 0){
             for (ScenePro scenePro : list){
             for (ScenePro scenePro : list){
                 accumulateSpace += scenePro.getSpace();
                 accumulateSpace += scenePro.getSpace();
-                if (count ==0 && accumulateSpace.compareTo(beyondSpace) > 0){
+                if (count ==-1 && accumulateSpace.compareTo(beyondSpace) > 0){
                     return  accumulateSpace - scenePro.getSpace();
                     return  accumulateSpace - scenePro.getSpace();
                 }
                 }
                 lockedIds.add(scenePro.getId());
                 lockedIds.add(scenePro.getId());
@@ -190,7 +209,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             for (ScenePlus scenePlus : list){
             for (ScenePlus scenePlus : list){
                 ScenePlusExt scenePlusExt = byPlusIds.get(scenePlus.getId());
                 ScenePlusExt scenePlusExt = byPlusIds.get(scenePlus.getId());
                 accumulateSpace += scenePlusExt.getSpace();
                 accumulateSpace += scenePlusExt.getSpace();
-                if (count ==0 && accumulateSpace.compareTo(beyondSpace) > 0){
+                if (count ==-1 && accumulateSpace.compareTo(beyondSpace) > 0){
                     return  accumulateSpace - scenePlusExt.getSpace();
                     return  accumulateSpace - scenePlusExt.getSpace();
                 }
                 }
                 lockedIds.add(scenePlus.getId());
                 lockedIds.add(scenePlus.getId());
@@ -199,7 +218,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         return accumulateSpace;
         return accumulateSpace;
     }
     }
 
 
-
     // payStatus 为 -2 封存,为 1 解封
     // payStatus 为 -2 封存,为 1 解封
     private void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus) {
     private void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus) {
         if (lockedIds == null || lockedIds.size() == 0){
         if (lockedIds == null || lockedIds.size() == 0){
@@ -322,10 +340,21 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
         }
         space = space == null ? 0 :space;
         space = space == null ? 0 :space;
         Long newUseSpace = space + cameraDetail.getUsedSpace();
         Long newUseSpace = space + cameraDetail.getUsedSpace();
-        Long count = userIncrementService.getValidCountByCameraId(camera.getId());
 
 
+        Long totalSpace = cameraDetail.getTotalSpace();
+        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
+        if(userIncrement!=null){
+            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+            if(incrementType!=null){
+                if(incrementType.getCameraCapacity() == -1){
+                    totalSpace   = -1L;
+                }else {
+                    totalSpace = incrementType.getCameraCapacity() * 1024 * 1024L;
+                }
+            }
+        }
         //深时场景无限容量
         //深时场景无限容量
-        if(cameraDetail.getType() != 10 &&  count<=0 && newUseSpace  > cameraDetail.getTotalSpace()){
+        if(cameraDetail.getType() != 10 && totalSpace !=-1 &&  newUseSpace  > totalSpace){
             throw new BusinessException(ResultCode.CAMERA_SPACE_ERROR);
             throw new BusinessException(ResultCode.CAMERA_SPACE_ERROR);
         }
         }
 
 
@@ -344,6 +373,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         Long oldUseSpace = oldCameraDetail.getUsedSpace() - space < 0 ? 0 : oldCameraDetail.getUsedSpace() - space;
         Long oldUseSpace = oldCameraDetail.getUsedSpace() - space < 0 ? 0 : oldCameraDetail.getUsedSpace() - space;
         oldCameraDetail.setUsedSpace(oldUseSpace);
         oldCameraDetail.setUsedSpace(oldUseSpace);
         Long subSpace =  oldCameraDetail.getTotalSpace() - oldUseSpace;
         Long subSpace =  oldCameraDetail.getTotalSpace() - oldUseSpace;
+
         if(cameraDetail.getType() != 10 && subSpace >0){    //有剩余容量解封容量内场景
         if(cameraDetail.getType() != 10 && subSpace >0){    //有剩余容量解封容量内场景
             this.lockOrUnLockBySpace(oldCameraDetail,oldCameraDetail.getCameraId(),1);
             this.lockOrUnLockBySpace(oldCameraDetail,oldCameraDetail.getCameraId(),1);
         }
         }

+ 12 - 0
src/main/java/com/fdkankan/manage/service/impl/UserIncrementServiceImpl.java

@@ -142,6 +142,7 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
                 throw new BusinessException(ResultCode.USER_NOT_EXIST);
                 throw new BusinessException(ResultCode.USER_NOT_EXIST);
             }
             }
             user.setDownloadNumTotal(user.getDownloadNumTotal() + param.getCount() * incrementType.getDownloadNum());
             user.setDownloadNumTotal(user.getDownloadNumTotal() + param.getCount() * incrementType.getDownloadNum());
+            userService.updateById(user);
         }
         }
     }
     }
 
 
@@ -160,4 +161,15 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         wrapper.gt(UserIncrement::getIncrementEndTime, DateUtil.date2String(new Date(),DateUtil.DEFAULT_DATE_FORMAT));
         wrapper.gt(UserIncrement::getIncrementEndTime, DateUtil.date2String(new Date(),DateUtil.DEFAULT_DATE_FORMAT));
         return this.count(wrapper);
         return this.count(wrapper);
     }
     }
+
+    @Override
+    public UserIncrement getByCameraId(Long cameraId) {
+        LambdaQueryWrapper<UserIncrement> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(UserIncrement::getCameraId,cameraId);
+        List<UserIncrement> list = this.list(wrapper);
+        if(list !=null && list.size() >0){
+            return list.get(0);
+        }
+        return null;
+    }
 }
 }