Explorar o código

Merge branch 'test'

# Conflicts:
#	src/main/resources/bootstrap-prod-eur.yml
#	src/main/resources/bootstrap-prod.yml
lyhzzz %!s(int64=2) %!d(string=hai) anos
pai
achega
15c023fe10
Modificáronse 40 ficheiros con 523 adicións e 243 borrados
  1. 6 0
      src/main/java/com/fdkankan/manage/ManageApplication.java
  2. 2 0
      src/main/java/com/fdkankan/manage/common/CacheUtil.java
  3. 2 1
      src/main/java/com/fdkankan/manage/common/ResultCode.java
  4. 1 0
      src/main/java/com/fdkankan/manage/controller/CameraController.java
  5. 12 24
      src/main/java/com/fdkankan/manage/controller/SceneController.java
  6. 2 1
      src/main/java/com/fdkankan/manage/entity/CameraDetail.java
  7. 59 3
      src/main/java/com/fdkankan/manage/entity/IncrementType.java
  8. 10 9
      src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java
  9. 6 0
      src/main/java/com/fdkankan/manage/inner/controller/InnerController.java
  10. 2 0
      src/main/java/com/fdkankan/manage/mapper/IScenePlusMapper.java
  11. 2 0
      src/main/java/com/fdkankan/manage/mapper/ISceneProMapper.java
  12. 10 0
      src/main/java/com/fdkankan/manage/mq/common/MqQueueUtil.java
  13. 15 0
      src/main/java/com/fdkankan/manage/mq/param/ManageToSaleParam.java
  14. 23 0
      src/main/java/com/fdkankan/manage/mq/param/ScenePayStatusVo.java
  15. 13 0
      src/main/java/com/fdkankan/manage/service/ICameraDetailService.java
  16. 2 1
      src/main/java/com/fdkankan/manage/service/ISceneCopyLogService.java
  17. 4 0
      src/main/java/com/fdkankan/manage/service/IScenePlusService.java
  18. 6 0
      src/main/java/com/fdkankan/manage/service/ISceneProService.java
  19. 105 8
      src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java
  20. 1 1
      src/main/java/com/fdkankan/manage/service/impl/CameraIncrementLogServiceImpl.java
  21. 17 0
      src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java
  22. 6 1
      src/main/java/com/fdkankan/manage/service/impl/DownloadOrderServiceImpl.java
  23. 6 1
      src/main/java/com/fdkankan/manage/service/impl/IncrementOrderServiceImpl.java
  24. 7 1
      src/main/java/com/fdkankan/manage/service/impl/SceneCopyLogServiceImpl.java
  25. 12 0
      src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java
  26. 89 180
      src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java
  27. 7 7
      src/main/java/com/fdkankan/manage/service/impl/SysMenuServiceImpl.java
  28. 8 0
      src/main/java/com/fdkankan/manage/service/impl/SysUserServiceImpl.java
  29. 33 0
      src/main/java/com/fdkankan/manage/test/TestController.java
  30. 20 0
      src/main/java/com/fdkankan/manage/util/Dateutils.java
  31. 1 0
      src/main/java/com/fdkankan/manage/vo/response/DownOrderVo.java
  32. 1 0
      src/main/java/com/fdkankan/manage/vo/response/IncrementOrderVo.java
  33. 5 1
      src/main/java/com/fdkankan/manage/vo/response/SceneVo.java
  34. 4 0
      src/main/resources/bootstrap-dev.yml
  35. 4 0
      src/main/resources/bootstrap-prod-eur.yml
  36. 4 0
      src/main/resources/bootstrap-prod.yml
  37. 4 0
      src/main/resources/bootstrap-test-eur.yml
  38. 1 1
      src/main/resources/mapper/manage/SceneMapper.xml
  39. 3 0
      src/main/resources/mapper/manage/ScenePlusMapper.xml
  40. 8 3
      src/main/resources/mapper/manage/SceneProMapper.xml

+ 6 - 0
src/main/java/com/fdkankan/manage/ManageApplication.java

