Browse Source

Merge branch 'master' into dev-dsx-deploy-20220414

# Conflicts:
#	4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/constants/SysConstants.java
dengsixing 3 years ago
parent
commit
85b1dfc1c6
39 changed files with 944 additions and 189 deletions
  1. 223 0
      4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/dto/ScenePODTO.java
  2. 22 0
      4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java
  3. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/mapper/ICameraSpaceMapper.java
  4. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraSpaceService.java
  5. 9 10
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ManagerCameraService.java
  6. 5 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraSpaceServiceImpl.java
  7. 6 11
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/DeviceServiceImpl.java
  8. 4 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IOrderMapper.java
  9. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IVirtualOrderService.java
  10. 17 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/VirtualOrderServiceImpl.java
  11. 77 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/Schedule.java
  12. 184 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/task/TaskService.java
  13. 7 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/mapper/IUserIncrementMapper.java
  14. 4 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserIncrementService.java
  15. 17 6
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserIncrementServiceImpl.java
  16. 0 57
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceMonthOrderImpl.java
  17. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceOrderImpl.java
  18. 0 59
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/CommerceYearOrderImpl.java
  19. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/ExpansionOrderImpl.java
  20. 3 4
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/strategy/impl/IncrementOrderImpl.java
  21. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/vo/ResponseOrder.java
  22. 5 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SceneJsonBean.java
  23. 16 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java
  24. 6 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java
  25. 54 11
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java
  26. 2 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoExtService.java
  27. 8 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditService.java
  28. 5 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProAppService.java
  29. 3 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneService.java
  30. 26 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java
  31. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java
  32. 88 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java
  33. 27 10
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProAppServiceImpl.java
  34. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java
  35. 9 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneUploadServiceImpl.java
  36. 24 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/DeleteFileParamVO.java
  37. 5 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneInfoVO.java
  38. 44 0
      4dkankan-common/src/main/java/com/fdkankan/common/config/ResultStatusDecoder.java
  39. 23 0
      4dkankan-common/src/main/java/com/fdkankan/common/config/SupportAutoConfiguration.java

+ 223 - 0
4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/dto/ScenePODTO.java

@@ -0,0 +1,223 @@
+package com.fdkankan.scene.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ScenePODTO {
+
+    private Long id;
+
+    /**
+     * 场景名称
+     */
+    private String sceneName;
+
+    /**
+     * 场景描述
+     */
+    private String sceneDec;
+
+    /**
+     * 场景的链接地址
+     */
+    private String webSite;
+
+    /**
+     * 场景缩略图
+     */
+    private String thumb;
+
+    /**
+     * 0表示未建好,1表示建好,-1表示出错,-2表示不要在官网上显示
+     */
+    private Integer sceneStatus;
+
+    /**
+     * 原始的大场景数据(七牛)
+     */
+    private String dataSource;
+
+    /**
+     * 用户表t_user的id
+     */
+    private Long userId;
+
+    /**
+     * 0表示未付款,1表示付款了,-1表示欠费
+     */
+    private Integer payStatus;
+
+    /**
+     * 相机主表t_camera的id
+     */
+    private Long cameraId;
+
+    /**
+     * 手机id
+     */
+    private String phoneId;
+
+    /**
+     * 大场景序号
+     */
+    private String num;
+
+    /**
+     * 大场景的密钥
+     */
+    private String sceneKey;
+
+    /**
+     * 0表示其他,1表示文博,2表示地产,3表示电商,4表示餐饮,5表示家居
+     */
+    private Integer sceneType;
+
+    /**
+     * 1表示推荐,0表示正常
+     */
+    private Integer recommend;
+
+    /**
+     * 浏览次数
+     */
+    private Integer viewCount;
+
+    /**
+     * 版本
+     */
+    private Integer version;
+
+    /**
+     * 表示缩略图是否存在
+     */
+    private Integer thumbStatus;
+
+    /**
+     * 0表示默认,1表示自己上传
+     */
+    private String floorLogo;
+
+    /**
+     * 标记大小
+     */
+    private Integer floorLogoSize;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 0-有效,1-删除
+     */
+    private Integer tbStatus;
+
+    private String hotsIds;
+
+    /**
+     * 表示初始点信息
+     */
+    private String entry;
+
+    /**
+     * 拍摄数量
+     */
+    private Integer shootCount;
+
+    /**
+     * 风格
+     */
+    private Integer style;
+
+    /**
+     * 要gps定位
+     */
+    private String gps;
+
+    /**
+     * 方案:1是双目,2是转台,3是六目,4是八目
+     */
+    private Integer sceneScheme;
+
+    /**
+     * 背景音乐名称
+     */
+    private String bgMusic;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    private String recStatus;
+
+    /**
+     * 普通录屏文件地址
+     */
+    private String screencapVoiceSrc;
+
+    /**
+     * 旧版录屏数据地址
+     */
+    private String screencapMusic;
+
+    /**
+     * 录屏文件个数
+     */
+    private Integer screencapLen;
+
+    /**
+     * 录音文件地址
+     */
+    private String screencapVoiceSound;
+
+    /**
+     * 选择的类型,sound为screencapVoiceSound,file为screencapVoiceSrc
+     */
+    private String screencapVoiceType;
+
+    /**
+     * 录屏文件地址
+     */
+    private String playData;
+
+    /**
+     * 算法类型
+     */
+    private String algorithm;
+
+    /**
+     * oss服务商
+     */
+    private String oss;
+
+    /**
+     * 重新建模的版本
+     */
+    private Integer floorEditVer;
+
+    /**
+     * 正式发布重新建模的版本
+     */
+    private Integer floorPublishVer;
+
+    /**
+     * 使用容量
+     */
+    private Long space;
+
+    /**
+     * 录屏图片存放文件
+     */
+    private String screencapThumb;
+
+}

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

