Explorar el Código

场景支付状态判定由cameradetail表中的usedSpace改为统计场景表

dsx hace 2 años
padre
commit
5c0a510e48

+ 1 - 1
src/main/java/com/fdkankan/contro/service/ICameraDetailService.java

@@ -17,6 +17,6 @@ public interface ICameraDetailService extends IService<CameraDetail> {
 
     CameraDetail getByCameraId(Long valueOf);
 
-    CameraDetail updateCameraDetailByCameraIdAndSpace(Long cameraId, Long space);
+    void updateCameraDetailByCameraIdAndSpace(Long cameraId, Long space);
 
 }

+ 2 - 0
src/main/java/com/fdkankan/contro/service/ICameraService.java

@@ -16,4 +16,6 @@ public interface ICameraService extends IService<Camera> {
     Camera getByChildName(String childName);
 
     Camera getBySnCode(String snCode);
+
+    Long getUsedSpace(Long cameraId, String spaceTypeStr);
 }

+ 3 - 0
src/main/java/com/fdkankan/contro/service/IScenePlusExtService.java

@@ -3,6 +3,8 @@ package com.fdkankan.contro.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.contro.entity.ScenePlusExt;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -16,4 +18,5 @@ public interface IScenePlusExtService extends IService<ScenePlusExt> {
     ScenePlusExt getScenePlusExtByPlusId(long plusId);
 
     ScenePlusExt getScenePlusExtByPath(String path);
+
 }

+ 1 - 0
src/main/java/com/fdkankan/contro/service/IScenePlusService.java

@@ -23,4 +23,5 @@ public interface IScenePlusService extends IService<ScenePlus> {
 
     ScenePlus getByFileId(String fileId);
 
+    Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr);
 }

+ 4 - 0
src/main/java/com/fdkankan/contro/service/ISceneProService.java

@@ -15,4 +15,8 @@ public interface ISceneProService extends IService<ScenePro> {
 
     ScenePro getByNum(String num);
 
+    Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr);
+
+
+
 }

+ 2 - 3
src/main/java/com/fdkankan/contro/service/impl/CameraDetailServiceImpl.java

@@ -33,16 +33,15 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
 
     @Override
-    public CameraDetail updateCameraDetailByCameraIdAndSpace(Long cameraId, Long space) {
+    public void updateCameraDetailByCameraIdAndSpace(Long cameraId, Long space) {
         CameraDetail cameraDetail = this.getByCameraId(cameraId);
         if(Objects.isNull(cameraDetail)){
-            return null;
+            return;
         }
         this.update(new LambdaUpdateWrapper<CameraDetail>()
                 .setSql("used_space = used_space + " + space)
                 .eq(CameraDetail::getId, cameraDetail.getId()));
 
-        return this.getByCameraId(cameraId);
     }
 
 }

+ 14 - 0
src/main/java/com/fdkankan/contro/service/impl/CameraServiceImpl.java

@@ -2,9 +2,13 @@ package com.fdkankan.contro.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.SpaceType;
 import com.fdkankan.contro.entity.Camera;
 import com.fdkankan.contro.mapper.ICameraMapper;
 import com.fdkankan.contro.service.ICameraService;
+import com.fdkankan.contro.service.IScenePlusService;
+import com.fdkankan.contro.service.ISceneProService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -18,6 +22,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implements ICameraService {
 
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneProService sceneProService;
+
     @Override
     public Camera getByChildName(String childName){
         return this.getOne(new LambdaQueryWrapper<Camera>().eq(Camera::getChildName,childName));
@@ -29,4 +38,9 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         return this.getOne(new LambdaQueryWrapper<Camera>().eq(Camera::getSnCode,snCode));
     }
 
+    @Override
+    public Long getUsedSpace(Long cameraId, String spaceTypeStr) {
+        return sceneProService.sumUsedSpaceByCameraId(cameraId, spaceTypeStr)
+                + scenePlusService.sumUsedSpaceByCameraId(cameraId, spaceTypeStr);
+    }
 }

+ 8 - 3
src/main/java/com/fdkankan/contro/service/impl/CommonServiceImpl.java

