lyhzzz 1 год назад
Родитель
Сommit
8598438705

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

@@ -16,4 +16,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:";
+    public static String copySpaceLock =  "ucenter:scene:copy:lock:%s";
 }

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

@@ -687,6 +687,15 @@ 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){
@@ -720,6 +729,15 @@ 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){