Browse Source

场景封存或者解封

lyhzzz 3 năm trước cách đây
mục cha
commit
498f9161ad
18 tập tin đã thay đổi với 244 bổ sung154 xóa
  1. 6 0
      4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java
  2. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraSpaceMapper.java
  3. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraSpaceService.java
  4. 6 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ManagerCameraService.java
  5. 5 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraSpaceServiceImpl.java
  6. 4 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IOrderMapper.java
  7. 77 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/Schedule.java
  8. 78 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/TaskService.java
  9. 7 6
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserIncrementServiceImpl.java
  10. 0 57
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceMonthOrderImpl.java
  11. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceOrderImpl.java
  12. 0 59
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceYearOrderImpl.java
  13. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/ExpansionOrderImpl.java
  14. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/IncrementOrderImpl.java
  15. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/ResponseOrder.java
  16. 13 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java
  17. 5 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProAppService.java
  18. 27 10
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProAppServiceImpl.java

+ 6 - 0
4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java

@@ -32,4 +32,10 @@ public interface SceneUserSceneClient {
     @PostMapping("/getSceneViewInfo")
     ResultData<SceneInfoDTO> getSceneViewInfo(@RequestParam(value = "num") String num) throws Exception;
 
+    @PostMapping("/lockBeyondSpaceScenes")
+    ResultData lockBeyondSpaceScenes(Long usedSpace, Long totalSpace, Long cameraId);
+
+    @PostMapping("/unlockBeyondSpaceScenes")
+    ResultData unlockBeyondSpaceScenes(Long usedSpace, Long cameraId);
+
 }

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraSpaceMapper.java

@@ -24,4 +24,7 @@ public interface ICameraSpaceMapper extends BaseMapper<CameraSpace> {
             "LEFT JOIN t_camera c on s.camera_id = c.id where s.tb_status = 0 and " +
             "s.space_type = 2 and s.camera_id = #{cameraId} and TIMESTAMPDIFF(MINUTE, NOW(), s.space_end_time) > -1 ORDER BY s.space_end_time ")
     List<ResponseCameraSpace> getVoListByCameraId(@Param("cameraId")Long cameraId);
+
+    @Select(" SELECT * FROM t_camera_space WHERE (DATEDIFF(space_end_time,NOW())=-1) AND ((space_type=1) or (space_type=2)) AND tb_status = 0 ")
+    List<CameraSpace> findExpiredList();
 }

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraSpaceService.java

@@ -26,4 +26,6 @@ public interface ICameraSpaceService extends IService<CameraSpace> {
     void removeByCameraId(Long cameraId);
 
     CameraSpace saveByExpansionOrder(ExpansionOrder expansionOrder);
+
+    List<CameraSpace> findExpiredList();
 }

+ 6 - 4
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ManagerCameraService.java

@@ -31,6 +31,7 @@ import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseCamera;
 import com.fdkankan.platform.user.vo.ResponseCameraSpace;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -70,6 +71,9 @@ public class ManagerCameraService {
     private IManagerService managerService;
     @Autowired
     private IAgentFrameworkService agentFrameworkService;
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
+
     @Resource
     private RedisUtil redisUtil;
     @Value("${upload.type}")
@@ -351,8 +355,7 @@ public class ManagerCameraService {
         detailEntity.setTotalSpace(cameraSpaceEntity.getSpace());
         cameraDetailService.updateById(detailEntity);
 
-        //sceneService.unlockBeyondSpaceScenes(cameraSpaceEntity.getSpace(), cameraSpaceEntity.getUserId(), param.getCameraId());
-        //todo unlockBeyondSpaceScenes
+        sceneUserSceneClient.unlockBeyondSpaceScenes(cameraSpaceEntity.getSpace(),  param.getCameraId());
         return ServerCode.SUCCESS.message();
     }
 
@@ -371,8 +374,7 @@ public class ManagerCameraService {
         }
         detailEntity.setTotalSpace(Long.parseLong(Constant.EXPANSION_SPACE_VALUE_1G) * 10);
         cameraDetailService.updateById(detailEntity);
-        //sceneService.lockBeyondSpaceScenes(detailEntity.getUsedSpace(), detailEntity.getTotalSpace(), detailEntity.getUserId(), detailEntity.getCameraId());
-        //todo lockBeyondSpaceScenes
+        sceneUserSceneClient.lockBeyondSpaceScenes(detailEntity.getUsedSpace(), detailEntity.getTotalSpace(), detailEntity.getCameraId());
         return ServerCode.SUCCESS.message();
 
     }