@@ -3,12 +3,15 @@ package com.fdkankan.scene.api.feign;
 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.ScenePODTO;
 import com.fdkankan.scene.api.dto.SceneProDTO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 @FeignClient(value = "4dkankan-center-scene",contextId = "sceneUserSceneClient")
 @RequestMapping("/scene/feign/user/scene")
 public interface SceneUserSceneClient {
@@ -32,4 +35,23 @@ public interface SceneUserSceneClient {
     @PostMapping("/getSceneViewInfo")
     ResultData<SceneInfoDTO> getSceneViewInfo(@RequestParam(value = "num") String num) throws Exception;
 
+    @PostMapping("/lockBeyondSpaceScenes")
+    ResultData lockBeyondSpaceScenes(@RequestParam(value = "usedSpace")Long usedSpace,
+                                     @RequestParam(value = "totalSpace")Long totalSpace,
+                                     @RequestParam(value = "cameraId")Long cameraId);
+
+    @PostMapping("/unlockBeyondSpaceScenes")
+    ResultData unlockBeyondSpaceScenes(@RequestParam(value = "usedSpace")Long usedSpace,
+                                       @RequestParam(value = "cameraId")Long cameraId);
+
+    @PostMapping("/findAllByYesterday")
+    ResultData<List<ScenePODTO>> findAllByYesterday();
+
+    @PostMapping("/updatePayStatus")
+    ResultData updatePayStatus(@RequestParam(value = "num") String num ,
+                               @RequestParam(value = "payStatus") Integer payStatus);
+
+    @PostMapping("/updateUserIdByCameraId")
+    ResultData updateUserIdByCameraId(@RequestParam(value = "userId")Long userId,
+                                      @RequestParam(value = "cameraId")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();
 }

+ 9 - 10
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}")
@@ -292,9 +296,7 @@ public class ManagerCameraService {
             userIncrementService.unbindCamera(detailEntity.getUserId(), userIncrementEntity.getId(), true,detailEntity,userIncrementEntity);
         }
 
-//        sceneService.updateUserIdByCameraId(null, cameraId);
-//        sceneService.updateUserIdByCameraIdPro(null, cameraId);
-        //todo updateUserIdByCameraId
+        sceneUserSceneClient.updateUserIdByCameraId(null,cameraId);
 
         //删除所有相机协作信息
 
@@ -314,10 +316,9 @@ public class ManagerCameraService {
         if(!bind){
             throw new BusinessException(ErrorCode.ERROR_MSG);
         }
+        sceneUserSceneClient.updateUserIdByCameraId(userEntity.getId(),cameraId);
         return ServerCode.SUCCESS.message();
-        //sceneService.updateUserIdByCameraId(userEntity.getId(), cameraId);
-        //sceneService.updateUserIdByCameraIdPro(userEntity.getId(), cameraId);
-        //todo updateUserIdByCameraId
+
     }
 
     public String manageSpace(RequestCamera param) {
@@ -351,8 +352,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 +371,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();
+    }
 }

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