@@ -23,6 +23,10 @@ public class ManageApplication implements CommandLineRunner {
     private String uploadType;
     @Value("${fyun.bucket}")
     private String bucket;
+    @Value("${camera.space.unit:GB}")
+    private String cameraUnit;
+    @Value("${camera.space.num:10737418240}")
+    private String cameraSpaceNum;
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
@@ -32,6 +36,8 @@ public class ManageApplication implements CommandLineRunner {
     public void run(String... args) throws Exception {
         CacheUtil.uploadType = uploadType;
         CacheUtil.bucket = bucket;
+        CacheUtil.cameraUnit = cameraUnit;
+        CacheUtil.cameraSpaceNum = cameraSpaceNum;
 
     }
 }

+ 2 - 0
src/main/java/com/fdkankan/manage/common/CacheUtil.java

@@ -7,6 +7,8 @@ public class CacheUtil {
 
     public static String uploadType;
     public static String bucket;
+    public static String cameraUnit;
+    public static String cameraSpaceNum;
     public static OrderParam orderParam = new OrderParam();
     public static AgentNewLogParam agentParam = new AgentNewLogParam();
 

+ 2 - 1
src/main/java/com/fdkankan/manage/common/ResultCode.java

@@ -59,7 +59,7 @@ public enum ResultCode  {
     SS_NO_COPY(50042, "深时场景暂不支持复制!"),
     AGENT_NOT_EMPTY(50043, "经销商名称已存在!"),
     CAMERA_NOT_MOVE(50044, "场景在该相机中,无需迁移!"),
-    SCENE_REBUILD_ERROR(50045, "场景重算失败。。。"),
+    SCENE_REBUILD_ERROR(50045, "原始资源已删除,重算失败。"),
     PASSWORD_ERROR_G(50046, "密码格式错误!"),
     AGENT_U_NOT_EMPTY(50047, "经销商账号已存在!"),
     INCREMENT_TYPE_ERROR(50048, "权益类型错误!"),
@@ -71,6 +71,7 @@ public enum ResultCode  {
     SCENE_IS_BUILDING(50054, "场景计算中,不能复制!"),
     MOVE_ERROR(50055, "原始资源不存在,不能迁移!"),
     MOVE_ERROR_COPY(50055, "复制场景,不能迁移!"),
+    COPY_NUM_NOTREBUILD(50056, "复制的场景不支持重算!"),
 
     ;
 

+ 1 - 0
src/main/java/com/fdkankan/manage/controller/CameraController.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 /**
+ *
  * 设备管理
  */
 @RestController

+ 12 - 24
src/main/java/com/fdkankan/manage/controller/SceneController.java

@@ -2,15 +2,16 @@ package com.fdkankan.manage.controller;
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.entity.SceneCopyLog;
+import com.fdkankan.manage.entity.ScenePlusExt;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.common.ResultData;
 import com.fdkankan.manage.entity.ScenePlus;
 import com.fdkankan.manage.entity.ScenePro;
 import com.fdkankan.manage.httpClient.client.FdKKClient;
-import com.fdkankan.manage.service.IDownService;
-import com.fdkankan.manage.service.IScenePlusService;
-import com.fdkankan.manage.service.ISceneProService;
+import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.vo.request.SceneParam;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.HashMap;
 
 
@@ -34,9 +36,15 @@ public class SceneController {
     @Autowired
     IScenePlusService scenePlusService;
     @Autowired
+    IScenePlusExtService scenePlusExtService;
+    @Autowired
     IDownService downService;
    @Autowired
     FdKKClient fdKKClient;
+   @Autowired
+    FYunFileServiceInterface fYunFileServiceInterface;
+   @Autowired
+    ISceneCopyLogService sceneCopyLogService;
 
     @PostMapping("/list")
     public ResultData list(@RequestBody SceneParam param){
@@ -119,27 +127,7 @@ public class SceneController {
      */
     @GetMapping("/rebuildScene")
     public ResultData rebuild(@RequestParam(required = false) String num){
-        ScenePro scenePro = sceneProService.getByNum(num);
-        if(scenePro!=null && scenePro.getSceneSource() != 4){
-            throw new BusinessException(ResultCode.V3_SCENE_REBUILD);
-        }
-        ScenePlus scenePlus = scenePlusService.getByNum(num);
-        if(scenePlus == null && scenePro == null){
-            throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
-        }
-        HashMap<String,Object> paramMap = new HashMap<>();
-        paramMap.put("num",num);
-        try {
-            JSONObject jsonObject = fdKKClient.rebuildScene(paramMap);
-            Integer code = jsonObject.getInteger("code");
-            if(code != 0){
-                log.error("场景重算失败:{},{}",num,jsonObject);
-                throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
-            }
-        }catch (Exception e){
-            throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
-        }
-
+        sceneProService.rebuildScene(num);
         return ResultData.ok();
     }
 }

+ 2 - 1
src/main/java/com/fdkankan/manage/entity/CameraDetail.java

@@ -150,5 +150,6 @@ public class CameraDetail implements Serializable {
     @TableField("agent_id")
     private Integer agentId;
 
-
+    @TableField("unit")
+    private String unit;
 }

+ 59 - 3
src/main/java/com/fdkankan/manage/entity/IncrementType.java

@@ -35,6 +35,9 @@ public class IncrementType implements Serializable {
     @TableField("name")
     private String name;
 
+    /**
+     * member会员,freeMember免费会员
+     */
     @TableField("type")
     private String type;
 
@@ -57,6 +60,12 @@ public class IncrementType implements Serializable {
     private Integer cameraCapacity;
 
     /**
+     * 相机容量单位
+     */
+    @TableField("camera_space")
+    private Integer cameraSpace;
+
+    /**
      * 购买之后,有效期天数,-1代表无限制
      */
     @TableField("valid_time")
@@ -80,18 +89,65 @@ public class IncrementType implements Serializable {
     @TableField("symbol")
     private String symbol;
 
+    /**
+     * 自定义logo
+     */
+    @TableField("custom_logo")
+    private Boolean customLogo;
+
+    /**
+     * 自定义热点样式
+     */
+    @TableField("custom_style")
+    private Boolean customStyle;
+
+    /**
+     * 空间贴图
+     */
+    @TableField("custom_image")
+    private Boolean customImage;
+
+    /**
+     * 三维模型
+     */
+    @TableField("custom_model")
+    private Boolean customModel;
+
+    /**
+     * 场景美化调节
+     */
+    @TableField("custom_scene")
+    private Boolean customScene;
+
+    /**
+     * 场景复制
+     */
+    @TableField("custom_copy")
+    private Boolean customCopy;
+
+    /**
+     * 场景计算
+     */
+    @TableField("custom_modeling")
+    private Integer customModeling;
+
+    /**
+     * 场景下载
+     */
+    @TableField("custom_down")
+    private Integer customDown;
+
     @TableField("rec_status")
     @TableLogic(value = "A",delval = "I")
     private String recStatus;
 
     @TableField("create_time")
-    private String createTime;
+    private Date createTime;
 
     /**
      * 权益价格
      */
     @TableField("update_time")
-    private String updateTime;
-
+    private Date updateTime;
 
 }

+ 10 - 9
src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java

@@ -1,4 +1,7 @@
 package com.fdkankan.manage.httpClient.service;
+import cn.hutool.core.bean.BeanUtil;
+import com.fdkankan.manage.mq.common.MqQueueUtil;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.google.common.collect.Lists;
 
 import com.alibaba.fastjson.JSONArray;
@@ -50,13 +53,12 @@ public class LaserService {
     ISceneBuildProcessLogService sceneBuildProcessLogService;
     @Autowired
     IScenePlusService scenePlusService;
+    @Autowired
+    RabbitMqProducer rabbitMqProducer;
 
 
     public PageInfo pageList(SceneParam param) {
         try {
-            if( !CacheUtil.uploadType.equals("oss")){
-                return PageInfo.PageInfoEmpty(param.getPageNum(),param.getPageSize());
-            }
             LaserSceneParam laserSceneParam = getLaserSceneParam(param);
             if(laserSceneParam == null ){
                 return PageInfo.PageInfoEmpty(param.getPageNum(),param.getPageSize());
@@ -70,10 +72,6 @@ public class LaserService {
             long total =jsonObject.getLong("total");
 
             List<SceneVo> sceneVoList = new ArrayList<>();
-            String newBasePath = basePath;
-            newBasePath = newBasePath.contains("dev")? newBasePath + "/dev" : newBasePath;
-            newBasePath = newBasePath.contains("uat")? newBasePath + "/uat" : newBasePath;
-            newBasePath =  newBasePath.replace("/backend","");
             for (Object o : list) {
                 String res = JSONObject.toJSONString(o);
                 SceneVo vo = JSONObject.parseObject(res,SceneVo.class);
@@ -88,7 +86,8 @@ public class LaserService {
                 }
                 vo.setSceneName(obj.getString("title"));
                 vo.setUserName(obj.getString("phone"));
-                vo.setThumb(newBasePath +"/index.html?m="+vo.getNum() );
+                vo.setThumb(obj.getString("thumb"));
+                vo.setWebSite(obj.getString("webSite"));
                 vo.setPayStatus(1);
                 vo.setIsObj(obj.getInteger("buildObjStatus"));
                 if(vo.getStatus() == -1){  //计算失败
@@ -210,7 +209,9 @@ public class LaserService {
                 param.setPhone(user.getUserName());
             }
         }
-        laserClient.migrate(param);
+        Map<String, Object> map = BeanUtil.beanToMap(param);
+        rabbitMqProducer.sendByWorkQueue(MqQueueUtil.laserMoveQueue,map);
+        //laserClient.migrate(param);
     }
 
 

+ 6 - 0
src/main/java/com/fdkankan/manage/inner/controller/InnerController.java

@@ -51,4 +51,10 @@ public class InnerController extends BaseController {
         return ResultData.ok( serviceUpTipService.getServiceUpTipByType(type));
     }
 
+    @GetMapping("/rebuildScene")
+    public ResultData rebuild(@RequestParam(required = false) String num){
+        sceneProService.rebuildScene(num);
+        return ResultData.ok( );
+    }
+
 }

+ 2 - 0
src/main/java/com/fdkankan/manage/mapper/IScenePlusMapper.java

@@ -23,4 +23,6 @@ public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
     List<GroupByCount> getCountGroupByUserId(@Param("userIdList") List<Long> userIdList, @Param("isObj") Integer isObj);
 
     List<GroupByCount> getCountGroupByCameraId(@Param("cameraIds") List<Long> cameraIds);
+
+    Long getSpaceSumByCameraId(@Param("cameraId") Long cameraId);
 }

+ 2 - 0
src/main/java/com/fdkankan/manage/mapper/ISceneProMapper.java

@@ -31,4 +31,6 @@ public interface ISceneProMapper extends BaseMapper<ScenePro> {
     List<GroupByCount> getPlusSpaceGroupByCameraId();
 
     List<GroupByCount> getProSpaceGroupByCameraId();
+
+    Long getSpaceSumByCameraId(@Param("cameraId") Long cameraId);
 }

+ 10 - 0
src/main/java/com/fdkankan/manage/mq/common/MqQueueUtil.java

@@ -0,0 +1,10 @@
+package com.fdkankan.manage.mq.common;
+
+public class MqQueueUtil {
+
+    public static String manageToSaleQueue = "manageToSale";
+    public static String updateUserCommand = "updateUser";
+
+    public static String ucenterScenePayStatusQueue = "scene-pay-status";
+    public static String laserMoveQueue = "laser-migrate-scene";
+}

+ 15 - 0
src/main/java/com/fdkankan/manage/mq/param/ManageToSaleParam.java

@@ -0,0 +1,15 @@
+package com.fdkankan.manage.mq.param;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.manage.entity.SysUser;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+public class ManageToSaleParam implements Serializable {
+    private String command;
+    private SysUser data;
+}

+ 23 - 0
src/main/java/com/fdkankan/manage/mq/param/ScenePayStatusVo.java

@@ -0,0 +1,23 @@
+package com.fdkankan.manage.mq.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+public class ScenePayStatusVo implements Serializable {
+    private Long cameraId;
+    private Long sceneId;
+    private Integer payStatus;
+
+    public ScenePayStatusVo(Long cameraId) {
+        this.cameraId = cameraId;
+    }
+
+    public ScenePayStatusVo(Long sceneId, Integer payStatus) {
+        this.sceneId = sceneId;
+        this.payStatus = payStatus;
+    }
+}

+ 13 - 0
src/main/java/com/fdkankan/manage/service/ICameraDetailService.java

@@ -2,6 +2,7 @@ package com.fdkankan.manage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage.entity.CameraDetail;
+import com.fdkankan.manage.entity.IncrementType;
 
 import java.util.HashMap;
 import java.util.List;
@@ -41,4 +42,16 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     List<CameraDetail> getByUserId(Long id);
 
     void addUsedSpace(Long cameraId,Long space);
+
+    Long getTotalSpaceByCameraId(Long cameraId);
+    Long getTotalSpaceByCameraId(CameraDetail detailEntity);
+
+    Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space);
+
+    Boolean checkSpace(CameraDetail detailEntity, Long space);
+
+    Boolean checkSpace(Long cameraId, Long space);
+
+    void initSpace(CameraDetail cameraDetail);
+    void initSpace(Long cameraId);
 }

+ 2 - 1
src/main/java/com/fdkankan/manage/service/ISceneCopyLogService.java

@@ -16,7 +16,8 @@ import java.util.List;
  */
 public interface ISceneCopyLogService extends IService<SceneCopyLog> {
 
-    Long getCountBySceneNum(String num);
+    Long getCountByOldNum(String num);
+    Long getCountByNewNum(String num);
 
     void saveByNum(String oldNum, String newNum, Long userId);
 

+ 4 - 0
src/main/java/com/fdkankan/manage/service/IScenePlusService.java

@@ -27,4 +27,8 @@ public interface IScenePlusService extends IService<ScenePlus> {
     HashMap<Long, Long> getCountGroupByCameraId(ArrayList<Long> longs);
 
     String getDataSourceByNum(String num);
+
+    Long getSpaceSumByCameraId(Long cameraId);
+
+    Long getCountByCameraId(Long cameraId);
 }

+ 6 - 0
src/main/java/com/fdkankan/manage/service/ISceneProService.java

@@ -51,4 +51,10 @@ public interface ISceneProService extends IService<ScenePro> {
 
 
     HashMap<Long,Long > getSpaceGroupByCameraId();
+
+    void rebuildScene(String num);
+
+    Long getSpaceSumByCameraId(Long cameraId);
+
+    Long getCountByCameraId(Long cameraId);
 }

+ 105 - 8
src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java

@@ -7,10 +7,8 @@ import com.fdkankan.common.constant.Constant;
 import com.fdkankan.manage.common.CacheUtil;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
-import com.fdkankan.manage.entity.Camera;
-import com.fdkankan.manage.entity.CameraDetail;
-import com.fdkankan.manage.entity.User;
 import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.mapper.ICameraDetailMapper;
 import com.fdkankan.manage.service.*;
@@ -19,10 +17,7 @@ import com.fdkankan.manage.vo.response.GroupByCount;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -52,6 +47,10 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     IUserService userService;
     @Autowired
     LaserService laserService;
+    @Autowired
+    IUserIncrementService userIncrementService;
+    @Autowired
+    IIncrementTypeService incrementTypeService;
 
 
     @Override
@@ -79,7 +78,6 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         wrapper.set(CameraDetail::getUserId,null);
         wrapper.set(CameraDetail::getCooperationUser,null);
         //恢复10G基本容量
-        wrapper.set(CameraDetail::getTotalSpace,Long.parseLong(Constant.EXPANSION_SPACE_VALUE_1G ) * 10L);
         this.update(wrapper);
 
         if(!"local".equals(CacheUtil.uploadType) && cameraDetail.getType() !=10){
@@ -232,4 +230,103 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         }
         this.updateById(cameraDetail);
     }
+
+
+    @Override
+    public Long getTotalSpaceByCameraId(Long cameraId) {
+        CameraDetail cameraDetail = this.getByCameraId(cameraId);
+        if(cameraDetail == null){
+            return 0L;
+        }
+        return getTotalSpaceByCameraId(cameraDetail);
+    }
+    @Override
+    public Long getTotalSpaceByCameraId(CameraDetail cameraDetail) {
+        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraDetail.getCameraId());
+        if(userIncrement != null && userIncrement.getIsExpired() == 0){
+            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+            return getTotalSpace(cameraDetail,incrementType);
+        }
+        return getTotalSpace(cameraDetail,null);
+    }
+
+    @Override
+    public Boolean checkSpace(Long cameraId, Long space) {
+        CameraDetail cameraDetail = this.getByCameraId(cameraId);
+        if(cameraDetail == null){
+            return false;
+        }
+        return checkSpace(cameraDetail,space);
+    }
+
+    @Override
+    public Boolean checkSpace(CameraDetail detailEntity, Long space) {
+        UserIncrement userIncrement = userIncrementService.getByCameraId(detailEntity.getCameraId());
+        if(userIncrement == null || userIncrement.getIsExpired() == 1){
+            return checkSpace(detailEntity,null,space);
+        }
+        IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
+        return checkSpace(detailEntity,incrementType,space);
+    }
+
+    @Override
+    public Boolean checkSpace(CameraDetail detailEntity, IncrementType incrementType, Long space) {
+        Long totalSpace = 0L;
+        if("SP".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraSpace() == -1){
+                return true;
+            }
+            totalSpace = incrementType != null ?incrementType.getCameraSpace() : detailEntity.getTotalSpace();
+            return detailEntity.getUsedSpace() + 1 <= totalSpace;
+        }
+        if("GB".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraCapacity() == -1){
+                return true;
+            }
+            totalSpace = incrementType != null ?incrementType.getCameraCapacity()  * 1024 * 1024 * 1024L: detailEntity.getTotalSpace();
+            return detailEntity.getUsedSpace() + space <= totalSpace ;
+        }
+        return false;
+    }
+
+    public Long getTotalSpace(CameraDetail detailEntity, IncrementType incrementType) {
+        if("SP".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraSpace() == -1){
+                return -1L;
+            }
+            return incrementType != null ?incrementType.getCameraSpace() : detailEntity.getTotalSpace();
+        }
+        if("GB".equals(detailEntity.getUnit())){
+            if(incrementType!=null && incrementType.getCameraCapacity() == -1){
+                return -1L;
+            }
+            return incrementType != null ?incrementType.getCameraCapacity() * 1024 * 1024 * 1024L: detailEntity.getTotalSpace();
+        }
+        return 0L;
+    }
+
+    @Override
+    public void initSpace(Long cameraId) {
+        CameraDetail cameraDetail = this.getByCameraId(cameraId);
+        if(cameraDetail != null){
+            initSpace(cameraDetail);
+        }
+    }
+
+    @Override
+    public void initSpace(CameraDetail cameraDetail) {
+        LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(CameraDetail::getId,cameraDetail.getId());
+        if("GB".equals(cameraDetail.getUnit())){
+            Long proSpace = sceneProService.getSpaceSumByCameraId(cameraDetail.getCameraId());
+            Long plusSpace = scenePlusService.getSpaceSumByCameraId(cameraDetail.getCameraId());
+            wrapper.set(CameraDetail::getUsedSpace,(plusSpace == null ?0L:plusSpace) + (proSpace == null ?0L:proSpace));
+        }
+        if("SP".equals(cameraDetail.getUnit())){
+            Long proSpace = sceneProService.getCountByCameraId(cameraDetail.getCameraId());
+            Long plusSpace = scenePlusService.getCountByCameraId(cameraDetail.getCameraId());
+            wrapper.set(CameraDetail::getUsedSpace,(plusSpace == null ?0L:plusSpace )+( proSpace == null ?0L:proSpace));
+        }
+        this.update(wrapper);
+    }
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/service/impl/CameraIncrementLogServiceImpl.java

@@ -37,7 +37,7 @@ public class CameraIncrementLogServiceImpl extends ServiceImpl<ICameraIncrementL
     @Override
     public void saveUnbindLog(Long cameraId) {
         UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
-        if(userIncrement != null){
+        if(userIncrement != null && userIncrement.getIsExpired() == 0){
             this.saveLog(cameraId,userIncrement.getId(),null,1);
         }
         this.saveLog(cameraId,null,null,3);

+ 17 - 0
src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -13,12 +14,14 @@ import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.manage.constant.CameraConstant;
 import com.fdkankan.manage.mapper.ICameraMapper;
+import com.fdkankan.manage.mq.param.ScenePayStatusVo;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.util.Dateutils;
 import com.fdkankan.manage.vo.request.CameraInOutParam;
 import com.fdkankan.manage.vo.request.CameraParam;
 import com.fdkankan.manage.vo.response.CameraDataVo;
 import com.fdkankan.manage.vo.response.CameraDetailVo;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -175,6 +178,10 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
                 cameraDetail.setTotalSpace(Long.valueOf(Constant.CAMERA_BASE_SPACE_VALUE));
                 cameraDetail.setUsedSpace(0L);
             }
+            cameraDetail.setUnit(CacheUtil.cameraUnit);
+            if(cameraDetail.getUnit().equals("SP")){
+                cameraDetail.setTotalSpace(Long.valueOf(CacheUtil.cameraSpaceNum));
+            }
             if("aws".equals(CacheUtil.uploadType)){
                 cameraDetail.setCountry(1);//1-国外
             }
@@ -351,6 +358,10 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             cameraDetail.setOwn(param.getOutType());
             cameraDetail.setCompanyId(param.getCompanyId());
             cameraDetail.setOutTime(Dateutils.getDate(new Date()));
+            cameraDetail.setUnit(CacheUtil.cameraUnit);
+            if(cameraDetail.getUnit().equals("SP")){
+                cameraDetail.setTotalSpace(Long.valueOf(CacheUtil.cameraSpaceNum));
+            }
             cameraDetails.add(cameraDetail);
         }
         return cameraDetailService.saveOrUpdateBatch(cameraDetails) ? cameraDetails.size() : 0;
@@ -518,6 +529,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         return resultMap;
     }
 
+    @Autowired
+    RabbitMqProducer rabbitMqProducer;
     @Override
     public void initAllCameraSpace(Long userId) {
         List<Long> cameraIds ;
@@ -532,6 +545,10 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         if(cameraDetails == null || cameraDetails.size() <=0){
             return;
         }
+//        for (CameraDetail cameraDetail : cameraDetails) {
+//            ScenePayStatusVo scenePayStatusVo = new ScenePayStatusVo(cameraDetail.getCameraId());
+//            rabbitMqProducer.sendByWorkQueue("scene-pay-status", JSONObject.toJSONString(scenePayStatusVo));
+//        }
 
         HashMap<Long, Long> map = sceneProService.getSpaceGroupByCameraId();
         for (CameraDetail cameraDetail : cameraDetails) {

+ 6 - 1
src/main/java/com/fdkankan/manage/service/impl/DownloadOrderServiceImpl.java

@@ -12,6 +12,7 @@ import com.fdkankan.manage.entity.ScenePlus;
 import com.fdkankan.manage.entity.ScenePro;
 import com.fdkankan.manage.mapper.IDownloadOrderMapper;
 import com.fdkankan.manage.service.*;
+import com.fdkankan.manage.util.Dateutils;
 import com.fdkankan.manage.vo.request.OrderParam;
 import com.fdkankan.manage.vo.response.DownOrderVo;
 import org.apache.commons.lang3.StringUtils;
@@ -63,7 +64,11 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
             if(StringUtils.isNotBlank(record.getSceneNum())){
                 record.setSnCode(snCodeMap.get(record.getSceneNum()));
             }
-            record.setCreateTime(record.getTradeTime());
+            String tradeTime = record.getTradeTime();
+            if(record.getTimeZoneOff() != null){
+                tradeTime = Dateutils.AddMinute(record.getTradeTime(),record.getTimeZoneOff());
+            }
+            record.setCreateTime(tradeTime);
         }
         return page;
     }

+ 6 - 1
src/main/java/com/fdkankan/manage/service/impl/IncrementOrderServiceImpl.java

@@ -10,6 +10,7 @@ import com.fdkankan.manage.entity.IncrementOrder;
 import com.fdkankan.manage.mapper.IIncrementOrderMapper;
 import com.fdkankan.manage.service.IExcelService;
 import com.fdkankan.manage.service.IIncrementOrderService;
+import com.fdkankan.manage.util.Dateutils;
 import com.fdkankan.manage.vo.request.OrderParam;
 import com.fdkankan.manage.vo.response.IncrementOrderVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +38,11 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
         CacheUtil.orderParam = param;
         Page<IncrementOrderVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
         for (IncrementOrderVo record : page.getRecords()) {
-            record.setCreateTime(record.getTradeTime());
+            String tradeTime = record.getTradeTime();
+            if(record.getTimeZoneOff() != null){
+                tradeTime = Dateutils.AddMinute(record.getTradeTime(),record.getTimeZoneOff());
+            }
+            record.setCreateTime(tradeTime);
         }
         return PageInfo.PageInfo(page);
     }

+ 7 - 1
src/main/java/com/fdkankan/manage/service/impl/SceneCopyLogServiceImpl.java

@@ -22,12 +22,18 @@ import java.util.List;
 public class SceneCopyLogServiceImpl extends ServiceImpl<ISceneCopyLogMapper, SceneCopyLog> implements ISceneCopyLogService {
 
     @Override
-    public Long getCountBySceneNum(String num) {
+    public Long getCountByOldNum(String num) {
         LambdaQueryWrapper<SceneCopyLog> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SceneCopyLog::getOldNum,num);
         return this.count(wrapper);
     }
 
+    public Long getCountByNewNum(String num) {
+        LambdaQueryWrapper<SceneCopyLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SceneCopyLog::getNewNum,num);
+        return this.count(wrapper);
+    }
+
     @Override
     public void saveByNum(String oldNum, String newNum, Long userId) {
         SceneCopyLog sceneCopyLog = new SceneCopyLog();

+ 12 - 0
src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java

@@ -85,4 +85,16 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         }
         return null;
     }
+
+    @Override
+    public Long getSpaceSumByCameraId(Long cameraId) {
+        return this.getBaseMapper().getSpaceSumByCameraId(cameraId);
+    }
+
+    @Override
+    public Long getCountByCameraId(Long cameraId) {
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ScenePlus::getCameraId,cameraId);
+        return this.count(wrapper);
+    }
 }