@@ -66,6 +66,8 @@ public class CommonServiceImpl implements ICommonService {
     private IUserIncrementService userIncrementService;
     @Autowired
     private IIncrementTypeService incrementTypeService;
+    @Autowired
+    private ICameraService cameraService;
 
 
     @Override
@@ -263,14 +265,17 @@ public class CommonServiceImpl implements ICommonService {
         }
 
         //更新相机使用用量
-        cameraDetail = cameraDetailService.updateCameraDetailByCameraIdAndSpace(cameraId, space);
+        cameraDetailService.updateCameraDetailByCameraIdAndSpace(cameraId, space);
+
         if(limit == -1){
             return PayStatus.PAY.code();
         }
-        Long usedSpace = cameraDetail.getUsedSpace();
-        if(usedSpace > limit){
+
+        Long usedSpace = cameraService.getUsedSpace(cameraId, unit);
+        if(usedSpace + space > limit){
             return PayStatus.NO_CAPACITY.code();
         }
+
         return PayStatus.PAY.code();
     }
 

+ 2 - 0
src/main/java/com/fdkankan/contro/service/impl/ScenePlusExtServiceImpl.java

@@ -7,6 +7,8 @@ import com.fdkankan.contro.mapper.IScenePlusExtMapper;
 import com.fdkankan.contro.service.IScenePlusExtService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类

+ 29 - 0
src/main/java/com/fdkankan/contro/service/impl/ScenePlusServiceImpl.java

@@ -1,14 +1,17 @@
 package com.fdkankan.contro.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.PayStatus;
 import com.fdkankan.common.constant.SceneStatus;
 import com.fdkankan.common.constant.SpaceType;
 import com.fdkankan.contro.entity.CameraDetail;
 import com.fdkankan.contro.entity.ScenePlus;
 import com.fdkankan.contro.entity.ScenePlusExt;
+import com.fdkankan.contro.entity.ScenePro;
 import com.fdkankan.contro.mapper.IScenePlusMapper;
 import com.fdkankan.contro.service.ICameraDetailService;
 import com.fdkankan.contro.service.IScenePlusExtService;
@@ -22,6 +25,7 @@ import org.springframework.util.ObjectUtils;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -109,4 +113,29 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         return null;
     }
 
+    @Override
+    public Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr) {
+
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<ScenePlus>()
+                .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code())
+                .eq(ScenePlus::getPayStatus, PayStatus.PAY.code());
+
+        SpaceType spaceType = SpaceType.get(spaceTypeStr);
+        switch (spaceType){
+            case GB:
+                List<ScenePlus> list = this.list(wrapper);
+                if(CollUtil.isEmpty(list)){
+                    return 0L;
+                }
+                List<Long> plusIdList = list.stream().map(scenePlus -> scenePlus.getId()).collect(Collectors.toList());
+                List<ScenePlusExt> scenePlusExtList = scenePlusExtService.list(new LambdaQueryWrapper<ScenePlusExt>().in(ScenePlusExt::getPlusId, plusIdList));
+                return scenePlusExtList.stream().mapToLong(pro -> {
+                    Long space = pro.getSpace();
+                    return Objects.isNull(space) ? 0L : space;
+                }).sum();
+            case SP:
+                return this.count(wrapper);
+        }
+        return null;
+    }
 }

+ 30 - 0
src/main/java/com/fdkankan/contro/service/impl/SceneProServiceImpl.java

@@ -1,13 +1,20 @@
 package com.fdkankan.contro.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.PayStatus;
+import com.fdkankan.common.constant.SceneStatus;
+import com.fdkankan.common.constant.SpaceType;
 import com.fdkankan.contro.entity.ScenePro;
 import com.fdkankan.contro.mapper.ISceneProMapper;
 import com.fdkankan.contro.service.ISceneProService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Objects;
+
 /**
  * <p>
  * pro场景表 服务实现类
@@ -24,4 +31,27 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public ScenePro getByNum(String num) {
         return this.getOne(new LambdaQueryWrapper<ScenePro>().eq(ScenePro::getNum, num));
     }
+
+    @Override
+    public Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr) {
+        LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<ScenePro>().select(ScenePro::getSpace)
+                .in(ScenePro::getStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code())
+                .eq(ScenePro::getPayStatus, PayStatus.PAY.code());
+
+        SpaceType spaceType = SpaceType.get(spaceTypeStr);
+        switch (spaceType){
+            case GB:
+                List<ScenePro> list = this.list(wrapper);
+                if(CollUtil.isEmpty(list)){
+                    return 0L;
+                }
+                return list.stream().mapToLong(pro -> {
+                    Long space = pro.getSpace();
+                    return Objects.isNull(space) ? 0L : space;
+                }).sum();
+            case SP:
+                return this.count(wrapper);
+        }
+        return 0L;
+    }
 }