@@ -20,6 +20,7 @@ import com.fdkankan.platform.user.request.RequestCamera;
 import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseCamera;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +44,8 @@ public class DeviceServiceImpl implements IDeviceService {
     private IGoodsService goodsService;
     @Autowired
     private IUserIncrementService userIncrementService;
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
 
 
     @Override
@@ -162,12 +165,7 @@ public class DeviceServiceImpl implements IDeviceService {
         }
         cameraDetailService.bind(cameraEntity.getId(), userEntity.getId());
 
-        if (cameraDetailEntity.getCameraType() == 0){
-            //result = sceneService.updateUserIdByCameraId(null, cameraEntity.getId());
-            //todo updateUserIdByCameraId
-        }else {
-            //result = sceneService.updateUserIdByCameraIdPro(null, cameraEntity.getId());
-        }
+        sceneUserSceneClient.updateUserIdByCameraId(null,cameraEntity.getId());
         return ServerCode.SUCCESS.message();
     }
 
@@ -200,11 +198,8 @@ public class DeviceServiceImpl implements IDeviceService {
         }
 
         cameraDetailService.bind(cameraEntity.getId(), userEntity.getId());
-//        Result result = sceneService.updateUserIdByCameraIdPro(userEntity.getId(), cameraEntity.getId());
-//        if (result.getCode() == Result.CODE_FAILURE){
-//            throw new Exception(LoginConstant.ERROR_MSG);
-//        }
-        //todo updateUserIdByCameraIdPro
+
+        sceneUserSceneClient.updateUserIdByCameraId(userEntity.getId(), cameraEntity.getId());
 
         ResponseCameraApp responseCamera = new ResponseCameraApp();
         responseCamera.setChildName(cameraEntity.getChildName());

+ 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();
 }

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

@@ -70,4 +70,6 @@ public interface IVirtualOrderService extends IService<VirtualOrder> {
     List<ResponseVirtualOrder> queryTrendRechargeOrder(int i);
 
     ResponseVirtualOrder getVoById(Long virtualOrderId);
+
+    void insertVirtualOrderBigScene(Long cameraId, String num, Long userId, Integer country);
 }

+ 17 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/VirtualOrderServiceImpl.java

@@ -442,4 +442,21 @@ public class VirtualOrderServiceImpl extends ServiceImpl<IVirtualOrderMapper, Vi
         param.setOrderBy("trade_time desc");
         return virtualOrderMapper.getListByParam(pageVo,param);
     }
+
+    @Override
+    public void insertVirtualOrderBigScene(Long cameraId, String num, Long userId, Integer country) {
+        VirtualOrder orderEntity = new VirtualOrder();
+        orderEntity.setCameraId(cameraId);
+        orderEntity.setOrderSn(NumberUtils.getOrderSn());
+        orderEntity.setPayType(2);
+        orderEntity.setPayStatus(1);
+        orderEntity.setPoints(Constant.MONEY_SCENE);
+        orderEntity.setStatus(-1);
+        orderEntity.setSceneNum(num);
+        orderEntity.setUserId(userId);
+        orderEntity.setBody("生成大场景");
+        orderEntity.setAbroad(country);
+        orderEntity.setTradeTime(new Date());
+        this.save(orderEntity);
+    }
 }

+ 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());
+        }
+    }
+
 }

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