+ 5 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraSpaceServiceImpl.java

@@ -85,4 +85,9 @@ public class CameraSpaceServiceImpl extends ServiceImpl<ICameraSpaceMapper, Came
         this.save(cameraSpaceEntity);
         return cameraSpaceEntity;
     }
+
+    @Override
+    public List<CameraSpace> findExpiredList() {
+        return cameraSpaceMapper.findExpiredList();
+    }
 }

+ 4 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IOrderMapper.java

@@ -8,6 +8,7 @@ import com.fdkankan.platform.user.vo.ResponseOrder;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -52,4 +53,7 @@ public interface IOrderMapper extends BaseMapper<Order> {
 
 
     Page<ResponseOrder> getListByParam(Page<ResponseOrder> page, @Param("param") RequestOrder param);
+
+    @Update(" UPDATE t_order Left JOIN t_trade_log on t_order.order_sn = t_trade_log.order_sn set t_order.shipping_status = 'received', t_order.finish_time = NOW() WHERE (DATE_SUB(CURDATE(), INTERVAL 15 DAY) < date(t_trade_log.trade_time)) and (t_order.shipping_status = 'shipped') ")
+    void autoUpdateOrderStatus();
 }

+ 77 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/Schedule.java

@@ -4,6 +4,7 @@ import com.fdkankan.common.constant.ConstantFilePath;
 import org.apache.tools.ant.util.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -17,6 +18,9 @@ public class Schedule {
     @Value("${environment}")
     private String environment;
 
+    @Autowired
+    private TaskService taskService;
+
 
     @Scheduled(cron = "0 0 4 * * ?")
     public void job1() {
@@ -54,4 +58,77 @@ public class Schedule {
             }
         }
     }