+ 89 - 180
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -5,6 +5,9 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.amazonaws.services.s3.AmazonS3;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -18,6 +21,8 @@ import com.fdkankan.manage.httpClient.client.FdKKClient;
 import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.mapper.ISceneProMapper;
+import com.fdkankan.manage.mq.common.MqQueueUtil;
+import com.fdkankan.manage.mq.param.ScenePayStatusVo;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.util.Dateutils;
 import com.fdkankan.manage.util.SceneStatusUtil;
@@ -25,6 +30,7 @@ import com.fdkankan.manage.vo.request.SceneParam;
 import com.fdkankan.manage.vo.response.CameraDataVo;
 import com.fdkankan.manage.vo.response.GroupByCount;
 import com.fdkankan.manage.vo.response.SceneVo;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -88,6 +94,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     ISceneResourceCameraService sceneResourceCameraService;
     @Autowired
     ISceneDelLogService sceneDelLogService;
+    @Autowired
+    RabbitMqProducer rabbitMqProducer;
 
 
     @Override
@@ -140,155 +148,18 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
      */
     @Override
     public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId, Integer payStatus) {
-        if(cameraDetail == null){
-            cameraDetail = cameraDetailService.getByCameraId(cameraId);
-        }
-        LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
-        LambdaQueryWrapper<ScenePlus> plusWr = new LambdaQueryWrapper<>();
-        wrapper.eq(ScenePro::getStatus,-2);
-        plusWr.eq(ScenePlus::getSceneStatus,-2);
-        Long totalSpace = cameraDetail.getTotalSpace();
-        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
-        if(userIncrement!=null){
-            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
-            if(incrementType!=null){
-                if(incrementType.getCameraCapacity() == -1){
-                    totalSpace   = -1L;
-                }else {
-                    totalSpace = incrementType.getCameraCapacity() * 1024* 1024 * 1024L;
-                }
-            }
-        }
-
-        log.info("lockOrUnLockBySpace---cameraId:{},payStatus:{},totalSpace:{},useSpace{}",
-                cameraId,payStatus,totalSpace,cameraDetail.getUsedSpace());
-        if(payStatus == 1){         //解封,判断用户权益,用户会员权益无限容量
-            wrapper.orderByAsc(ScenePro::getCreateTime);
-            plusWr.orderByAsc(ScenePlus::getCreateTime);
-            wrapper.eq(ScenePro::getPayStatus,-2);
-            plusWr.eq(ScenePlus::getPayStatus,-2);
-        }else {
-            if (totalSpace == -1 || totalSpace >= cameraDetail.getUsedSpace()) {
-                // 总容量大于已使用容量,不予封存
-                return;
-            }
-            wrapper.orderByDesc(ScenePro::getCreateTime);
-            plusWr.orderByDesc(ScenePlus::getCreateTime);
-            wrapper.eq(ScenePro::getPayStatus,1);
-            plusWr.eq(ScenePlus::getPayStatus,1);
-        }
 
-        wrapper.eq(ScenePro::getCameraId,cameraId)
-                .eq(ScenePro::getIsUpgrade,0);
-
-        plusWr.eq(ScenePlus::getCameraId,cameraId);
-
-        List<ScenePro> list = this.list(wrapper);
-        List<ScenePlus> plusList = scenePlusService.list(plusWr);
-
-        List<Long> lockedIds = new ArrayList<>();
-
-        if(totalSpace == -1){
-            List<Long> collect = list.stream().map(ScenePro::getId).collect(Collectors.toList());
-            List<Long> collect2 = plusList.stream().map(ScenePlus::getId).collect(Collectors.toList());
-            lockedIds.addAll(collect);
-            lockedIds.addAll(collect2);
-            lockOrUnLockScenes(lockedIds,payStatus);  //  无限容量 全部解封
-            return;
-        }
-
-        Long beyondSpace =  0L;
-        Long accumulateSpace = 0L;
-        if(payStatus == 1){
-            beyondSpace =  totalSpace - cameraDetail.getUsedSpace();
-            getScenePlusLockedIds(lockedIds, plusList, beyondSpace, accumulateSpace);
-            getSceneLockedIds(lockedIds,list,beyondSpace,accumulateSpace);
-        }else {
-            beyondSpace =  cameraDetail.getUsedSpace() - totalSpace;
-            getSceneLockedIds(lockedIds, list, beyondSpace, accumulateSpace);
-            getScenePlusLockedIds(lockedIds,plusList,beyondSpace,accumulateSpace);
-        }
-
-        lockOrUnLockScenes(lockedIds,payStatus);
+        ScenePayStatusVo scenePayStatusVo = new ScenePayStatusVo(cameraDetail.getCameraId());
+        rabbitMqProducer.sendByWorkQueue(MqQueueUtil.ucenterScenePayStatusQueue, JSONObject.toJSONString(scenePayStatusVo));
     }
 
     @Override
     public void lockOrUnLockBySpace(ScenePro scenePro, ScenePlus scenePlus,Integer payStatus) {
-        List<Long> lockedIds = new ArrayList<>();
-        if(scenePro!= null){
-            lockedIds.add(scenePro.getId());
-        }
-        if(scenePlus!= null){
-            lockedIds.add(scenePlus.getId());
-        }
-        lockOrUnLockScenes(lockedIds,payStatus);  //  无限容量 全部解封
-    }
-
-    private void getSceneLockedIds(List<Long> lockedIds , List<ScenePro> list, Long beyondSpace, Long accumulateSpace){
-        if (list != null && list.size() > 0){
-            for (ScenePro scenePro : list){
-                accumulateSpace += scenePro.getSpace()== null ? 0 : scenePro.getSpace();
-                if (accumulateSpace.compareTo(beyondSpace) > 0){
-                    break;
-                }
-                lockedIds.add(scenePro.getId());
-            }
-        }
+        Long sceneId = scenePro == null ? scenePlus.getId() : scenePro.getId();
+        ScenePayStatusVo scenePayStatusVo = new ScenePayStatusVo(sceneId,payStatus);
+        rabbitMqProducer.sendByWorkQueue(MqQueueUtil.ucenterScenePayStatusQueue, JSONObject.toJSONString(scenePayStatusVo));
     }