@@ -0,0 +1,184 @@
+package com.fdkankan.platform.task;
+
+import com.fdkankan.common.constant.Constant;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.PatternUtils;
+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.order.service.IVirtualOrderService;
+import com.fdkankan.platform.user.entity.User;
+import com.fdkankan.platform.user.entity.UserIncrement;
+import com.fdkankan.platform.user.service.IUserIncrementService;
+import com.fdkankan.platform.user.service.IUserService;
+import com.fdkankan.scene.api.dto.ScenePODTO;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
+import com.fdkankan.sms.SmsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class TaskService {
+
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
+
+    @Autowired
+    private ICameraSpaceService cameraSpaceService;
+
+    @Autowired
+    private ICameraDetailService cameraDetailService;
+
+    @Autowired
+    private IUserIncrementService userIncrementService;
+
+    @Autowired
+    private IVirtualOrderService virtualOrderService;
+
+    @Autowired
+    private IUserService userService;
+    @Autowired
+    private SmsService smsService;
+
+    @Resource
+    private IOrderMapper orderMapper;
+
+    @Value("${upload.type}")
+    private String ossType;
+
+    public void autoDedu() {
+        ResultData<List<ScenePODTO>> resultData = sceneUserSceneClient.findAllByYesterday();
+        if(resultData.getCode() != ServerCode.SUCCESS.code()){
+            log.error("获取场景数据出错:findAllByYesterday:{}",resultData.getMessage());
+        }
+        List<ScenePODTO> scenes = resultData.getData();
+        for (ScenePODTO scene : scenes){
+            if (scene.getSceneScheme() == 4){
+                continue;
+            }
+            CameraDetail detailEntity = cameraDetailService.getByCameraId(scene.getCameraId());
+            int amount = Integer.parseInt(detailEntity.getBalance()) - Constant.MONEY_SCENE;
+            if (amount < 0){
+                log.warn("余额不足,Num:" + scene.getNum());
+                sceneUserSceneClient.updatePayStatus(scene.getNum(),-1);
+            }else{
+                sceneUserSceneClient.updatePayStatus(scene.getNum(),1);
+                detailEntity.setBalance(String.valueOf(amount));
+                cameraDetailService.updateById(detailEntity);
+                virtualOrderService.insertVirtualOrderBigScene(scene.getCameraId(), scene.getNum(), detailEntity.getUserId(), detailEntity.getCountry());
+            }
+        }
+    }
+
+    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() {
+        //查找所有刚过期的会员权益
+        List<UserIncrement> expireData = userIncrementService.findExpireData();
+        if(expireData != null && expireData.size() > 0){
+            for (UserIncrement userIncrementEntity : expireData) {
+                //调用接触绑定方法,并封存超过容量的场景,但是不解除绑定的相机
+                userIncrementService.unbindCamera(userIncrementEntity.getUserId(), userIncrementEntity.getId(), false,null,userIncrementEntity);
+                //删除已经过期的会员权益
+                userIncrementEntity.setIsExpired(1);
+                userIncrementService.updateById(userIncrementEntity);
+            }
+        }
+    }
+
+    public void incrementExpireSendSms() throws Exception {
+        //查找所有即将到期的会员权益
+        List<UserIncrement> expireData30 = userIncrementService.findReadyExpire(30, 0);
+        List<UserIncrement> expireData15 = userIncrementService.findReadyExpire(15, 0);
+        List<UserIncrement> expireData5 = userIncrementService.findReadyExpire(5, 0);
+        List<UserIncrement> expireData = userIncrementService.findReadyExpire(-1, 1);
+
+        Map<Long, Integer> userIds = new HashMap<>();
+        for (UserIncrement userIncrementEntity : expireData30) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), 30);
+            }
+        }
+
+        for (UserIncrement userIncrementEntity : expireData15) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), 15);
+            }
+        }
+
+        for (UserIncrement userIncrementEntity : expireData5) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), 5);
+            }
+        }
+
+        for (UserIncrement userIncrementEntity : expireData) {
+            if(userIncrementEntity.getUserId() != null){
+                userIds.put(userIncrementEntity.getUserId(), -1);
+            }
+        }
+
+        User userEntity = null;
+        String cnCode = "SMS_216275556";
+        String expireCode = "SMS_216425565";
+        for (Long userId : userIds.keySet()) {
+            userEntity = userService.getById(userId);
+            if(userEntity != null){
+                if (!"s3".equals(ossType)){
+                    if (!PatternUtils.isPhoneNumber(userEntity.getUserName())){
+                        throw new BusinessException(ErrorCode.FAILURE_CODE_3013);
+                    }
+                    if(userIds.get(userId) == -1){
+                        smsService.sendSms(userEntity.getUserName(), "{\"time\":\"" + userIds.get(userId) + "\"}", expireCode);
+                        continue;
+                    }
+                    smsService.sendSms(userEntity.getUserName(), "{\"time\":\"" + userIds.get(userId) + "\"}", cnCode);
+                }
+            }
+        }
+    }
+}

+ 7 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/mapper/IUserIncrementMapper.java

@@ -19,6 +19,12 @@ import java.util.List;
 @Mapper
 public interface IUserIncrementMapper extends BaseMapper<UserIncrement> {
 
-    @Select("SELECT * FROM t_user_increment x LEFT JOIN t_camera c ON x.camera_id = c.id and c.rec_status = 'A' WHERE c.child_name = #{childName} AND x.rec_status = 'A' ")
+    @Select("SELECT * FROM t_user_increment x LEFT JOIN t_camera c ON x.camera_id = c.id and c.tb_status = 0 WHERE c.child_name = #{childName} AND x.tb_status = 0 ")
     List<UserIncrement> getByChildName(@Param("childName")String childName);
+
+    @Select("SELECT * FROM `t_user_increment` WHERE DATEDIFF(increment_end_time,NOW()) <= -1 AND is_expired = 0 AND tb_status = 0 ")
+    List<UserIncrement> findExpireData();
+
+    @Select("SELECT * FROM `t_user_increment` WHERE DATEDIFF(increment_end_time,NOW()) = #{date} AND is_expired = #{isExpired} AND tb_status = 0 ")
+    List<UserIncrement> findReadyExpire(@Param("date")Integer date, @Param("isExpired")Integer isExpired);
 }

