|
|
@@ -15,10 +15,7 @@ import com.fdkankan.manage.entity.Camera;
|
|
|
import com.fdkankan.manage.entity.CameraDetail;
|
|
|
import com.fdkankan.manage.entity.ScenePro;
|
|
|
import com.fdkankan.manage.mapper.ISceneProMapper;
|
|
|
-import com.fdkankan.manage.service.ICameraDetailService;
|
|
|
-import com.fdkankan.manage.service.ICameraService;
|
|
|
-import com.fdkankan.manage.service.ISceneProService;
|
|
|
-import com.fdkankan.manage.service.ISceneService;
|
|
|
+import com.fdkankan.manage.service.*;
|
|
|
import com.fdkankan.manage.util.SceneStatusUtil;
|
|
|
import com.fdkankan.manage.vo.request.SceneParam;
|
|
|
import com.fdkankan.manage.vo.response.GroupByCount;
|
|
|
@@ -51,6 +48,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
@Autowired
|
|
|
ISceneService sceneService;
|
|
|
@Autowired
|
|
|
+ ISceneCopyLogService copyLogService;
|
|
|
+ @Autowired
|
|
|
+ IUserIncrementService userIncrementService;
|
|
|
+ @Autowired
|
|
|
private UploadToOssUtil uploadToOssUtil;
|
|
|
|
|
|
private ScenePro getByNum(String num) {
|
|
|
@@ -95,25 +96,32 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void lockBySpace(CameraDetail cameraDetail,Long cameraId) {
|
|
|
+ public void lockOrUnLockBySpace(CameraDetail cameraDetail,Long cameraId,Integer payStatus) {
|
|
|
LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ Long count = 0L;
|
|
|
+ if(payStatus == 1){ //解封,判断用户权益,用户会员权益无限容量
|
|
|
+ count = userIncrementService.getValidCountByCameraId(cameraId);
|
|
|
+ wrapper.orderByAsc(ScenePro::getCreateTime);
|
|
|
+ }else {
|
|
|
+ wrapper.orderByDesc(ScenePro::getCreateTime);
|
|
|
+ }
|
|
|
wrapper.eq(ScenePro::getCameraId,cameraId)
|
|
|
- .eq(ScenePro::getPayStatus,1)
|
|
|
+ .eq(ScenePro::getPayStatus,payStatus)
|
|
|
.eq(ScenePro::getSceneScheme,4);
|
|
|
List<ScenePro> list = this.list(wrapper);
|
|
|
- Long beyondSpace = cameraDetail.getUsedSpace() - cameraDetail.getTotalSpace();
|
|
|
+ Long beyondSpace = Math.abs(cameraDetail.getUsedSpace() - cameraDetail.getTotalSpace());
|
|
|
Long accumulateSpace = 0L;
|
|
|
List<Long> lockedIds = new ArrayList<>();
|
|
|
if (list != null && list.size() > 0){
|
|
|
for (ScenePro scenePro : list){
|
|
|
accumulateSpace += scenePro.getSpace();
|
|
|
- if (accumulateSpace.compareTo(beyondSpace) > 0){
|
|
|
+ if (count ==0 && accumulateSpace.compareTo(beyondSpace) > 0){
|
|
|
break;
|
|
|
}
|
|
|
lockedIds.add(scenePro.getId());
|
|
|
}
|
|
|
}
|
|
|
- lockOrUnLockScenes(lockedIds,-2);
|
|
|
+ lockOrUnLockScenes(lockedIds,payStatus);
|
|
|
}
|
|
|
|
|
|
// payStatus 为 -2 封存,为 1 解封
|
|
|
@@ -196,6 +204,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
}
|
|
|
Long oldUseSpace = oldCameraDetail.getUsedSpace() - scenePro.getSpace() < 0 ? 0 : oldCameraDetail.getUsedSpace() - scenePro.getSpace();
|
|
|
oldCameraDetail.setUsedSpace(oldUseSpace);
|
|
|
+ Long subSpace = oldCameraDetail.getTotalSpace() - oldUseSpace;
|
|
|
+ if(subSpace >0){ //有剩余容量解封容量内场景
|
|
|
+ this.lockOrUnLockBySpace(oldCameraDetail,oldCameraDetail.getCameraId(),1);
|
|
|
+ }
|
|
|
+
|
|
|
cameraDetailService.updateById(oldCameraDetail);
|
|
|
|
|
|
cameraDetail.setUsedSpace(newUseSpace);
|
|
|
@@ -213,9 +226,12 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
if(sourceScene == null){
|
|
|
throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
|
|
|
}
|
|
|
+
|
|
|
+ Long count = copyLogService.getCountBySceneNum(num);
|
|
|
ScenePro targetScene = new ScenePro();
|
|
|
BeanUtils.copyProperties(sourceScene,targetScene);
|
|
|
targetScene.setId(null);
|
|
|
+ targetScene.setNum(sourceScene.getNum() +"-cp-"+ count + 1); //复制场景在原场景上添加标识
|
|
|
|
|
|
}
|
|
|
}
|