-    private void getScenePlusLockedIds(List<Long> lockedIds , List<ScenePlus> list, Long beyondSpace, Long accumulateSpace){
-        if (list != null && list.size() > 0){
-            List<Long> plusIds = list.parallelStream().map(ScenePlus::getId).collect(Collectors.toList());
-            HashMap<Long, ScenePlusExt> byPlusIds = scenePlusExtService.getByPlusIds(plusIds);
-            for (ScenePlus scenePlus : list){
-                ScenePlusExt scenePlusExt = byPlusIds.get(scenePlus.getId());
-                accumulateSpace += scenePlusExt.getSpace() == null ? 0 : scenePlusExt.getSpace();
-                if (accumulateSpace.compareTo(beyondSpace) > 0){
-                    break;
-                }
-                lockedIds.add(scenePlus.getId());
-            }
-        }
-    }
-
-    // payStatus 为 -2 封存,为 1 解封
-    private void lockOrUnLockScenes(List<Long> lockedIds,Integer payStatus) {
-        if (lockedIds == null || lockedIds.size() == 0){
-            return;
-        }
-        LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
-        updateWrapper.set(ScenePro::getPayStatus,payStatus)
-                .eq(ScenePro::getIsUpgrade,0)
-                .in(ScenePro::getId,lockedIds);
-        this.update(updateWrapper);
-
-        LambdaUpdateWrapper<ScenePlus> updatePlusWrapper = new LambdaUpdateWrapper<>();
-        updatePlusWrapper.set(ScenePlus::getPayStatus,payStatus)
-                .in(ScenePlus::getId,lockedIds);
-        scenePlusService.update(updatePlusWrapper);
-
-        this.updateOssStatus(lockedIds,payStatus);
-    }
-
-    /**
-     *  修改oss status.json中 payStatus
-     */
-    private void updateOssStatus(List<Long> lockedIds, Integer payStatus) {
-        LambdaQueryWrapper<ScenePro> proWr = new LambdaQueryWrapper<>();
-        proWr.eq(ScenePro::getIsUpgrade,0);
-        proWr.in(ScenePro::getId,lockedIds);
-        List<ScenePro> proList = this.list(proWr);
-
-        LambdaQueryWrapper<ScenePlus> pluWr = new LambdaQueryWrapper<>();
-        pluWr.in(ScenePlus::getId,lockedIds);
-        List<ScenePlus> plusList = scenePlusService.list(pluWr);
-        for (ScenePro scenePro : proList) {
-            this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),payStatus,"payStatus");
-        }
-        for (ScenePlus scenePlus : plusList) {
-            this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),payStatus,"payStatus");
-        }
 