+ 4 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserIncrementService.java

@@ -38,4 +38,8 @@ public interface IUserIncrementService extends IService<UserIncrement> {
     ResponseUserIncrement findById(RequestUserIncrement param, String token);
 
     String insertIncrementls(RequestUserIncrement param,String token) ;
+
+    List<UserIncrement> findExpireData();
+
+    List<UserIncrement> findReadyExpire(Integer date, Integer isExpired);
 }

+ 17 - 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();
     }
 
@@ -286,4 +287,14 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         incrementLogService.save(tmIncrementLogEntity);
         return ServerCode.SUCCESS.message();
     }
+
+    @Override
+    public List<UserIncrement> findExpireData() {
+        return userIncrementMapper.findExpireData();
+    }
+
+    @Override
+    public List<UserIncrement> findReadyExpire(Integer date, Integer isExpired) {
+        return userIncrementMapper.findReadyExpire(date,isExpired);
+    }
 }

+ 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;
 }

+ 5 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SceneJsonBean.java

@@ -170,5 +170,10 @@ public class SceneJsonBean {
      */
     private Float floorPlanCompass;
 
+    /**
+     * 是否保存导览
+     */
+    private Integer tours;
+
 
 }

+ 16 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -866,6 +866,22 @@ public class SceneEditController extends BaseController {
         return sceneEditService.locales(param);
     }
 
+    /**
+     * 保存导览
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(value = "/tour/save")
+    public ResultData saveTour(@RequestBody @Validated BaseDataParamVO param) throws Exception{
+        return sceneEditService.saveTour(param);
+    }
+
+    @PostMapping(value = "/tour/delete")
+    public ResultData deleteTour(@RequestBody @Validated BaseSceneParamVO param) throws Exception{
+        return sceneEditService.deleteTour(param);
+    }
+
 
 
 

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java

@@ -50,6 +50,12 @@ public class SceneEditInfoExt {
     private String vrNum;
 
     /**
+     * 是否有保存导览(0-否,1-是)
+     */
+    @TableField("tours")
+    private Integer tours;
+
+    /**
      * 创建时间
      */
     @TableField("create_time")

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

@@ -1,23 +1,20 @@
 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.ScenePODTO;
 import com.fdkankan.scene.api.dto.SceneProDTO;
-import com.fdkankan.scene.service.ISceneDownloadLogService;
-import com.fdkankan.scene.service.ISceneEditInfoService;
-import com.fdkankan.scene.service.IUserSceneService;
+import com.fdkankan.scene.entity.ScenePO;
+import com.fdkankan.scene.service.*;
 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.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 提供计算调用