+
+    @Scheduled(cron = "0 0 4 * * ?")
+    public void job2() {
+        if("hq".equals(environment)){
+            return;
+        }
+        log.warn("每天04:00开始执行定时任务:双目相机扣费");
+        // 扣费
+        try {
+            taskService.autoDedu();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
+    @Scheduled(cron = "0 0 4 * * ?")
+    public void job3() {
+        if("hq".equals(environment)){
+            return;
+        }
+        log.warn("每天04:00开始执行定时任务:更新收货状态");
+        try {
+            //更新收货状态,发货后15天,默认用户已经收到货物
+            taskService.autoUpdateOrderStatus();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
+    @Scheduled(cron = "0 0 4 * * ?")
+    public void job5() {
+        if("hq".equals(environment)){
+            return;
+        }
+        log.warn("每天04:00开始执行定时任务:相机容量到期检查(扩容、商业)");
+        try {
+            taskService.maturitySpace();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void job10() {
+        if("hq".equals(environment)){
+            return;
+        }
+        log.warn("每天00:00开始执行定时任务:增值权益到期检查");
+        try {
+            taskService.incrementExpire();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
+    @Scheduled(cron = "0 0 12 * * ?")
+    public void job11() {
+        if("hq".equals(environment)){
+            return;
+        }
+        log.warn("每天12:00开始执行定时任务:短信提醒增值权益准备到期");
+        try {
+            taskService.incrementExpireSendSms();
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
 }

+ 78 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/TaskService.java

@@ -0,0 +1,78 @@
+package com.fdkankan.platform.task;
+
+import com.fdkankan.common.constant.Constant;
+import com.fdkankan.platform.goods.entity.CameraDetail;
+import com.fdkankan.platform.goods.entity.CameraSpace;
+import com.fdkankan.platform.goods.service.ICameraDetailService;
+import com.fdkankan.platform.goods.service.ICameraSpaceService;
+import com.fdkankan.platform.order.mapper.IOrderMapper;
+import com.fdkankan.platform.user.entity.UserIncrement;
+import com.fdkankan.platform.user.service.IUserIncrementService;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class TaskService {
+
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
+
+    @Autowired
+    private ICameraSpaceService cameraSpaceService;
+
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+
+    @Autowired
+    private IUserIncrementService userIncrementService;
+
+    @Resource
+    private IOrderMapper orderMapper;
+
+    public void autoDedu() {
+
+    }
+
+    public void autoUpdateOrderStatus() {
+        orderMapper.autoUpdateOrderStatus();
+    }
+
+    public void maturitySpace() {
+        List<CameraSpace> expiredList = cameraSpaceService.findExpiredList();
+        if (expiredList != null && expiredList.size() > 0){
+            UserIncrement userIncrementEntity = null;
+            for (CameraSpace cameraSpaceEntity : expiredList){
+                if(cameraSpaceEntity.getSpaceType() !=1 && cameraSpaceEntity.getSpaceType() !=2){
+                    continue;
+                }
+                cameraSpaceEntity.setTbStatus(1);
+                cameraSpaceService.updateById(cameraSpaceEntity);
+
+                CameraDetail detailEntity = cameraDetailService.getByCameraId(cameraSpaceEntity.getCameraId());
+                if (cameraSpaceEntity.getSpaceType() == 1){ // 处理期限容量
+                    detailEntity.setCameraType(1);
+                }
+                detailEntity.setTotalSpace(Long.valueOf (Constant.CAMERA_BASE_SPACE_VALUE));
+                cameraDetailService.updateById(detailEntity);
+
+                //判断是否有绑定用户权益,无则封存场景
+                userIncrementEntity = userIncrementService.getByCameraId(cameraSpaceEntity.getCameraId());
+                if(userIncrementEntity == null){
+                    if (detailEntity.getTotalSpace().compareTo(detailEntity.getUsedSpace()) == -1){
+                        sceneUserSceneClient.lockBeyondSpaceScenes(detailEntity.getUsedSpace(), detailEntity.getTotalSpace(), cameraSpaceEntity.getCameraId());
+                    }
+                }
+            }
+        }
+    }
+
+    public void incrementExpire() {
+    }
+
+    public void incrementExpireSendSms() {
+    }
+}

+ 7 - 6
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserIncrementServiceImpl.java

@@ -25,6 +25,7 @@ import com.fdkankan.platform.user.service.IIncrementLogService;
 import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseUserIncrement;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +60,8 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
     private ICameraService cameraService;
     @Autowired
     private IIncrementLogService incrementLogService;
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
 
     @Override
     public Integer getCountByUserId(Long userId, int status) {
@@ -117,10 +120,8 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
             this.updateById(userIncrement);
         }
 
-
-        //根据相机实际容量使用情况,封锁场景 todo
-//        sceneFeignClient.lockBeyondSpaceScenes(cameraDetailEntity.getUsedSpace(),
-//                cameraDetailEntity.getTotalSpace(), userId, cameraId);
+        //根据相机实际容量使用情况,封锁场景
+        sceneUserSceneClient.lockBeyondSpaceScenes(cameraDetail.getUsedSpace(), cameraDetail.getTotalSpace(), cameraDetail.getCameraId());
         return ServerCode.SUCCESS.message();
     }
 
@@ -159,8 +160,8 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         userIncrementEntity.setCameraId(cameraEntity.getId());
         this.updateById(userIncrementEntity);
 
-        //解封所有场景 todo
-        //sceneFeignClient.unlockBeyondSpaceScenes(null, userId, cameraEntity.getId());
+        //解封所有场景
+        sceneUserSceneClient.unlockBeyondSpaceScenes(null, cameraEntity.getId());
         return ServerCode.SUCCESS.message();
     }
 

+ 0 - 57
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceMonthOrderImpl.java

@@ -1,57 +0,0 @@
-package com.fdkankan.platform.user.strategy.impl;
-
-
-import com.fdkankan.platform.user.strategy.OrderItemStrategy;
-import com.fdkankan.platform.user.vo.ResponseOrderItem;
-
-/**
- * 购买商业会员/月
- */
-//@Component
-public class CommerceMonthOrderImpl implements OrderItemStrategy {
-
-//    @Autowired
-//    private ICameraSpaceService cameraSpaceService;
-//    @Autowired
-//    private IUserRoleService userRoleService;
-//    @Autowired
-//    private IUserService userService;
-//    @Autowired
-//    private SceneFeignClient sceneService;
-
-    @Override
-    public void handleOrderItem(Long userId, ResponseOrderItem orderItem) throws Exception {
-//        if (!getType().equals(orderItem.getSkuSn())){
-//            return;
-//        }
-//        UserRole dbUserRole = userRoleService.findByUserId(userId);
-//        if (dbUserRole.getRoleId() < 3){
-//            dbUserRole.setRoleId(3L);
-//            userRoleService.update(dbUserRole);
-//        }
-//        CameraSpaceEntity dbEntity = cameraSpaceService.findDeadlineSpaceByUserId(userId);
-//        if (dbEntity == null){
-//            String expansion = Constant.DEADLINE_SPACE_VALUE_YEAR;
-//            DateTime date = new DateTime().plusMonths(orderItem.getGoodsCount());
-//            CameraSpaceEntity userSpace = new CameraSpaceEntity();
-//            userSpace.setUserId(userId);
-//            userSpace.setSpace(new BigInteger(expansion));
-//            userSpace.setSpaceType(1);
-//            userSpace.setSpaceStartTime(new Date());
-//            userSpace.setSpaceEndTime(date.toDate());
-//            cameraSpaceService.save(userSpace);
-//            userService.updateUserTotalSpace(userId);
-//            sceneService.unlockBeyondSpaceScenes(new BigInteger(Constant.DEADLINE_SPACE_VALUE_YEAR), userId);
-//        }else{
-//            DateTime oldEndTime = new DateTime(dbEntity.getSpaceEndTime().getTime());
-//            DateTime newEndTime = oldEndTime.plusMonths(orderItem.getGoodsCount());
-//            dbEntity.setSpaceEndTime(newEndTime.toDate());
-//            cameraSpaceService.update(dbEntity);
-//        }
-    }
-
-    @Override
-    public String getType() {
-        return "U15604134903250001";
-    }
-}

+ 3 - 4
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceOrderImpl.java

@@ -1,6 +1,5 @@
 package com.fdkankan.platform.user.strategy.impl;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fdkankan.common.constant.Constant;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.entity.CameraSpace;
@@ -9,6 +8,7 @@ import com.fdkankan.platform.goods.service.ICameraSpaceService;
 import com.fdkankan.platform.order.entity.CommerceOrder;
 import com.fdkankan.platform.order.service.ICommerceOrderService;
 import com.fdkankan.platform.user.strategy.OrderStrategy;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import lombok.extern.log4j.Log4j2;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +26,7 @@ public class CommerceOrderImpl implements OrderStrategy {
     @Autowired
     private ICommerceOrderService commerceOrderService;
     @Autowired
-    private ObjectMapper mapper;
+    private SceneUserSceneClient sceneUserSceneClient;
 
     @Override
     public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long spaceId) throws Exception {
@@ -76,8 +76,7 @@ public class CommerceOrderImpl implements OrderStrategy {
             dbEntity.setSpaceEndTime(date.toDate());
             cameraSpaceService.updateById(dbEntity);
         }
-        //sceneService.unlockBeyondSpaceScenes(new BigInteger(Constant.DEADLINE_SPACE_VALUE_YEAR), commerceOrder.getUserId(), commerceOrder.getCameraId());
-        //todo unlockBeyondSpaceScenes
+        sceneUserSceneClient.unlockBeyondSpaceScenes(Long.valueOf(Constant.DEADLINE_SPACE_VALUE_YEAR), commerceOrder.getCameraId());
     }
 
     @Override

+ 0 - 59
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceYearOrderImpl.java

@@ -1,59 +0,0 @@
-package com.fdkankan.platform.user.strategy.impl;
-
-
-import com.fdkankan.platform.user.strategy.OrderItemStrategy;
-import com.fdkankan.platform.user.vo.ResponseOrderItem;
-
-/**
- * 购买商业会员/年
- */
-//@Component
-public class CommerceYearOrderImpl implements OrderItemStrategy {
-
-//    @Autowired
-//    private ICameraSpaceService userSpaceService;
-//    @Autowired
-//    private IUserRoleService userRoleService;
-//    @Autowired
-//    private IUserService userService;
-//    @Autowired
-//    private SceneFeignClient sceneService;
-
-    @Override
-    public void handleOrderItem(Long userId, ResponseOrderItem orderItem) throws Exception {
-//        if (!getType().equals(orderItem.getSkuSn())){
-//            return;
-//        }
-//        // 升级商业会员
-//        UserRole dbUserRole = userRoleService.findByUserId(userId);
-//        if (dbUserRole.getRoleId() < 3){
-//            dbUserRole.setRoleId(3L);
-//            userRoleService.update(dbUserRole);
-//        }
-//        CameraSpaceEntity dbEntity = userSpaceService.findDeadlineSpaceByUserId(userId);
-//        if (dbEntity == null){
-//            // 增加期限容量,按年算
-//            String expansion = Constant.DEADLINE_SPACE_VALUE_YEAR;
-//            DateTime date = new DateTime().plusYears(orderItem.getGoodsCount());
-//            CameraSpaceEntity userSpace = new CameraSpaceEntity();
-//            userSpace.setUserId(userId);
-//            userSpace.setSpace(new BigInteger(expansion));
-//            userSpace.setSpaceType(1);
-//            userSpace.setSpaceStartTime(new Date());
-//            userSpace.setSpaceEndTime(date.toDate());
-//            userSpaceService.save(userSpace);
-//            userService.updateUserTotalSpace(userId);
-//            sceneService.unlockBeyondSpaceScenes(new BigInteger(Constant.DEADLINE_SPACE_VALUE_YEAR), userId);
-//        }else{
-//            DateTime oldEndTime = new DateTime(dbEntity.getSpaceEndTime().getTime());
-//            DateTime newEndTime = oldEndTime.plusYears(orderItem.getGoodsCount());
-//            dbEntity.setSpaceEndTime(newEndTime.toDate());
-//            userSpaceService.update(dbEntity);
-//        }
-    }
-
-    @Override
-    public String getType() {
-        return "U15604134906280002";
-    }
-}

+ 3 - 4
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/ExpansionOrderImpl.java

@@ -1,6 +1,5 @@
 package com.fdkankan.platform.user.strategy.impl;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.entity.CameraSpace;
 import com.fdkankan.platform.goods.service.ICameraDetailService;
@@ -8,6 +7,7 @@ import com.fdkankan.platform.goods.service.ICameraSpaceService;
 import com.fdkankan.platform.order.entity.ExpansionOrder;
 import com.fdkankan.platform.order.service.IExpansionOrderService;
 import com.fdkankan.platform.user.strategy.OrderStrategy;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import lombok.extern.log4j.Log4j2;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +23,7 @@ public class ExpansionOrderImpl implements OrderStrategy {
     @Autowired
     private ICameraDetailService cameraDetailService;
     @Autowired
-    private ObjectMapper mapper;
+    private SceneUserSceneClient  sceneUserSceneClient;
 
     @Override
     public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long spaceId) throws Exception {
@@ -52,8 +52,7 @@ public class ExpansionOrderImpl implements OrderStrategy {
             CameraDetail detailEntity = cameraDetailService.getByCameraId(expansionOrder.getCameraId());
             detailEntity.setTotalSpace(cameraSpaceEntity.getSpace());
             cameraDetailService.updateById(detailEntity);
-            //sceneService.unlockBeyondSpaceScenes(cameraSpaceEntity.getSpace(), cameraSpaceEntity.getUserId(), expansionOrder.getCameraId());
-            //todo unlockBeyondSpaceScenes
+            sceneUserSceneClient.unlockBeyondSpaceScenes(cameraSpaceEntity.getSpace(), expansionOrder.getCameraId());
         }else {
             cameraSpaceEntity = cameraSpaceService.getById(spaceId);
             DateTime date = null;

+ 3 - 4
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/IncrementOrderImpl.java

@@ -1,6 +1,5 @@
 package com.fdkankan.platform.user.strategy.impl;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fdkankan.platform.order.entity.IncrementOrder;
 import com.fdkankan.platform.order.service.IIncrementOrderService;
 import com.fdkankan.platform.user.entity.User;
@@ -8,6 +7,7 @@ import com.fdkankan.platform.user.entity.UserIncrement;
 import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.strategy.OrderStrategy;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import lombok.extern.log4j.Log4j2;
 import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,7 +27,7 @@ public class IncrementOrderImpl implements OrderStrategy {
     @Autowired
     private IUserService userService;
     @Autowired
-    private ObjectMapper mapper;
+    private SceneUserSceneClient sceneUserSceneClient;
 
     @Override
     public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long spaceId) throws Exception {
@@ -83,8 +83,7 @@ public class IncrementOrderImpl implements OrderStrategy {
 
             //解封所有场景
             if(userIncrementEntity.getUserId() != null && userIncrementEntity.getCameraId() != null){
-                //sceneFeignClient.unlockBeyondSpaceScenes(null, userIncrementEntity.getUserId(), userIncrementEntity.getCameraId());
-                //todo unlockBeyondSpaceScenes
+                sceneUserSceneClient.unlockBeyondSpaceScenes(null, userIncrementEntity.getCameraId());
             }
         }
 

+ 2 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/ResponseOrder.java

@@ -75,4 +75,6 @@ public class ResponseOrder implements Serializable {
     private int abroad;
 
     private Long userId;
+    //相机snCode
+    private String snCode;
 }

+ 13 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java

@@ -1,17 +1,14 @@
 package com.fdkankan.scene.feign;
 
-import cn.hutool.core.bean.BeanUtil;
-import com.fdkankan.common.constant.SceneInfoReqType;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.api.dto.SceneCntDTO;
 import com.fdkankan.scene.api.dto.SceneInfoDTO;
 import com.fdkankan.scene.api.dto.SceneProDTO;
 import com.fdkankan.scene.service.ISceneDownloadLogService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.ISceneProAppService;
 import com.fdkankan.scene.service.IUserSceneService;
 import com.fdkankan.scene.vo.SceneInfoParamVO;
-import com.fdkankan.scene.vo.SceneInfoVO;
-import java.util.Objects;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -64,7 +61,19 @@ public class UserSceenFeign {
             sceneEditInfoService.getSceneInfo4Download(
                 SceneInfoParamVO.builder().num(num).build()));
     }
+    @Autowired
+    private ISceneProAppService sceneProAppService;
 
+    @PostMapping("/lockBeyondSpaceScenes")
+    ResultData lockBeyondSpaceScenes(Long usedSpace, Long totalSpace, Long cameraId) throws Exception{
+        sceneProAppService.lockBeyondSpaceScenes(usedSpace,totalSpace,cameraId);
+        return ResultData.ok();
+    }
 
+    @PostMapping("/unlockBeyondSpaceScenes")
+    ResultData unlockBeyondSpaceScenes(Long usedSpace, Long cameraId) throws Exception{
+        sceneProAppService.unlockBeyondSpaceScenes(usedSpace,cameraId);
+        return ResultData.ok();
+    }
 }
 

+ 5 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProAppService.java

@@ -2,9 +2,9 @@ package com.fdkankan.scene.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.vo.*;
-import com.fdkankan.common.response.ResultData;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -81,7 +81,10 @@ public interface ISceneProAppService extends IService<ScenePro> {
 
     List<SceneVO> findScenesByUserIdAndSceneScheme(Long cameraId, String orderBy, Integer payStatus);
 
-    void unlockBeyondSpaceScenes(Long newSpace, Long cameraId) throws Exception;
+     void lockBeyondSpaceScenes(Long usedSpace, Long totalSpace, Long cameraId) throws Exception;
+
+     void unlockBeyondSpaceScenes(Long newSpace, Long cameraId) throws Exception;
+
 
     ResultData getScreencapVoice(SceneParamVO scene) throws Exception;
 

+ 27 - 10
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProAppServiceImpl.java

@@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.*;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.*;
-import com.fdkankan.platform.api.feign.PlatformGoodsClient;
-import com.fdkankan.platform.api.feign.PlatformUserClient;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
 import com.fdkankan.platform.api.dto.Camera;
 import com.fdkankan.platform.api.dto.CameraDetail;
 import com.fdkankan.platform.api.dto.User;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
+import com.fdkankan.platform.api.feign.PlatformUserClient;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
 import com.fdkankan.redis.util.RedisLockUtil;
@@ -23,10 +26,6 @@ import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.response.ResultData;
-import com.fdkankan.fyun.oss.UploadToOssUtil;
 import lombok.extern.slf4j.Slf4j;
 import net.coobird.thumbnailator.Thumbnails;
 import org.apache.commons.lang3.StringUtils;
@@ -2227,6 +2226,23 @@ public class SceneProAppServiceImpl extends ServiceImpl<ISceneProMapper, ScenePr
         return ResultData.ok();
     }
 
+    public void lockBeyondSpaceScenes(Long usedSpace, Long totalSpace, Long cameraId) throws Exception{
+        Long beyondSpace = usedSpace - totalSpace;
+        List<SceneVO> scenes = this.findScenesByUserIdAndSceneScheme(cameraId, "create_time", PayStatus.PAY.code());
+        Long accumulateSpace = 0L;
+        List<Long> lockedIds = new ArrayList<>();
+        if (scenes != null && scenes.size() > 0){
+            for (SceneVO responseScene : scenes){
+                accumulateSpace = accumulateSpace + responseScene.getSpace();
+                if (accumulateSpace.compareTo(beyondSpace) == 1){
+                    break;
+                }
+                lockedIds.add(responseScene.getId());
+            }
+        }
+        lockOrUnlockScenes(lockedIds,true);
+    }
+
     @Override
     public void unlockBeyondSpaceScenes(Long newSpace, Long cameraId) throws Exception{
         List<SceneVO> scenes = this.findScenesByUserIdAndSceneScheme(cameraId, "create_time", PayStatus.NO_CAPACITY.code());
@@ -2251,21 +2267,22 @@ public class SceneProAppServiceImpl extends ServiceImpl<ISceneProMapper, ScenePr
 
             }
         }
-        unlockScenes(unlockedIds);
+        lockOrUnlockScenes(unlockedIds,false);
     }
 
-    public void unlockScenes(List<Long> lockedIds) {
+    public void lockOrUnlockScenes(List<Long> lockedIds,Boolean lock) {
         if (lockedIds == null || lockedIds.size() == 0){
             return;
         }
+        Integer payStatus = lock ? -2 : 1;
         for (Long id : lockedIds){
             ScenePro scenePro = sceneProService.getById(id);
-            scenePro.setPayStatus(1);
+            scenePro.setPayStatus(payStatus);
             sceneProService.updateById(scenePro);
 
             try{
                 Map<String, Object> map = new HashMap<>();
-                map.put("payStatus", 1);
+                map.put("payStatus", payStatus);
                 FileUtils.writeJsonFile(ConstantFilePath.SCENE_PATH + "data/data" + scenePro.getNum() + "/scene.json", map);
                 com.alibaba.fastjson.JSONObject statusJson = new com.alibaba.fastjson.JSONObject();