-    }
 
     /**
      * 从oss中获取文件,并重写,上传替换
@@ -299,7 +170,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             if(!fYunFileServiceInterface.fileExist(path)){
                 return;
             }
-            String data = fYunFileServiceInterface.getFileContent("4dkankan",path);
+            String data = fYunFileServiceInterface.getFileContent(path);
             if(StringUtils.isBlank(data)){
                 return;
             }
@@ -374,7 +245,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
 
         Long sceneCameraId = scenePro == null ? scenePlus.getCameraId() : scenePro.getCameraId();
-        Long space = scenePro == null ? 0 :scenePro.getSpace();
+        Long space = null;
+        space = scenePro == null ? 0 :scenePro.getSpace();
         String dataSource = scenePro == null ? null :scenePro.getDataSource();
         if(scenePlus !=null){
             ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
@@ -382,22 +254,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             dataSource = scenePlusExt.getDataSource();
         }
         space = space == null ? 0 :space;
-        Long newUseSpace = space + cameraDetail.getUsedSpace();
-
-        Long totalSpace = cameraDetail.getTotalSpace();
-        UserIncrement userIncrement = userIncrementService.getByCameraId(camera.getId());
-        if(userIncrement!=null){
-            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
-            if(incrementType!=null){
-                if(incrementType.getCameraCapacity() == -1){
-                    totalSpace   = -1L;
-                }else {
-                    totalSpace = incrementType.getCameraCapacity() * 1024 *1024 * 1024L;
-                }
-            }
-        }
+
+        Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail, space);
         //深时场景无限容量
-        if(cameraDetail.getType() != 11 && cameraDetail.getType() != 10 && totalSpace !=-1 &&  newUseSpace  > totalSpace){
+        if(cameraDetail.getType() != 11 && cameraDetail.getType() != 10 && !checkSpace){
             throw new BusinessException(ResultCode.CAMERA_SPACE_ERROR);
         }
 
@@ -427,14 +287,16 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
         if(cameraDetail.getType() == 10 || cameraDetail.getType() == 11) {       //深时场景
             //迁移深时 dataSource
-            File file = new File(dataSource + "_laserData/laserData");
+            File file = new File(dataSource + "_laserData");
             if (!file.exists()) {
                 throw new BusinessException(ResultCode.MOVE_ERROR);
             }
         }
 
         Long oldUseSpace = oldCameraDetail.getUsedSpace() - space < 0 ? 0 : oldCameraDetail.getUsedSpace() - space;
-        oldCameraDetail.setUsedSpace(oldUseSpace);
+        if("GB".equals(oldCameraDetail.getUnit())){
+            oldUseSpace = 1L;
+        }
         Long subSpace =  oldCameraDetail.getTotalSpace() - oldUseSpace;
 
         if(oldCameraDetail.getType() != 11 && oldCameraDetail.getType() != 10 && subSpace >0){           //有剩余容量解封容量内场景
@@ -446,9 +308,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(cameraDetail.getType() != 11 && cameraDetail.getType() != 10 && payStatus!=1){           //有剩余容量解封容量内场景
             this.lockOrUnLockBySpace(scenePro,scenePlus,1);
         }
-        cameraDetailService.updateById(oldCameraDetail);
-        cameraDetail.setUsedSpace(newUseSpace);
-        cameraDetailService.updateById(cameraDetail);
+
 
         if(scenePro!=null){
             LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
@@ -478,10 +338,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
         if(cameraDetail.getType() == 10 || cameraDetail.getType() == 11){       //深时场景
             //迁移深时 dataSource
-            FileUtil.move(new File(dataSource +"_laserData/laserData"),new File(newDataSource+"_laserData/laserData"),true);
+            FileUtil.move(new File(dataSource +"_laserData"),new File(newDataSource+"_laserData"),true);
             laserService.move(param.getNum(),oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),newDataSource);
         }
-
+        cameraDetailService.initSpace(oldCameraDetail);
+        cameraDetailService.initSpace(cameraDetail);
     }
 
 
@@ -599,15 +460,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(sceneStatus != -2){
             throw new BusinessException(ResultCode.SCENE_IS_BUILDING);
         }
-        Long totalSpace = detailEntity.getTotalSpace();
-        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
-        if(userIncrement != null && userIncrement.getIsExpired() ==0){
-            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
-            totalSpace = incrementType.getCameraCapacity() * 1024 * 1024 * 1024L;
-        }
-        if(detailEntity.getType() == 10  || detailEntity.getType() == 11){
-            totalSpace = -1L;
-        }
 
         Long needSpace = 0L;
         if(scenePro != null){
@@ -619,8 +471,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 needSpace = scenePlusExt.getSpace();
             }
         }
+        Boolean checkSpace = cameraDetailService.checkSpace(detailEntity, needSpace);
 
-        if( totalSpace > 0 && detailEntity.getUsedSpace() + needSpace > totalSpace){
+        if(!checkSpace){
             throw new BusinessException(ResultCode.CAMERA_SPACE_ERROR);
         }
 
@@ -634,12 +487,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public void deleteByNum(String num) {
         Integer sceneSource = null;
         Long cameraId = null;
-        Long space = null;
         ScenePro scenePro = this.getByNum(num);
         if(scenePro!=null){
             cameraId = scenePro.getCameraId();
             sceneSource = scenePro.getSceneSource();
-            space = scenePro.getSpace();
             this.removeById(scenePro.getId());
         }
         Scene scene = sceneService.getByNum(num);
@@ -652,7 +503,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             sceneSource = scenePlus.getSceneSource();
             ScenePlusExt plusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
             if(plusExt != null){
-                space = plusExt.getSpace();
                 scenePlusExtService.delByPlus(scenePlus.getId());
             }
             scenePlusService.removeById(scenePlus.getId());
@@ -661,7 +511,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             laserService.delete(num);
         }
         if(cameraId != null){
-            cameraDetailService.addUsedSpace(cameraId,space);
+            cameraDetailService.initSpace(cameraId);
         }
         sceneDelLogService.saveLog(num, StpUtil.getLoginId());
     }
@@ -774,4 +624,63 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
         return map;
     }
+
+    @Override
+    public void rebuildScene(String num) {
+        String dataSource = null;
+        ScenePro scenePro = this.getByNum(num);
+        if(scenePro!=null && scenePro.getSceneSource() != 4){
+            throw new BusinessException(ResultCode.V3_SCENE_REBUILD);
+        }
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+        if(scenePlus == null && scenePro == null){
+            throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
+        }
+        if(scenePro != null){
+            dataSource = scenePro.getDataSource();
+        }
+        if(scenePlus != null){
+            ScenePlusExt scenePlusExt= scenePlusExtService.getByPlusId(scenePlus.getId());
+            if(scenePlusExt!= null){
+                dataSource = scenePlusExt.getDataSource();
+            }
+        }
+        if(StringUtils.isBlank(dataSource)){
+            throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
+        }
+        Long countByNewNum = sceneCopyLogService.getCountByNewNum(num);
+        if(countByNewNum >0){
+            throw new BusinessException(ResultCode.COPY_NUM_NOTREBUILD);
+        }
+
+        if(!fYunFileServiceInterface.fileExist(dataSource.replace("/mnt/data","home")+"/data.fdage")){
+            throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
+        }
+        HashMap<String,Object> paramMap = new HashMap<>();
+        paramMap.put("num",num);
+        try {
+            JSONObject jsonObject = fdKKClient.rebuildScene(paramMap);
+            Integer code = jsonObject.getInteger("code");
+            if(code != 0){
+                log.error("场景重算失败:{},{}",num,jsonObject);
+                throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
+            }
+        }catch (Exception e){
+            throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
+        }
+
+    }
+
+    @Override
+    public Long getSpaceSumByCameraId(Long cameraId) {
+        return this.getBaseMapper().getSpaceSumByCameraId(cameraId);
+    }
+
+    @Override
+    public Long getCountByCameraId(Long cameraId) {
+        LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ScenePro::getIsUpgrade,0);
+        wrapper.eq(ScenePro::getCameraId,cameraId);
+        return this.count(wrapper);
+    }
 }

+ 7 - 7
src/main/java/com/fdkankan/manage/service/impl/SysMenuServiceImpl.java

@@ -190,13 +190,13 @@ public class SysMenuServiceImpl extends ServiceImpl<ISysMenuMapper, SysMenu> imp
         List<Long> delParentIds = new ArrayList<>();
         //如果父菜单不包含全部子菜单,将父菜单移除,不返回前端
         for (Long menuId : menuMap.keySet()) {
-            Long parentId = menuMap.get(menuId).getParentId();
-            if(parentId != null && menuMap.containsKey(parentId) && !setParentIds.contains(parentId)){
-                setParentIds.add(parentId);
-                List<SysMenu> menuList = this.getBySonById(parentId);
-                for (SysMenu sysMenu : menuList) {
-                    if(!menuMap.containsKey(sysMenu.getId()) ){
-                        delMenuIds.add(parentId);
+            SysMenu menu = menuMap.get(menuId);
+            if(menu.getType() != 2){
+                List<SysMenu> menuList = this.getBySonById(menuId);
+                List<Long> sonIds = menuList.stream().map(SysMenu::getId).collect(Collectors.toList());
+                for (Long sonId : sonIds) {
+                    if(!menuIds.contains(sonId)){
+                        delMenuIds.add(menuId);
                     }
                 }
             }

+ 8 - 0
src/main/java/com/fdkankan/manage/service/impl/SysUserServiceImpl.java

@@ -14,6 +14,8 @@ import com.fdkankan.manage.entity.SysMenu;
 import com.fdkankan.manage.entity.SysRole;
 import com.fdkankan.manage.entity.SysUser;
 import com.fdkankan.manage.mapper.ISysUserMapper;
+import com.fdkankan.manage.mq.common.MqQueueUtil;
+import com.fdkankan.manage.mq.param.ManageToSaleParam;
 import com.fdkankan.manage.service.ISysMenuService;
 import com.fdkankan.manage.service.ISysRoleService;
 import com.fdkankan.manage.service.ISysUserService;
@@ -21,6 +23,7 @@ import com.fdkankan.manage.vo.request.SysUserParam;
 import com.fdkankan.manage.vo.response.ManageLoginResponse;
 import com.fdkankan.manage.vo.response.SysRoleVo;
 import com.fdkankan.manage.vo.response.SysUserVo;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import org.springframework.beans.BeanUtils;
@@ -46,6 +49,8 @@ public class SysUserServiceImpl extends ServiceImpl<ISysUserMapper, SysUser> imp
     private ISysRoleService roleService;
     @Autowired
     private ISysMenuService sysMenuService;
+    @Autowired
+    RabbitMqProducer rabbitMqProducer;
 
     @Override
     public SysUser getByUserName(String userName) {
@@ -105,6 +110,9 @@ public class SysUserServiceImpl extends ServiceImpl<ISysUserMapper, SysUser> imp
                 throw new BusinessException(ResultCode.OLD_PASSWORD_ERROR);
             }
         }
+        if(sysUser.getId() != null){
+            rabbitMqProducer.sendByWorkQueue(MqQueueUtil.manageToSaleQueue,JSONObject.toJSONString(new ManageToSaleParam(MqQueueUtil.updateUserCommand,sysUser)));
+        }
         this.saveOrUpdate(sysUser);
     }
 

+ 33 - 0
src/main/java/com/fdkankan/manage/test/TestController.java

@@ -3,6 +3,13 @@ package com.fdkankan.manage.test;
 import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.regions.Regions;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.AmazonS3ClientBuilder;
+import com.amazonaws.services.s3.model.GetObjectRequest;
+import com.amazonaws.services.s3.model.S3Object;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.elasticsearch.service.DocumentService;
 import com.fdkankan.elasticsearch.service.IndexService;
@@ -15,6 +22,7 @@ import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.manage.common.FilePath;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.httpClient.service.LaserService;
+import com.fdkankan.manage.service.ICameraDetailService;
 import com.fdkankan.manage.service.ICameraService;
 import com.fdkankan.manage.service.IScenePlusService;
 import com.fdkankan.manage.service.ISceneProService;
@@ -32,6 +40,8 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.util.*;
 
+import static com.amazonaws.util.CredentialUtils.getCredentialsProvider;
+
 @Slf4j
 @RestController
 @RequestMapping("/test")
@@ -44,6 +54,8 @@ public class TestController {
     @Autowired
     ICameraService cameraService;
     @Autowired
+    ICameraDetailService cameraDetailService;
+    @Autowired
     IndexService indexService;
     @Autowired
     QueryDataService queryDataService;
@@ -83,6 +95,12 @@ public class TestController {
         return ResultData.ok();
     }
 
+    @RequestMapping("/testCameraSpaceId")
+    public ResultData testCameraSpaceId(@RequestParam(required = false) Long cameraId){
+        cameraDetailService.initSpace(cameraId);
+        return ResultData.ok();
+    }
+
 
     /**
      * 导入excel
@@ -106,4 +124,19 @@ public class TestController {
         return ResultData.ok();
     }
 
+
+    public static void main(String[] args) {
+        BasicAWSCredentials awsCreds = new BasicAWSCredentials("AKIAWCV5QFZ3ZNELKYUY", "epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws");
+        String homePath  ="scene_view_data/KJ-t-eur-DBDhqfXKYCK/data/status.json";
+
+        AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().
+                withCredentials(new AWSStaticCredentialsProvider(awsCreds))
+                .withRegion(Regions.EU_WEST_2)//s3 地区位置
+                .build();
+        boolean b = amazonS3.doesObjectExist("test-4dkankan", homePath);// Works
+        System.out.println(b);
+        GetObjectRequest request  = new GetObjectRequest("test-4dkankan",homePath);
+        S3Object object = amazonS3.getObject(request);
+        System.out.println(object);
+    }
 }

+ 20 - 0
src/main/java/com/fdkankan/manage/util/Dateutils.java

@@ -160,4 +160,24 @@ public class Dateutils {
         return endTime +" 23:59:59";
     }
 
+    public static final String DEF_FMT = "yyyy-MM-dd HH:mm:ss";
+
+    public static String AddMinute(String date, Integer minute){
+        SimpleDateFormat sdf = new SimpleDateFormat(DEF_FMT);
+        try {
+            Date time =  sdf.parse(date);
+            return AddMinute(time,minute);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return date;
+    }
+
+    public static String AddMinute(Date date, Integer minute){
+        SimpleDateFormat sdf = new SimpleDateFormat(DEF_FMT);
+        Calendar nowTime = Calendar.getInstance();
+        nowTime.setTime(date);
+        nowTime.add(Calendar.MINUTE, ~minute);
+        return sdf.format(nowTime.getTime());
+    }
 }

+ 1 - 0
src/main/java/com/fdkankan/manage/vo/response/DownOrderVo.java

@@ -42,6 +42,7 @@ public class DownOrderVo {
     @ExcelProperty("付款状态")
     private String payStatus;           //付款状态(状态,0或-1表示未付款,-2表示已退款,1表示已付款
 
+    private Integer timeZoneOff;
 
     public String getPayType() {
         switch (payType){

+ 1 - 0
src/main/java/com/fdkankan/manage/vo/response/IncrementOrderVo.java

@@ -39,6 +39,7 @@ public class IncrementOrderVo {
     @ExcelProperty("付款状态")
     private String payStatus;           //付款状态(状态,0或-1表示未付款,-2表示已退款,1表示已付款
 
+    private Integer timeZoneOff;
 
     public String getPayType() {
         switch (payType){

+ 5 - 1
src/main/java/com/fdkankan/manage/vo/response/SceneVo.java

@@ -19,7 +19,10 @@ public class SceneVo {
     private Integer payStatus;      //
     private String sceneVersion;   //场景版本
 
-    private String thumb;           //场景链接
+    private String thumb;        //封面图
+
+    private String webSite;     //场景链接
+
 
     private String algorithmTime;  //v4场景计算完成时间
 
@@ -31,4 +34,5 @@ public class SceneVo {
 
     private String dataSource;
 
+
 }

+ 4 - 0
src/main/resources/bootstrap-dev.yml

@@ -43,6 +43,10 @@ spring:
           - data-id: elasticsearch-config.yaml
             group: DEFAULT_GROUP
             refresh: true
+
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}

+ 4 - 0
src/main/resources/bootstrap-prod-eur.yml

@@ -39,6 +39,10 @@ spring:
           - data-id: elasticsearch-config.yaml
             group: DEFAULT_GROUP
             refresh: true
+
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}

+ 4 - 0
src/main/resources/bootstrap-prod.yml

@@ -39,6 +39,10 @@ spring:
           - data-id: elasticsearch-config.yaml
             group: DEFAULT_GROUP
             refresh: true
+
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}

+ 4 - 0
src/main/resources/bootstrap-test-eur.yml

@@ -39,6 +39,10 @@ spring:
           - data-id: elasticsearch-config.yaml
             group: DEFAULT_GROUP
             refresh: true
+
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}

+ 1 - 1
src/main/resources/mapper/manage/SceneMapper.xml

@@ -20,7 +20,7 @@
 
     <select id="pageList" resultType="com.fdkankan.manage.vo.response.SceneVo">
         select s.scene_name ,s.num,s.create_time,c.sn_code,s.space as sceneSize,cl.old_num,cl.create_time ,u.user_name,s.view_count,s.status,s.pay_status,
-               s.web_site as thumb ,cl.create_time  as copy_time
+               s.web_site , s.thumb ,cl.create_time  as copy_time
         from t_scene s
         left join t_scene_copy_log cl on s.num = cl.new_num
         left join t_user u on s.user_id = u.id

+ 3 - 0
src/main/resources/mapper/manage/ScenePlusMapper.xml

@@ -31,4 +31,7 @@
         </foreach>
         GROUP BY camera_id
     </select>
+    <select id="getSpaceSumByCameraId" resultType="java.lang.Long">
+        select  sum(space) from  t_scene_plus p left join t_scene_plus_ext e on p.id = e.plus_id and p.rec_status = 'A' and p.camera_id = #{cameraId}
+    </select>
 </mapper>

+ 8 - 3
src/main/resources/mapper/manage/SceneProMapper.xml

@@ -30,7 +30,7 @@
     <select id="pageList" resultType="com.fdkankan.manage.vo.response.SceneVo">
         SELECT * FROM(
         select s.scene_name ,s.num,s.create_time,c.sn_code,s.space as sceneSize
-        ,u.user_name,s.view_count,s.status,s.pay_status,'v3' as scene_version ,s.web_site as thumb
+        ,u.user_name,s.view_count,s.status,s.pay_status,'v3' as scene_version ,s.web_site , s.thumb
         ,null as algorithmTime,data_source
         from t_scene_pro s
         <include refid="commonWhere"></include>
@@ -40,7 +40,7 @@
         and is_upgrade = 0
         UNION
         select s.title as sceneName ,s.num,s.create_time,c.sn_code,e.space as sceneSize
-        ,u.user_name,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site as thumb
+        ,u.user_name,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site,e.thumb
         ,algorithm_time,data_source
         from t_scene_plus s
         left join t_scene_plus_ext e on s.id = e.plus_id
@@ -99,8 +99,13 @@
 
     <select id="getPlusSpaceGroupByCameraId" resultType="com.fdkankan.manage.vo.response.GroupByCount">
         SELECT p.camera_id as id,sum(space) as count FROM t_scene_plus p left join  t_scene_plus_ext e on p.id = e.plus_id
-        WHERE  p.rec_status = 'A'  GROUP BY p.camera_id
+        WHERE  p.rec_status = 'A' GROUP BY p.camera_id
 
     </select>
 
+    <select id="getSpaceSumByCameraId" resultType="java.lang.Long">
+        select sum(space) from t_scene_pro where rec_status= 'A' and is_upgrade = 0 and camera_id = #{cameraId}
+    </select>
+
+
 </mapper>