@@ -33,6 +30,10 @@ public class UserSceenFeign {
     ISceneDownloadLogService sceneDownloadLogService;
     @Autowired
     ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    ISceneService sceneService;
+    @Autowired
+    ISceneProService sceneProService;
 
     @PostMapping("/getSceneCnt")
     ResultData<SceneCntDTO> getSceneCnt(@RequestParam(value = "userId") Long userId, Long cameraId){
@@ -64,7 +65,49 @@ public class UserSceenFeign {
             sceneEditInfoService.getSceneInfo4Download(
                 SceneInfoParamVO.builder().num(num).build()));
     }
+    @Autowired
+    private ISceneProAppService sceneProAppService;
+
+    @PostMapping("/lockBeyondSpaceScenes")
+    ResultData lockBeyondSpaceScenes(@RequestParam(value = "usedSpace")Long usedSpace,
+                                     @RequestParam(value = "totalSpace")Long totalSpace,
+                                     @RequestParam(value = "cameraId")Long cameraId) throws Exception{
+        sceneProAppService.lockBeyondSpaceScenes(usedSpace,totalSpace,cameraId);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/unlockBeyondSpaceScenes")
+    ResultData unlockBeyondSpaceScenes(@RequestParam(value = "usedSpace")Long usedSpace,
+                                       @RequestParam(value = "cameraId")Long cameraId) throws Exception{
+        sceneProAppService.unlockBeyondSpaceScenes(usedSpace,cameraId);
+        return ResultData.ok();
+    }
+    @PostMapping("/findAllByYesterday")
+    ResultData<List<ScenePO>> findAllByYesterday() throws Exception{
+        List<ScenePO> allByYesterday = sceneService.findAllByYesterday();
+        List<ScenePODTO> List = new ArrayList<>();
+        for (ScenePO scenePO : allByYesterday) {
+            ScenePODTO scenePODTO = new ScenePODTO();
+            BeanUtils.copyProperties(scenePO,scenePODTO);
+            List.add(scenePODTO);
+        }
+        return ResultData.ok(List);
+    }
+
+    @PostMapping("/updatePayStatus")
+    ResultData updatePayStatus(@RequestParam(value = "num")String num ,
+                               @RequestParam(value = "payStatus")Integer payStatus){
+        sceneService.updatePayStatus(num,payStatus);
+        return ResultData.ok();
+    }
 
+    @PostMapping("/updateUserIdByCameraId")
+    ResultData updateUserIdByCameraId(@RequestParam(value = "userId")Long userId,
+                                      @RequestParam(value = "cameraId")Long cameraId) throws Exception{
 
+        sceneService.updateUserIdByCameraId(userId,cameraId);
+        sceneProService.updateUserIdByCameraId(userId,cameraId);
+        return ResultData.ok();
+    }
 }
 

+ 2 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoExtService.java

@@ -19,4 +19,6 @@ public interface ISceneEditInfoExtService extends IService<SceneEditInfoExt> {
 
     SceneEditInfoExt getByEditInfoId(long editInfoId);
 
+    void updateToursByNum(String num, Integer tours);
+
 }

+ 8 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditService.java

@@ -1,9 +1,12 @@
 package com.fdkankan.scene.service;
 
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.vo.BaseDataParamVO;
 import com.fdkankan.scene.vo.BaseSceneParamVO;
 import com.fdkankan.scene.vo.LocalesParamVO;
 import com.fdkankan.scene.vo.SceneAuthVO;
+import java.io.IOException;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestBody;
 
 /**
@@ -18,6 +21,10 @@ public interface ISceneEditService {
 
     SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception;
 
-    ResultData locales(@RequestBody LocalesParamVO param) throws Exception;
+    ResultData locales(LocalesParamVO param) throws Exception;
+
+    ResultData saveTour(BaseDataParamVO param) throws IOException;
+
+    ResultData deleteTour(BaseSceneParamVO param) throws Exception;
 
 }

+ 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;
 

+ 3 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneService.java

@@ -3,6 +3,7 @@ package com.fdkankan.scene.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.Scene;
 import com.fdkankan.scene.entity.ScenePO;
 import com.fdkankan.scene.entity.SceneProPO;
@@ -10,13 +11,9 @@ import com.fdkankan.scene.vo.BaseSceneParamVO;
 import com.fdkankan.scene.vo.SceneEditParamVO;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneVO;
-import com.fdkankan.common.response.ResultData;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -73,6 +70,8 @@ public interface ISceneService extends IService<Scene> {
 
     void updateStatus(String sceneNum, int status);
 
+    void updatePayStatus(String sceneNum, int status);
+
     void updateTime(String sceneNum, Long space, int payStatus);
 
     ResultData addHotMediaInfo(SceneEditParamVO base) throws Exception;

+ 26 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java

@@ -2,9 +2,18 @@ package com.fdkankan.scene.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.CommonStatus;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.scene.entity.SceneEditInfo;
 import com.fdkankan.scene.entity.SceneEditInfoExt;
+import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.mapper.ISceneEditInfoExtMapper;
 import com.fdkankan.scene.service.ISceneEditInfoExtService;
+import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.IScenePlusService;
+import java.util.Objects;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -18,6 +27,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMapper, SceneEditInfoExt> implements ISceneEditInfoExtService {
 
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+
     @Override
     public SceneEditInfoExt getBySceneProId(long sceneProId) {
         return this.getOne(new LambdaQueryWrapper<SceneEditInfoExt>().eq(SceneEditInfoExt::getSceneProId, sceneProId));
@@ -32,4 +46,16 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMa
     public SceneEditInfoExt getByEditInfoId(long editInfoId) {
         return this.getOne(new LambdaQueryWrapper<SceneEditInfoExt>().eq(SceneEditInfoExt::getEditInfoId, editInfoId));
     }
+
+    @Override
+    public void updateToursByNum(String num, Integer tours) {
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        if(Objects.isNull(scenePlus)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        SceneEditInfoExt sceneEditInfoExt = this.getByEditInfoId(sceneEditInfo.getId());
+        sceneEditInfoExt.setTours(tours);
+        this.updateById(sceneEditInfoExt);
+    }
 }

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -1172,6 +1172,9 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         }
         FileUtils.deleteDirectory(target + File.separator + "extras/video/");
 
+        SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
+        this.upgradeVersionById(sceneEditInfo.getId());
+
 
 //        SceneEditInfo sceneEditInfo = this.getBySceneProId(scenePro.getId());
 //        if(sceneEditInfo == null){

+ 88 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditServiceImpl.java

@@ -1,12 +1,18 @@
 package com.fdkankan.scene.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.PayStatus;
 import com.fdkankan.common.constant.SceneStatus;
 import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.constant.UploadFilePath;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.DateExtUtil;
@@ -15,15 +21,28 @@ import com.fdkankan.platform.api.feign.PlatformGoodsClient;
 import com.fdkankan.platform.api.feign.PlatformUserClient;
 import com.fdkankan.platform.api.dto.Camera;
 import com.fdkankan.platform.api.dto.UserIncrement;
+import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
 import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.service.ISceneEditInfoExtService;
+import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneEditService;
 import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProService;
+import com.fdkankan.scene.service.ISceneUploadService;
+import com.fdkankan.scene.vo.BaseDataParamVO;
 import com.fdkankan.scene.vo.BaseSceneParamVO;
+import com.fdkankan.scene.vo.DeleteFileParamVO;
 import com.fdkankan.scene.vo.LocalesParamVO;
 import com.fdkankan.scene.vo.SceneAuthVO;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 /**
@@ -37,6 +56,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class SceneEditServiceImpl implements ISceneEditService {
 
+    @Value("${oss.bucket:4dkankan}")
+    private String bucket;
     @Autowired
     ISceneProService sceneProService;
     @Autowired
@@ -47,6 +68,12 @@ public class SceneEditServiceImpl implements ISceneEditService {
     IScenePlusService scenePlusService;
     @Autowired
     private UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    private ISceneUploadService sceneUploadService;
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    private ISceneEditInfoExtService sceneEditInfoExtService;
 
     @Override
     public SceneAuthVO getAuth(BaseSceneParamVO param) throws Exception{
@@ -105,4 +132,65 @@ public class SceneEditServiceImpl implements ISceneEditService {
         uploadToOssUtil.upload(JSON.toJSONBytes(param.getData()), key);
         return ResultData.ok();
     }
+
+    @Override
+    public ResultData saveTour(BaseDataParamVO param) throws IOException {
+        String key = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + "tour.json";
+        uploadToOssUtil.upload(param.getData().getBytes(StandardCharsets.UTF_8), key);
+
+        sceneEditInfoExtService.updateToursByNum(
+            param.getNum(), Integer.valueOf(CommonStatus.YES.code()));
+
+        return ResultData.ok();
+    }
+
+    @Override
+    public ResultData deleteTour(BaseSceneParamVO param) throws Exception {
+        String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum());
+        String tourJsonPath = userEditPath + "tour.json";
+        String tourJson = uploadToOssUtil.getObjectContent(bucket, tourJsonPath);
+        JSONArray tours = JSON.parseArray(tourJson);
+        if(CollUtil.isNotEmpty(tours)){
+            List<String> fileNames = new ArrayList<>();
+            for (Object o : tours) {
+                JSONObject tour = (JSONObject)o;
+
+                JSONObject enter = tour.getJSONObject("enter");
+                if(Objects.nonNull(enter)){
+                    String enterOver = enter.getString("cover");
+                    if(StrUtil.isNotEmpty(enterOver)){
+                        fileNames.add(enterOver);
+                    }
+                }
+
+                JSONObject exit = tour.getJSONObject("exit");
+                if(Objects.nonNull(exit)){
+                    String exitOver = exit.getString("cover");
+                    if(StrUtil.isNotEmpty(exitOver)){
+                        fileNames.add(exitOver);
+                    }
+                }
+
+                String music = tour.getString("music");
+                if(StrUtil.isNotEmpty(music)){
+                    fileNames.add( music);
+                }
+            }
+
+            //批量删除资源文件
+            if(CollUtil.isNotEmpty(fileNames)){
+                sceneUploadService.delete(
+                    DeleteFileParamVO.builder()
+                        .num(param.getNum()).bizType("tour").fileNames(fileNames)
+                        .build());
+            }
+        }
+        //删除tour.json文件
+        uploadToOssUtil.delete(tourJsonPath);
+
+        sceneEditInfoExtService.updateToursByNum(
+            param.getNum(), Integer.valueOf(CommonStatus.NO.code()));
+
+        return ResultData.ok();
+    }
 }

+ 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();
 

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -874,6 +874,9 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     public void updateStatus(String sceneNum, int status) {
         this.update(new LambdaUpdateWrapper<Scene>().eq(Scene::getNum, sceneNum).set(Scene::getSceneStatus, status));
     }
+    public void updatePayStatus(String sceneNum, int status) {
+        this.update(new LambdaUpdateWrapper<Scene>().eq(Scene::getNum, sceneNum).set(Scene::getPayStatus, status));
+    }
 
     @Override
     public void updateTime(String sceneNum, Long space, int payStatus) {

+ 9 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneUploadServiceImpl.java

@@ -22,6 +22,7 @@ import com.fdkankan.scene.mapper.ISceneUploadMapper;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneUploadService;
 import com.fdkankan.scene.vo.DeleteFileParamVO;
+import java.io.IOException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -81,15 +82,19 @@ public class SceneUploadServiceImpl extends ServiceImpl<ISceneUploadMapper, Scen
 
     @Override
     public ResultData delete(DeleteFileParamVO param) throws Exception {
-
-        String key = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + param.getFileName();
-        uploadToOssUtil.delete(key);
+        String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum());
+        List<String> filePaths = new ArrayList<>();
+        for (String fileName : param.getFileNames()) {
+            String key = userEditPath + fileName;
+            filePaths.add(key);
+            uploadToOssUtil.delete(key);
+        }
 
         this.update(new LambdaUpdateWrapper<SceneUpload>()
             .set(SceneUpload::getTbStatus, TbStatus.DELETE.code())
             .eq(SceneUpload::getNum, param.getNum())
             .eq(SceneUpload::getBizType, param.getBizType())
-            .eq(SceneUpload::getFilePath, key)
+            .in(SceneUpload::getFilePath, filePaths)
             .eq(SceneUpload::getTbStatus, TbStatus.VALID.code()));
 
         return ResultData.ok();

+ 24 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/DeleteFileParamVO.java

@@ -1,7 +1,12 @@
 package com.fdkankan.scene.vo;
 
+import java.util.List;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * <p>
@@ -12,8 +17,26 @@ import lombok.Data;
  * @since 2022/2/23
  **/
 @Data
-public class DeleteFileParamVO extends BaseFileParamVO{
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeleteFileParamVO{
 
+    /**
+     * 场景码
+     */
+    @NotBlank(message = "场景码不能为空")
+    private String num;
+
+    /**
+     * 文件名
+     */
+    @NotEmpty(message = "文件名不能为空")
+    private List<String> fileNames;
+
+    /**
+     * 业务类型
+     */
     @NotBlank(message = "业务类型不能空")
     private String bizType;
 

+ 5 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneInfoVO.java

@@ -157,6 +157,11 @@ public class SceneInfoVO {
      */
     private Float floorPlanCompass;
 
+    /**
+     * 是否保存导览
+     */
+    private Integer tours;
+
 
 
 

+ 44 - 0
4dkankan-common/src/main/java/com/fdkankan/common/config/ResultStatusDecoder.java

@@ -0,0 +1,44 @@
+package com.fdkankan.common.config;
+
+import com.alibaba.cloud.commons.io.IOUtils;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import feign.Response;
+import feign.codec.Decoder;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.nio.charset.StandardCharsets;
+import java.util.Objects;
+
+@Slf4j
+public final class ResultStatusDecoder implements Decoder {
+
+    public static final String CONTENT_KEY = "content";
+    final Decoder delegate;
+
+    public ResultStatusDecoder(Decoder delegate) {
+        Objects.requireNonNull(delegate, "Decoder must not be null. ");
+        this.delegate = delegate;
+    }
+
+    @Override
+    public Object decode(Response response, Type type) throws IOException {
+        // 判断是否返回参数是否是异常
+        String resultStr = IOUtils.toString(response.body().asInputStream(), StandardCharsets.UTF_8);
+        log.info("feign调用返回,result msg ->{}",resultStr);
+        try {
+            ResultData resultData = JSONObject.parseObject(resultStr, ResultData.class);
+            if(resultData.getCode() != ServerCode.SUCCESS.code()){
+                throw new BusinessException(resultData.getCode(),resultData.getMessage());
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        // 回写body
+        return delegate.decode(response.toBuilder().body(resultStr, StandardCharsets.UTF_8).build(), type);
+    }
+}

+ 23 - 0
4dkankan-common/src/main/java/com/fdkankan/common/config/SupportAutoConfiguration.java

@@ -0,0 +1,23 @@
+package com.fdkankan.common.config;
+
+
+import feign.codec.Decoder;
+import feign.optionals.OptionalDecoder;
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.support.ResponseEntityDecoder;
+import org.springframework.cloud.openfeign.support.SpringDecoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SupportAutoConfiguration {
+    @Autowired
+    private ObjectFactory<HttpMessageConverters> messageConverters;
+
+    @Bean
+    public Decoder feignDecoder() {
+        return new ResultStatusDecoder(new OptionalDecoder(new ResponseEntityDecoder(new SpringDecoder(this.messageConverters))));
+    }
+}