浏览代码

复制场景容量锁

lyhzzz 1 年之前
父节点
当前提交
8decf238eb

+ 12 - 0
src/main/java/com/fdkankan/ucenter/service/impl/ScenePlusServiceImpl.java

@@ -283,11 +283,23 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
                 this.updateById(scenePlus);
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePlus.getUserId());
 
+                String redisSceneLock = String.format(RedisKeyUtil.copySpaceLock,cameraDetail.getCameraId());
+                startTime = new Date().getTime();
+                startTime2 = new Date().getTime();
+                while(redisUtil.hasKey(redisSceneLock)){
+                    long waitTime = new Date().getTime();
+                    if(waitTime - startTime2 >1000){
+                        startTime2  = new Date().getTime();
+                        log.info("等待相机增加容量复制业务结束----:{},{}",(waitTime - startTime) /1000,cameraDetail.getCameraId());
+                    }
+                }
+                redisUtil.set(redisSceneLock,"1",60*60);
                 Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail.getCameraId(), plusExt.getSpace());
                 if(!checkSpace){
                     sceneProService.lockOrUnLockScenes(new ArrayList<>(),Arrays.asList(scenePlus.getNum()),-2,cameraType.getIsLaser());
                 }
                 cameraDetailService.addUsedSpace(cameraDetail,plusExt.getSpace());
+                redisUtil.del(redisSceneLock);
 
             }catch (Exception e){
                 log.error("复制场景失败-V4-sceneNum:{},error:{}",oldNum,e);

+ 0 - 18
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -687,14 +687,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
         CameraType cameraType = cameraTypeService.getByCameraType(detailEntity.getType());
 
-        String redisKey = String.format(RedisKeyUtil.copySpaceLock,detailEntity.getCameraId());
-        if(redisUtil.hasKey(redisKey)){
-            Long redisSpace = Long.parseLong(redisUtil.get(redisKey)) + (detailEntity.getUnit().equals("SP")? 1 : space);
-            detailEntity.setUsedSpace(detailEntity.getUsedSpace() +redisSpace);
-            redisUtil.set(redisKey,redisSpace.toString());
-        }else {
-            redisUtil.set(redisKey,detailEntity.getUsedSpace().toString());
-        }
 
         Boolean canSpace = cameraDetailService.checkSpace(detailEntity,incrementType,space,cameraType);
 
@@ -729,15 +721,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
         CameraType cameraType = cameraTypeService.getByCameraType(detailEntity.getType());
 
-        String redisKey = String.format(RedisKeyUtil.copySpaceLock,detailEntity.getCameraId());
-        if(redisUtil.hasKey(redisKey)){
-            Long redisSpace = Long.parseLong(redisUtil.get(redisKey)) + (detailEntity.getUnit().equals("SP")? 1 : space);
-            detailEntity.setUsedSpace(detailEntity.getUsedSpace() +redisSpace);
-            redisUtil.set(redisKey,redisSpace.toString());
-        }else {
-            redisUtil.set(redisKey,detailEntity.getUsedSpace().toString());
-        }
-
         Boolean canSpace = cameraDetailService.checkSpace(detailEntity,incrementType,space,cameraType);
 
         if(!canSpace){
@@ -873,7 +856,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 this.updateById(scenePro);
 
                 sceneCopyLogService.saveByNum(oldNum,newNum,scenePro.getUserId());
-
                 Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail, scenePro.getSpace(),cameraType);
                 if(!checkSpace){
                     this.lockOrUnLockScenes(Arrays.asList(scenePro.getNum()),new ArrayList<>(),-2,cameraType.getIsLaser());