ExceedSpaceSceneServiceImpl.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.fdkankan.contro.service.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.fdkankan.common.constant.*;
  5. import com.fdkankan.common.exception.BusinessException;
  6. import com.fdkankan.contro.entity.*;
  7. import com.fdkankan.contro.mapper.IExceedSpaceSceneMapper;
  8. import com.fdkankan.contro.service.*;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  11. import com.fdkankan.model.constants.ConstantFilePath;
  12. import com.fdkankan.model.constants.UploadFilePath;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.io.IOException;
  16. import java.util.Objects;
  17. /**
  18. * <p>
  19. * 超出容量场景码表 服务实现类
  20. * </p>
  21. *
  22. * @author
  23. * @since 2023-06-29
  24. */
  25. @Service
  26. public class ExceedSpaceSceneServiceImpl extends ServiceImpl<IExceedSpaceSceneMapper, ExceedSpaceScene> implements IExceedSpaceSceneService {
  27. @Autowired
  28. private IScenePlusService scenePlusService;
  29. @Autowired
  30. private ISceneProService sceneProService;
  31. @Autowired
  32. private IUserIncrementService userIncrementService;
  33. @Autowired
  34. private IIncrementTypeService incrementTypeService;
  35. @Autowired
  36. private ICommonService commonService;
  37. @Autowired
  38. private FYunFileServiceInterface fYunFileService;
  39. @Autowired
  40. private ISceneCleanOrigService sceneCleanOrigService;
  41. @Override
  42. public boolean cehckExceedSpace(String num, CameraDetail cameraDetail, String snCode, String fileId, String unicode) {
  43. if(!cameraDetail.getUnit().equals(SpaceType.SP.code())){
  44. return false;
  45. }
  46. boolean exceedSpace = this.isExceedSpace(num, cameraDetail);
  47. if(exceedSpace){
  48. //写入超出容量场景表
  49. ExceedSpaceScene scene = new ExceedSpaceScene();
  50. scene.setNum(num);
  51. scene.setUserId(cameraDetail.getUserId());
  52. scene.setCameraId(cameraDetail.getCameraId());
  53. scene.setFileId(fileId);
  54. scene.setUnicode(unicode);
  55. this.save(scene);
  56. //删除原始资源
  57. if(fileId.length() > 1 && unicode.length() > 1){
  58. String homePath = ConstantFilePath.OSS_PREFIX.concat(snCode).concat("/").concat(fileId).concat("/").concat(unicode);
  59. fYunFileService.deleteFolder(homePath);
  60. }
  61. //记录删除原始资源记录
  62. SceneCleanOrig sceneCleanOrig = new SceneCleanOrig();
  63. sceneCleanOrig.setNum(num);
  64. sceneCleanOrig.setType(4);
  65. sceneCleanOrig.setState(CommonSuccessStatus.SUCCESS.code());
  66. sceneCleanOrigService.save(sceneCleanOrig);
  67. //上传计算失败状态文件
  68. //上传app状态文件
  69. commonService.uploadStatusJson(num,SceneStatus.FAILD.code(),
  70. null, null, PayStatus.NOT_PAY.code(),
  71. String.format(UploadFilePath.DATA_VIEW_PATH, num));
  72. }
  73. return exceedSpace;
  74. }
  75. @Override
  76. public boolean isExceedSpace(String num, CameraDetail cameraDetail) {
  77. //查询权益统计容量的方式
  78. Long limit = commonService.getSpaceLimit(cameraDetail);
  79. if(limit == -1){
  80. return false;
  81. }
  82. // TODO: 2023/6/30 现阶段只有按个数统计容量的方式再需要做上传拦截,所以这里暂时只做了统计个数统计
  83. //统计场景个数
  84. long v4Count = scenePlusService.count(
  85. new LambdaQueryWrapper<ScenePlus>()
  86. .eq(ScenePlus::getCameraId, cameraDetail.getCameraId())
  87. .in(ScenePlus::getSceneStatus, SceneStatus.wait.code(), SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
  88. long V3count = sceneProService.count(new LambdaQueryWrapper<ScenePro>()
  89. .eq(ScenePro::getCameraId, cameraDetail.getCameraId())
  90. .in(ScenePro::getStatus, SceneStatus.wait.code(), SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
  91. if(v4Count + V3count < limit){
  92. return false;
  93. }
  94. return true;
  95. }
  96. @Override
  97. public ExceedSpaceScene getByFileIdAndUnicode(long cameraId, String fileId, String unicode) {
  98. return this.getOne(new LambdaQueryWrapper<ExceedSpaceScene>()
  99. .eq(ExceedSpaceScene::getCameraId, cameraId)
  100. .eq(ExceedSpaceScene::getFileId, fileId)
  101. .eq(ExceedSpaceScene::getUnicode, unicode));
  102. }
  103. @Override
  104. public void repeal(long cameraId, String fileId, String unicode) throws IOException {
  105. ExceedSpaceScene scene = this.getByFileIdAndUnicode(cameraId, fileId, unicode);
  106. if(Objects.isNull(scene)){
  107. return;
  108. }
  109. this.removeById(scene);
  110. //删除status.json
  111. String statusJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, scene.getNum()).concat("status.json");
  112. fYunFileService.deleteFile(statusJsonPath);
  113. }
  114. }