ExceedSpaceSceneServiceImpl.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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. // TODO: 2023/7/11 由于八目相机有bug,第一次请求返回成功后,还是会请求第二次,第二次请求检测data.fdage不存在会导致请求失败,所以这个版本先不删除原始资源
  57. //删除原始资源
  58. // if(fileId.length() > 1 && unicode.length() > 1){
  59. // String homePath = ConstantFilePath.OSS_PREFIX.concat(snCode).concat("/").concat(fileId).concat("/").concat(unicode);
  60. // fYunFileService.deleteFolder(homePath);
  61. // }
  62. //记录删除原始资源记录
  63. SceneCleanOrig sceneCleanOrig = new SceneCleanOrig();
  64. sceneCleanOrig.setNum(num);
  65. sceneCleanOrig.setType(4);
  66. sceneCleanOrig.setState(CommonSuccessStatus.SUCCESS.code());
  67. sceneCleanOrigService.save(sceneCleanOrig);
  68. //上传计算失败状态文件
  69. //上传app状态文件
  70. commonService.uploadStatusJson(num,SceneStatus.FAILD.code(),
  71. null, null, PayStatus.NOT_PAY.code(),
  72. String.format(UploadFilePath.DATA_VIEW_PATH, num));
  73. }
  74. return exceedSpace;
  75. }
  76. @Override
  77. public boolean isExceedSpace(String num, CameraDetail cameraDetail) {
  78. //查询权益统计容量的方式
  79. Long limit = commonService.getSpaceLimit(cameraDetail);
  80. if(limit == -1){
  81. return false;
  82. }
  83. // TODO: 2023/6/30 现阶段只有按个数统计容量的方式再需要做上传拦截,所以这里暂时只做了统计个数统计
  84. //统计场景个数
  85. long v4Count = scenePlusService.count(
  86. new LambdaQueryWrapper<ScenePlus>()
  87. .eq(ScenePlus::getCameraId, cameraDetail.getCameraId())
  88. .in(ScenePlus::getSceneStatus, SceneStatus.wait.code(), SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code()));
  89. long V3count = sceneProService.count(new LambdaQueryWrapper<ScenePro>()
  90. .eq(ScenePro::getCameraId, cameraDetail.getCameraId())
  91. .in(ScenePro::getStatus, SceneStatus.wait.code(), SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code())
  92. .eq(ScenePro::getIsUpgrade, CommonStatus.NO.code()));
  93. if(v4Count + V3count < limit){
  94. return false;
  95. }
  96. return true;
  97. }
  98. @Override
  99. public ExceedSpaceScene getByFileIdAndUnicode(long cameraId, String fileId, String unicode) {
  100. return this.getOne(new LambdaQueryWrapper<ExceedSpaceScene>()
  101. .eq(ExceedSpaceScene::getCameraId, cameraId)
  102. .eq(ExceedSpaceScene::getFileId, fileId)
  103. .eq(ExceedSpaceScene::getUnicode, unicode));
  104. }
  105. @Override
  106. public void repeal(long cameraId, String fileId, String unicode) throws IOException {
  107. ExceedSpaceScene scene = this.getByFileIdAndUnicode(cameraId, fileId, unicode);
  108. if(Objects.isNull(scene)){
  109. return;
  110. }
  111. this.removeById(scene);
  112. //删除status.json
  113. String statusJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, scene.getNum()).concat("status.json");
  114. fYunFileService.deleteFile(statusJsonPath);
  115. }
  116. }