Browse Source

Merge branch 'v2.3.0' into test

# Conflicts:
#	src/main/java/com/fdkankan/manage/service/impl/UserIncrementServiceImpl.java
#	src/main/java/com/fdkankan/manage/util/RsaUtils.java
#	src/main/resources/mapper/manage/SceneProMapper.xml
lyhzzz 2 years ago
parent
commit
762b92bb82
100 changed files with 3397 additions and 107 deletions
  1. 23 1
      README.md
  2. 11 0
      pom.xml
  3. 3 0
      src/main/java/com/fdkankan/manage/ManageApplication.java
  4. 1 0
      src/main/java/com/fdkankan/manage/common/CacheUtil.java
  5. 4 0
      src/main/java/com/fdkankan/manage/common/RedisKeyUtil.java
  6. 12 0
      src/main/java/com/fdkankan/manage/common/ResultCode.java
  7. 26 0
      src/main/java/com/fdkankan/manage/config/ThreadPoolConfig.java
  8. 76 0
      src/main/java/com/fdkankan/manage/controller/AuthorizeCameraController.java
  9. 57 0
      src/main/java/com/fdkankan/manage/controller/AuthorizeInstallController.java
  10. 47 0
      src/main/java/com/fdkankan/manage/controller/AuthorizeModelingController.java
  11. 6 0
      src/main/java/com/fdkankan/manage/controller/CameraController.java
  12. 0 21
      src/main/java/com/fdkankan/manage/controller/IncrementOrderMgController.java
  13. 47 0
      src/main/java/com/fdkankan/manage/controller/ModelingConfigController.java
  14. 18 0
      src/main/java/com/fdkankan/manage/controller/SceneController.java
  15. 1 1
      src/main/java/com/fdkankan/manage/controller/UserController.java
  16. 135 0
      src/main/java/com/fdkankan/manage/entity/AuthorizeCamera.java
  17. 56 0
      src/main/java/com/fdkankan/manage/entity/AuthorizeCameraDetail.java
  18. 57 0
      src/main/java/com/fdkankan/manage/entity/AuthorizeCameraLog.java
  19. 122 0
      src/main/java/com/fdkankan/manage/entity/AuthorizeInstall.java
  20. 128 0
      src/main/java/com/fdkankan/manage/entity/AuthorizeModeling.java
  21. 10 3
      src/main/java/com/fdkankan/manage/entity/CameraDetail.java
  22. 177 0
      src/main/java/com/fdkankan/manage/entity/DownloadOrderMg.java
  23. 66 0
      src/main/java/com/fdkankan/manage/entity/Folder.java
  24. 5 1
      src/main/java/com/fdkankan/manage/entity/IncrementOrderMg.java
  25. 84 0
      src/main/java/com/fdkankan/manage/entity/ModelingConfig.java
  26. 72 0
      src/main/java/com/fdkankan/manage/entity/SceneColdStorage.java
  27. 81 0
      src/main/java/com/fdkankan/manage/entity/SceneColdStorageLog.java
  28. 11 0
      src/main/java/com/fdkankan/manage/entity/User.java
  29. 1 1
      src/main/java/com/fdkankan/manage/generate/AutoGenerate.java
  30. 57 4
      src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java
  31. 18 0
      src/main/java/com/fdkankan/manage/mapper/IAuthorizeCameraDetailMapper.java
  32. 18 0
      src/main/java/com/fdkankan/manage/mapper/IAuthorizeCameraLogMapper.java
  33. 18 0
      src/main/java/com/fdkankan/manage/mapper/IAuthorizeCameraMapper.java
  34. 18 0
      src/main/java/com/fdkankan/manage/mapper/IAuthorizeInstallMapper.java
  35. 18 0
      src/main/java/com/fdkankan/manage/mapper/IAuthorizeModelingMapper.java
  36. 18 0
      src/main/java/com/fdkankan/manage/mapper/IDownloadOrderMgMapper.java
  37. 18 0
      src/main/java/com/fdkankan/manage/mapper/IFolderMapper.java
  38. 18 0
      src/main/java/com/fdkankan/manage/mapper/IModelingConfigMapper.java
  39. 18 0
      src/main/java/com/fdkankan/manage/mapper/ISceneColdStorageLogMapper.java
  40. 18 0
      src/main/java/com/fdkankan/manage/mapper/ISceneColdStorageMapper.java
  41. 2 0
      src/main/java/com/fdkankan/manage/mq/common/MqQueueUtil.java
  42. 97 0
      src/main/java/com/fdkankan/manage/mq/consumer/SceneRestStoreConsumer.java
  43. 13 0
      src/main/java/com/fdkankan/manage/mq/param/SceneRestStoreVo.java
  44. 21 0
      src/main/java/com/fdkankan/manage/service/IAuthorizeCameraDetailService.java
  45. 18 0
      src/main/java/com/fdkankan/manage/service/IAuthorizeCameraLogService.java
  46. 24 0
      src/main/java/com/fdkankan/manage/service/IAuthorizeCameraService.java
  47. 22 0
      src/main/java/com/fdkankan/manage/service/IAuthorizeInstallService.java
  48. 20 0
      src/main/java/com/fdkankan/manage/service/IAuthorizeModelingService.java
  49. 2 0
      src/main/java/com/fdkankan/manage/service/ICameraService.java
  50. 1 0
      src/main/java/com/fdkankan/manage/service/ICameraTypeService.java
  51. 3 0
      src/main/java/com/fdkankan/manage/service/ICommonService.java
  52. 18 0
      src/main/java/com/fdkankan/manage/service/IDownloadOrderMgService.java
  53. 6 0
      src/main/java/com/fdkankan/manage/service/IFolderSceneService.java
  54. 16 0
      src/main/java/com/fdkankan/manage/service/IFolderService.java
  55. 6 1
      src/main/java/com/fdkankan/manage/service/IIncrementOrderMgService.java
  56. 18 0
      src/main/java/com/fdkankan/manage/service/IModelingConfigService.java
  57. 19 0
      src/main/java/com/fdkankan/manage/service/ISceneColdStorageLogService.java
  58. 25 0
      src/main/java/com/fdkankan/manage/service/ISceneColdStorageService.java
  59. 2 0
      src/main/java/com/fdkankan/manage/service/IScenePlusService.java
  60. 6 0
      src/main/java/com/fdkankan/manage/service/ISceneProService.java
  61. 2 0
      src/main/java/com/fdkankan/manage/service/IUserIncrementService.java
  62. 40 0
      src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraDetailServiceImpl.java
  63. 33 0
      src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraLogServiceImpl.java
  64. 216 0
      src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraServiceImpl.java
  65. 122 0
      src/main/java/com/fdkankan/manage/service/impl/AuthorizeInstallServiceImpl.java
  66. 70 0
      src/main/java/com/fdkankan/manage/service/impl/AuthorizeModelingServiceImpl.java
  67. 7 1
      src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java
  68. 38 5
      src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java
  69. 7 0
      src/main/java/com/fdkankan/manage/service/impl/CameraTypeServiceImpl.java
  70. 37 0
      src/main/java/com/fdkankan/manage/service/impl/CommonServiceImpl.java
  71. 3 3
      src/main/java/com/fdkankan/manage/service/impl/DownService.java
  72. 35 0
      src/main/java/com/fdkankan/manage/service/impl/DownloadOrderMgServiceImpl.java
  73. 3 0
      src/main/java/com/fdkankan/manage/service/impl/DownloadOrderServiceImpl.java
  74. 3 1
      src/main/java/com/fdkankan/manage/service/impl/ExcelServiceImpl.java
  75. 43 0
      src/main/java/com/fdkankan/manage/service/impl/FolderSceneServiceImpl.java
  76. 20 0
      src/main/java/com/fdkankan/manage/service/impl/FolderServiceImpl.java
  77. 36 14
      src/main/java/com/fdkankan/manage/service/impl/IncrementOrderMgServiceImpl.java
  78. 34 3
      src/main/java/com/fdkankan/manage/service/impl/IncrementOrderServiceImpl.java
  79. 36 0
      src/main/java/com/fdkankan/manage/service/impl/ModelingConfigServiceImpl.java
  80. 33 0
      src/main/java/com/fdkankan/manage/service/impl/SceneColdStorageLogServiceImpl.java
  81. 54 0
      src/main/java/com/fdkankan/manage/service/impl/SceneColdStorageServiceImpl.java
  82. 7 0
      src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java
  83. 131 25
      src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java
  84. 49 6
      src/main/java/com/fdkankan/manage/service/impl/UserIncrementServiceImpl.java
  85. 17 3
      src/main/java/com/fdkankan/manage/service/impl/UserServiceImpl.java
  86. 69 8
      src/main/java/com/fdkankan/manage/test/TestController.java
  87. 68 0
      src/main/java/com/fdkankan/manage/thread/ThreadService.java
  88. 27 0
      src/main/java/com/fdkankan/manage/util/CameraUtils.java
  89. 29 4
      src/main/java/com/fdkankan/manage/util/Dateutils.java
  90. 12 0
      src/main/java/com/fdkankan/manage/util/ExcelUtil.java
  91. 19 0
      src/main/java/com/fdkankan/manage/util/ListUtils.java
  92. 115 0
      src/main/java/com/fdkankan/manage/util/ProvinceUtils.java
  93. 1 1
      src/main/java/com/fdkankan/manage/util/RsaUtils.java
  94. 28 0
      src/main/java/com/fdkankan/manage/vo/request/AuthorizeParam.java
  95. 4 0
      src/main/java/com/fdkankan/manage/vo/request/CameraInOutParam.java
  96. 8 0
      src/main/java/com/fdkankan/manage/vo/request/ModelingConfigParam.java
  97. 9 0
      src/main/java/com/fdkankan/manage/vo/request/OrderParam.java
  98. 5 0
      src/main/java/com/fdkankan/manage/vo/request/UserIncrementParam.java
  99. 14 0
      src/main/java/com/fdkankan/manage/vo/response/AddressComponent.java
  100. 0 0
      src/main/java/com/fdkankan/manage/vo/response/CameraDetailVo.java

+ 23 - 1
README.md

@@ -44,4 +44,26 @@
 3.场景管理 /service/manage/scene/list
     添加参数 num      场景码查询
             timeList 拍摄时间查询
-~~~~
+~~~~
+
+###**v2.3.0** 
+~~~~
+1.新增获取全部权益使用类型
+    http://120.25.146.52:3090/project/102/interface/api/9758
+2.新增权益添加参数
+    http://120.25.146.52:3090/project/102/interface/api/5744
+3.权益订单列表添加返回,查询
+    http://120.25.146.52:3090/project/102/interface/api/5936
+4.权益详情添加返回
+    http://120.25.146.52:3090/project/102/interface/api/5738
+5.新增下载次数添加参数
+    http://120.25.146.52:3090/project/102/interface/api/5750
+6.下载订单列表添加返回,查询
+    http://120.25.146.52:3090/project/102/interface/api/5942
+7.设备列表添加返回
+    http://120.25.146.52:3090/project/102/interface/api/5768
+8.相机出库添加参数
+    http://120.25.146.52:3090/project/102/interface/api/5786
+9.本地版授权
+    http://120.25.146.52:3090/project/102/interface/api/cat_1713
+~~~~

+ 11 - 0
pom.xml

@@ -20,6 +20,11 @@
 
     <dependency>
       <groupId>com.fdkankan</groupId>
+      <artifactId>4dkankan-utils-fyun-parent</artifactId>
+      <version>3.0.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fdkankan</groupId>
       <artifactId>4dkankan-utils-fyun-oss</artifactId>
       <version>3.0.0-SNAPSHOT</version>
     </dependency>
@@ -162,6 +167,12 @@
       <version>3.0.0-SNAPSHOT</version>
     </dependency>
 
+    <dependency>
+      <groupId>com.fdkankan</groupId>
+      <artifactId>4dkankan-utils-reg</artifactId>
+      <version>3.0.0-SNAPSHOT</version>
+    </dependency>
+
   </dependencies>
 
   <build>

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

@@ -31,6 +31,8 @@ public class ManageApplication implements CommandLineRunner {
     private String publicKey;
     @Value("${camera.snCode.privateKey:1}")
     private String privateKey;
+    @Value("${laser.reg.env:UAT}")
+    private String laserRegEnv;
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
@@ -44,6 +46,7 @@ public class ManageApplication implements CommandLineRunner {
         CacheUtil.cameraSpaceNum = cameraSpaceNum;
         CacheUtil.publicKey = publicKey;
         CacheUtil.privateKey = privateKey;
+        CacheUtil.laserRegEnv = laserRegEnv;
 
     }
 }

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

@@ -11,6 +11,7 @@ public class CacheUtil {
     public static String cameraSpaceNum;
     public static String publicKey;
     public static String privateKey;
+    public static String laserRegEnv;
     public static OrderParam orderParam = new OrderParam();
     public static AgentNewLogParam agentParam = new AgentNewLogParam();
 

+ 4 - 0
src/main/java/com/fdkankan/manage/common/RedisKeyUtil.java

@@ -6,6 +6,10 @@ public class RedisKeyUtil {
     public static final String SCENE_UNUSED_NUMS = "4dkankan:scene:nums";
     public static final String SCENE_NUMS_LOADING = "4dkankan:scene:nums:loading";
     public static final String loginNum= "manage:login:userName:%s:ip:%s";
+    public static final String gpsKey= "manage:gps:%s";
+    public static final String numGpsKey= "manage:num:gps:%s";
+    public static final String numShootKey= "manage:shoot:num:%s";
+    public static final String restStoreKey= "manage:reststore:%s";
 
     public static final String loginToken= "manage:login:token:%s";
     public static final String SCENE_COOPERATION_NUM_USERID = "scene:cooperation:num:userId";

+ 12 - 0
src/main/java/com/fdkankan/manage/common/ResultCode.java

@@ -72,6 +72,18 @@ public enum ResultCode  {
     MOVE_ERROR(50055, "原始资源不存在,不能迁移!"),
     MOVE_ERROR_COPY(50055, "复制场景,不能迁移!"),
     COPY_NUM_NOTREBUILD(50056, "复制的场景不支持重算!"),
+    READ_MACHINE_CODE_ERROR(50057, "读取机器码失败!"),
+    GET_MACHINE_CODE_ERROR(50058, "获取授权码失败!"),
+    RECOED_NO_EXITS(50058, "记录不存在!"),
+    MACHINE_CODE_EXITS(50059, "当前设备已存在授权记录!"),
+    UPDATE_CAMERA_NO_IN(50060, "替换的sn未入库!"),
+    UPDATE_CAMERA_ERROR(50061, "替换的sn重复!"),
+    SCENE_NOT_STORE(50062, "当前场景原始资源不需要解冻!"),
+    SCENE_STORE_ING(50063, "正在解冻请稍候!"),
+    CAMERA_SN_EXITS(50064, "授权相机sn重复!"),
+    MACHINE_CODE_ERROR(50065, "机器码错误!"),
+    SCENE_REBUILD_ERROR2(50066, "原始资源已冻结,重算失败。"),
+    CAMERA_AUTHORIZE_ERROR(50067, "相机授权目前不支持四维看看相机类型"),
 
     ;
 

+ 26 - 0
src/main/java/com/fdkankan/manage/config/ThreadPoolConfig.java

@@ -0,0 +1,26 @@
+package com.fdkankan.manage.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+
+@Configuration
+@EnableAsync
+public class ThreadPoolConfig {
+
+    @Bean("taskExecutor")
+    public Executor taskExecutor() {
+        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
+        taskExecutor.setCorePoolSize(10);
+        taskExecutor.setMaxPoolSize(50);
+        taskExecutor.setQueueCapacity(200);
+        taskExecutor.setKeepAliveSeconds(60);
+        taskExecutor.setThreadNamePrefix("Thread-");
+        taskExecutor.setAwaitTerminationSeconds(60);
+        return taskExecutor;
+    }
+}
+

+ 76 - 0
src/main/java/com/fdkankan/manage/controller/AuthorizeCameraController.java

@@ -0,0 +1,76 @@
+package com.fdkankan.manage.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.entity.AuthorizeCamera;
+import com.fdkankan.manage.entity.AuthorizeCameraLog;
+import com.fdkankan.manage.entity.AuthorizeInstall;
+import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.service.IAuthorizeCameraLogService;
+import com.fdkankan.manage.service.IAuthorizeCameraService;
+import com.fdkankan.manage.service.IAuthorizeInstallService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@RestController
+@RequestMapping("/service/manage/authorizeCamera")
+public class AuthorizeCameraController {
+
+    @Autowired
+    IAuthorizeCameraService authorizeCameraService;
+    @Autowired
+    IAuthorizeCameraLogService authorizeCameraLogService;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody AuthorizeParam param){
+        return ResultData.ok(authorizeCameraService.pageList(param));
+    }
+
+    @PostMapping("/addOrUpdate")
+    public ResultData addOrUpdate(@RequestBody AuthorizeCamera param){
+
+        return ResultData.ok(authorizeCameraService.addOrUpdate(param));
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody AuthorizeCamera param){
+        if(param.getId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        authorizeCameraService.removeById(param.getId());
+        return ResultData.ok();
+    }
+
+    @GetMapping("/detail/{id}")
+    public ResultData detail(@PathVariable Integer id){
+
+        return ResultData.ok(authorizeCameraService.detail(id));
+    }
+
+    @GetMapping("/snUpdateLog/{id}")
+    public ResultData snUpdateLog(@PathVariable Integer id){
+        LambdaQueryWrapper<AuthorizeCameraLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AuthorizeCameraLog::getAuthorizeCameraId,id);
+        wrapper.orderByDesc(AuthorizeCameraLog::getCreateTime);
+        return ResultData.ok(authorizeCameraLogService.list(wrapper));
+    }
+
+    @GetMapping("/updateSnCode/{detailId}/{snCode}")
+    public ResultData updateSnCode(@PathVariable Integer detailId,
+                             @PathVariable String snCode){
+
+        return ResultData.ok(authorizeCameraService.updateSnCode(detailId,snCode));
+    }
+}
+

+ 57 - 0
src/main/java/com/fdkankan/manage/controller/AuthorizeInstallController.java

@@ -0,0 +1,57 @@
+package com.fdkankan.manage.controller;
+
+
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.entity.AuthorizeInstall;
+import com.fdkankan.manage.entity.AuthorizeModeling;
+import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.service.IAuthorizeInstallService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@RestController
+@RequestMapping("/service/manage/authorizeInstall")
+public class AuthorizeInstallController {
+
+    @Autowired
+    IAuthorizeInstallService authorizeInstallService;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody AuthorizeParam param){
+        return ResultData.ok(authorizeInstallService.pageList(param));
+    }
+
+    @PostMapping("/addOrUpdate")
+    public ResultData addOrUpdate(@RequestBody AuthorizeInstall param){
+        return ResultData.ok(authorizeInstallService.addOrUpdate(param));
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody AuthorizeInstall param){
+        if(param.getId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        authorizeInstallService.removeById(param.getId());
+        return ResultData.ok();
+    }
+
+    @PostMapping("/checkMachineCode")
+    public ResultData checkMachineCode(@RequestBody AuthorizeInstall param){
+        if(StringUtils.isBlank(param.getMachineCode())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        return ResultData.ok(authorizeInstallService.checkMachineCode(param.getMachineCode()));
+    }
+}
+

+ 47 - 0
src/main/java/com/fdkankan/manage/controller/AuthorizeModelingController.java

@@ -0,0 +1,47 @@
+package com.fdkankan.manage.controller;
+
+
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.entity.AuthorizeModeling;
+import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.service.IAuthorizeModelingService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@RestController
+@RequestMapping("/service/manage/authorizeModeling")
+public class AuthorizeModelingController {
+
+    @Autowired
+    IAuthorizeModelingService authorizeModelingService;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody AuthorizeParam param){
+        return ResultData.ok(authorizeModelingService.pageList(param));
+    }
+
+    @PostMapping("/addOrUpdate")
+    public ResultData addOrUpdate(@RequestBody AuthorizeModeling param){
+        return ResultData.ok( authorizeModelingService.addOrUpdate(param));
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody AuthorizeModeling param){
+        if(param.getId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        authorizeModelingService.removeById(param.getId());
+        return ResultData.ok();
+    }
+}
+

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

@@ -95,5 +95,11 @@ public class CameraController {
         cameraService.deleteCamera(param.getId());
         return ResultData.ok();
     }
+
+    @PostMapping("/updateCameraType")
+    public ResultData updateCameraType(@RequestBody CameraInOutParam param) {
+        cameraService.updateCameraType(param);
+        return ResultData.ok();
+    }
 }
 

+ 0 - 21
src/main/java/com/fdkankan/manage/controller/IncrementOrderMgController.java

@@ -1,21 +0,0 @@
-package com.fdkankan.manage.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 增值权益订单表 前端控制器
- * </p>
- *
- * @author 
- * @since 2023-07-06
- */
-@RestController
-@RequestMapping("/service/manage/incrementOrderMg")
-public class IncrementOrderMgController {
-
-}
-

+ 47 - 0
src/main/java/com/fdkankan/manage/controller/ModelingConfigController.java

@@ -0,0 +1,47 @@
+package com.fdkankan.manage.controller;
+
+
+import com.fdkankan.manage.common.Result;
+import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.entity.ModelingConfig;
+import com.fdkankan.manage.service.IModelingConfigService;
+import com.fdkankan.manage.vo.request.ModelingConfigParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-14
+ */
+@RestController
+@RequestMapping("/service/manage/modelingConfig")
+public class ModelingConfigController {
+
+    @Autowired
+    IModelingConfigService modelingConfigService;
+
+    @PostMapping("/list")
+    public ResultData list(@RequestBody ModelingConfigParam param){
+        return ResultData.ok(modelingConfigService.pageList(param));
+    }
+
+    @PostMapping("/saveOrUpdate")
+    public ResultData saveOrUpdate(@RequestBody ModelingConfig param){
+        return ResultData.ok(modelingConfigService.saveOrUpdate(param));
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody ModelingConfig param){
+        return ResultData.ok(modelingConfigService.removeById(param));
+    }
+
+}
+

+ 18 - 0
src/main/java/com/fdkankan/manage/controller/SceneController.java

@@ -130,5 +130,23 @@ public class SceneController {
         sceneProService.rebuildScene(num);
         return ResultData.ok();
     }
+
+    /**
+     * 解冻
+     * num      场景码
+     */
+    @GetMapping("/restStore")
+    public ResultData restStore(@RequestParam(required = false) String num){
+        sceneProService.restStore(num);
+        return ResultData.ok();
+    }
+    /**
+     * 获取解冻进度
+     * num      场景码
+     */
+    @GetMapping("/getRestStoreProcess")
+    public ResultData getRestStoreProcess(@RequestParam(required = false) String num){
+        return ResultData.ok(sceneProService.getRestStoreProcess(num));
+    }
 }
 

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

@@ -94,7 +94,7 @@ public class UserController {
      */
     @PostMapping("/addDownNum")
     public ResultData addDownNum(@RequestBody UserIncrementParam param){
-        if(param.getUserId() == null || param.getCount() == null){
+        if(param.getUserId() == null || param.getCount() == null || param.getDownType() == null){
             throw  new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
         userService.addDownNum(param);

+ 135 - 0
src/main/java/com/fdkankan/manage/entity/AuthorizeCamera.java

@@ -0,0 +1,135 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Getter
+@Setter
+@TableName("t_authorize_camera")
+public class AuthorizeCamera implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 本地算法授权
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户名称
+     */
+    @TableField("customer_name")
+    private String customerName;
+
+    /**
+     * 客户类别0直销,1经销
+     */
+    @TableField("customer_type")
+    private Integer customerType;
+
+    /**
+     * 终端客户
+     */
+    @TableField("end_customer")
+    private String endCustomer;
+
+    /**
+     * 使用类型
+     */
+    @TableField("use_type")
+    private Integer useType;
+
+    /**
+     * 项目号
+     */
+    @TableField(value = "project_num",updateStrategy = FieldStrategy.IGNORED)
+    private String projectNum;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 机器码
+     */
+    @TableField("machine_code")
+    private String machineCode;
+
+    /**
+     * 机器UUID
+     */
+    @TableField("machine_uuid")
+    private String machineUuid;
+
+
+    /**
+     * 相机snCodes
+     */
+    @TableField(exist = false)
+    private String snCodes;
+
+    /**
+     * 相机数量
+     */
+    @TableField("camera_num")
+    private Integer cameraNum;
+
+    /**
+     * 授权key
+     */
+    @TableField("authorize_key")
+    private String authorizeKey;
+
+    /**
+     * 创建人
+     */
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField(exist = false)
+    private String sysUserName;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private String useTypeStr;
+
+
+    public String getUseTypeStr() {
+        if(useType == null){
+            return "";
+        }
+        switch (useType){
+            case 1 : return "项目实施";
+            case 2 : return "客户试用";
+            case 3 : return "内部测试";
+            case 4 : return "正常销售";
+            case 5 : return "渠道推广";
+            case 6 : return "其它";
+            default: return "";
+        }
+    }
+}

+ 56 - 0
src/main/java/com/fdkankan/manage/entity/AuthorizeCameraDetail.java

@@ -0,0 +1,56 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Getter
+@Setter
+@TableName("t_authorize_camera_detail")
+public class AuthorizeCameraDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("authorize_camera_id")
+    private Integer authorizeCameraId;
+
+    @TableField("sn_code")
+    private String snCode;
+
+    @TableField("camera_id")
+    private Long cameraId;
+
+    @TableField("camera_type")
+    private Integer cameraType;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private String cameraTypeStr;
+
+}

+ 57 - 0
src/main/java/com/fdkankan/manage/entity/AuthorizeCameraLog.java

@@ -0,0 +1,57 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-10
+ */
+@Getter
+@Setter
+@TableName("t_authorize_camera_log")
+public class AuthorizeCameraLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("authorize_camera_id")
+    private Integer authorizeCameraId;
+
+    @TableField("detail_id")
+    private Integer detailId;
+
+    @TableField("old_sn_code")
+    private String oldSnCode;
+
+    @TableField("new_sn_code")
+    private String newSnCode;
+
+    @TableField("update_authorize_key")
+    private String updateAuthorizeKey;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 122 - 0
src/main/java/com/fdkankan/manage/entity/AuthorizeInstall.java

@@ -0,0 +1,122 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Getter
+@Setter
+@TableName("t_authorize_install")
+public class AuthorizeInstall implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 本地算法授权
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户名称
+     */
+    @TableField("customer_name")
+    private String customerName;
+
+    /**
+     * 客户类别0直销,1经销
+     */
+    @TableField("customer_type")
+    private Integer customerType;
+
+    /**
+     * 终端客户
+     */
+    @TableField("end_customer")
+    private String endCustomer;
+
+    /**
+     * 使用类型
+     */
+    @TableField("use_type")
+    private Integer useType;
+
+    /**
+     * 项目号
+     */
+    @TableField(value = "project_num",updateStrategy = FieldStrategy.IGNORED)
+    private String projectNum;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 机器码
+     */
+    @TableField("machine_code")
+    private String machineCode;
+
+    /**
+     * 机器UUID
+     */
+    @TableField("machine_uuid")
+    private String machineUuid;
+
+    /**
+     * 授权key
+     */
+    @TableField("authorize_key")
+    private String authorizeKey;
+
+    /**
+     * 创建人
+     */
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField(exist = false)
+    private String sysUserName;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private String useTypeStr;
+
+
+    public String getUseTypeStr() {
+        if(useType == null){
+            return "";
+        }
+        switch (useType){
+            case 1 : return "项目实施";
+            case 2 : return "客户试用";
+            case 3 : return "内部测试";
+            case 4 : return "正常销售";
+            case 5 : return "渠道推广";
+            case 6 : return "其它";
+            default: return "";
+        }
+    }
+}

+ 128 - 0
src/main/java/com/fdkankan/manage/entity/AuthorizeModeling.java

@@ -0,0 +1,128 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Getter
+@Setter
+@TableName("t_authorize_modeling")
+public class AuthorizeModeling implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 本地算法授权
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户名称
+     */
+    @TableField("customer_name")
+    private String customerName;
+
+    /**
+     * 客户类别0直销,1经销
+     */
+    @TableField("customer_type")
+    private Integer customerType;
+
+    /**
+     * 终端客户
+     */
+    @TableField("end_customer")
+    private String endCustomer;
+
+    /**
+     * 使用类型
+     */
+    @TableField("use_type")
+    private Integer useType;
+
+    /**
+     * 项目号
+     */
+    @TableField(value = "project_num",updateStrategy = FieldStrategy.IGNORED)
+    private String projectNum;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 授权key
+     */
+    @TableField("authorize_key")
+    private String authorizeKey;
+
+    /**
+     * 授权期限
+     */
+    @TableField("authorize_time")
+    private Integer authorizeTime;
+    /**
+     * 授权期限单位
+     */
+    @TableField("authorize_time_unit")
+    private Integer authorizeTimeUnit;
+
+    /**
+     * 授权说明
+     */
+    @TableField("authorize_info")
+    private String authorizeInfo;
+
+    /**
+     * 创建人
+     */
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField(exist = false)
+    private String sysUserName;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private String useTypeStr;
+
+
+    public String getUseTypeStr() {
+        if(useType == null){
+            return "";
+        }
+        switch (useType){
+            case 1 : return "项目实施";
+            case 2 : return "客户试用";
+            case 3 : return "内部测试";
+            case 4 : return "正常销售";
+            case 5 : return "渠道推广";
+            case 6 : return "其它";
+            default: return "";
+        }
+    }
+}

+ 10 - 3
src/main/java/com/fdkankan/manage/entity/CameraDetail.java

@@ -5,6 +5,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -45,7 +46,7 @@ public class CameraDetail implements Serializable {
     /**
      * 订单号
      */
-    @TableField("order_sn")
+    @TableField(value = "order_sn",updateStrategy = FieldStrategy.IGNORED)
     private String orderSn;
 
     /**
@@ -93,7 +94,7 @@ public class CameraDetail implements Serializable {
     /**
      * 企业表t_company的id
      */
-    @TableField("company_id")
+    @TableField(value = "company_id",updateStrategy = FieldStrategy.IGNORED)
     private Long companyId;
 
     /**
@@ -132,6 +133,12 @@ public class CameraDetail implements Serializable {
     private String outTime;
 
     /**
+     * 购买时间
+     */
+    @TableField("buy_date")
+    private Date buyDate;
+
+    /**
      * 记录的状态,A: 生效,I: 禁用
      */
     @TableField("rec_status")
@@ -147,7 +154,7 @@ public class CameraDetail implements Serializable {
     @TableField("last_request_time")
     private String lastRequestTime;
 
-    @TableField("agent_id")
+    @TableField(value = "agent_id",updateStrategy = FieldStrategy.IGNORED)
     private Integer agentId;
 
     @TableField("unit")

+ 177 - 0
src/main/java/com/fdkankan/manage/entity/DownloadOrderMg.java

@@ -0,0 +1,177 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 下载次数订单表
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Getter
+@Setter
+@TableName("t_download_order_mg")
+public class DownloadOrderMg implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    @TableField("order_sn")
+    private String orderSn;
+
+    /**
+     * 金额
+     */
+    @TableField("amount")
+    private BigDecimal amount;
+
+    /**
+     * 支付宝的交易号或者微信支付订单号
+     */
+    @TableField("number")
+    private String number;
+
+    /**
+     * 付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他
+     */
+    @TableField("pay_type")
+    private Integer payType;
+
+    /**
+     * 状态,0或-1表示未付款,-2表示已退款,1表示已付款
+     */
+    @TableField("pay_status")
+    private Integer payStatus;
+
+    /**
+     * 状态,1增加下载次数
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 交易时间
+     */
+    @TableField("trade_time")
+    private Date tradeTime;
+
+    /**
+     * 用户表t_user的id
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 购买数量
+     */
+    @TableField("count")
+    private Integer count;
+
+    /**
+     * 0表示国内订单,1表示国外订单
+     */
+    @TableField("abroad")
+    private Integer abroad;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 记录的状态,A: 生效,I: 禁用
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 场景码
+     */
+    @TableField("scene_num")
+    private String sceneNum;
+
+    /**
+     * 场景名
+     */
+    @TableField("scene_name")
+    private String sceneName;
+
+    /**
+     * 时区差,单位分钟
+     */
+    @TableField("time_zone_off")
+    private Integer timeZoneOff;
+
+    /**
+     * 客户名称
+     */
+    @TableField("customer_name")
+    private String customerName;
+
+    /**
+     * 客户类别0直销,1经销
+     */
+    @TableField("customer_type")
+    private Integer customerType;
+
+    /**
+     * 终端客户
+     */
+    @TableField("end_customer")
+    private String endCustomer;
+
+    /**
+     * 使用类型
+     */
+    @TableField("use_type")
+    private Integer useType;
+
+    /**
+     * 项目号
+     */
+    @TableField("project_num")
+    private String projectNum;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+    /**
+     * 下载类型 0看看,1深时
+     */
+    @TableField("down_type")
+    private Integer downType;
+
+    /**
+     * 经销商名称
+     */
+    @TableField("agent_name")
+    private String agentName;
+
+
+}

+ 66 - 0
src/main/java/com/fdkankan/manage/entity/Folder.java

@@ -0,0 +1,66 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 文件夹表
+ * </p>
+ *
+ * @author 
+ * @since 2023-08-02
+ */
+@Getter
+@Setter
+@TableName("t_folder")
+public class Folder implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 文件夹名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 文件夹类型,0看看我的场景,1看看协作场景,2看见我的场景,3看见协作场景
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 上层文件夹id
+     */
+    @TableField("parent_id")
+    private Long parentId;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 5 - 1
src/main/java/com/fdkankan/manage/entity/IncrementOrderMg.java

@@ -167,6 +167,10 @@ public class IncrementOrderMg implements Serializable {
      */
     @TableField("remark")
     private String remark;
-
+    /**
+     * 经销商名称
+     */
+    @TableField("agent_name")
+    private String agentName;
 
 }

+ 84 - 0
src/main/java/com/fdkankan/manage/entity/ModelingConfig.java

@@ -0,0 +1,84 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-14
+ */
+@Getter
+@Setter
+@TableName("t_modeling_config")
+public class ModelingConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 相机类型
+     */
+    @TableField("camera_name")
+    private String cameraName;
+
+    /**
+     * 1看看,9看见,10深时,11深光
+     */
+    @TableField("camera_type")
+    private Integer cameraType;
+
+    /**
+     * 1看看,3看见,4深时,5深光
+     */
+    @TableField("scene_source")
+    private Integer sceneSource;
+
+    @TableField("modelkind")
+    private String modelkind;
+
+    @TableField("scene_resolution")
+    private String sceneResolution;
+
+    @TableField("scene_from")
+    private String sceneFrom;
+
+    @TableField("scene_kind")
+    private String sceneKind;
+
+    @TableField("split_type")
+    private String splitType;
+
+    @TableField("skybox_type")
+    private String skyboxType;
+
+    @TableField("app_obj_split_type")
+    private String appObjSplitType;
+
+    @TableField("pc_obj_split_type")
+    private String pcObjSplitType;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 72 - 0
src/main/java/com/fdkankan/manage/entity/SceneColdStorage.java

@@ -0,0 +1,72 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 场景封存状态表
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+@Getter
+@Setter
+@TableName("t_scene_cold_storage")
+public class SceneColdStorage implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 1-封存,2-未封存
+     */
+    @TableField("state")
+    private Integer state;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+    /**
+     * 冷存储bucket
+     */
+    @TableField("cold_bucket")
+    private String coldBucket;
+
+    /**
+     * 正常使用bucket
+     */
+    @TableField("bucket")
+    private String bucket;
+
+
+}

+ 81 - 0
src/main/java/com/fdkankan/manage/entity/SceneColdStorageLog.java

@@ -0,0 +1,81 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 场景冷归档日志表
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+@Getter
+@Setter
+@TableName("t_scene_cold_storage_log")
+public class SceneColdStorageLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 封存地址
+     */
+    @TableField("path")
+    private String path;
+
+    /**
+     * 操作类型(1-封存,2-解封存)
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 0-处理中,1-成功,-1-失败
+     */
+    @TableField("state")
+    private Integer state;
+
+    /**
+     * 失败原因
+     */
+    @TableField("reason")
+    private String reason;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * A-有效,I-无效
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A",delval = "I")
+    private String recStatus;
+
+
+}

+ 11 - 0
src/main/java/com/fdkankan/manage/entity/User.java

@@ -114,6 +114,17 @@ public class User implements Serializable {
      */
     @TableField("download_num")
     private Integer downloadNum;
+    /**
+     * 可下载场景总数
+     */
+    @TableField("ss_download_num_total")
+    private Integer ssDownloadNumTotal;
+
+    /**
+     * 已下载场景总数
+     */
+    @TableField("ss_download_num")
+    private Integer ssDownloadNum;
 
     /**
      * 创建时间

+ 1 - 1
src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"manage", getTables(new String[]{
-                "t_increment_use_type",
+                "t_folder"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 57 - 4
src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java

@@ -1,17 +1,15 @@
 package com.fdkankan.manage.httpClient.service;
 import cn.hutool.core.bean.BeanUtil;
+import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.mq.common.MqQueueUtil;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
+import com.fdkankan.redis.util.RedisUtil;
 import com.google.common.collect.Lists;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.manage.common.*;
-import com.fdkankan.manage.entity.Camera;
-import com.fdkankan.manage.entity.CameraDetail;
-import com.fdkankan.manage.entity.SceneBuildProcessLog;
-import com.fdkankan.manage.entity.User;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.httpClient.client.LaserClient;
 import com.fdkankan.manage.httpClient.param.LaserSceneMoveParam;
@@ -54,7 +52,17 @@ public class LaserService {
     @Autowired
     IScenePlusService scenePlusService;
     @Autowired
+    IScenePlusExtService scenePlusExtService;
+    @Autowired
     RabbitMqProducer rabbitMqProducer;
+    @Autowired
+    ICommonService commonService;
+    @Autowired
+    ISceneProService sceneProService;
+    @Autowired
+    RedisUtil redisUtil;
+    @Autowired
+    ISceneColdStorageService sceneColdStorageService;
 
 
     public PageInfo pageList(SceneParam param) {
@@ -98,9 +106,24 @@ public class LaserService {
                         vo.setDataSource(scenePlusService.getDataSourceByNum(vo.getNum()));
                     }
                 }
+                this.getLaserSceneGps(vo);
+                vo.setAddressComponent(commonService.getAddressComponent(vo.getGps()));
                 sceneVoList.add(vo);
             }
 
+            HashMap<String,SceneColdStorage> coldStorageMap = null;
+            if(sceneVoList.size() >0){
+                List<String> numList = sceneVoList.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
+                coldStorageMap = sceneColdStorageService.getByNumList(numList);
+            }
+            for (SceneVo sceneVo : sceneVoList) {
+                if(coldStorageMap != null){
+                    SceneColdStorage sceneColdStorage = coldStorageMap.get(sceneVo.getNum());
+                    if(sceneColdStorage != null){
+                        sceneVo.setIsColdStorage(true);
+                    }
+                }
+            }
             Page<SceneVo> voPage = new Page<>(param.getPageNum(),param.getPageSize());
             voPage.setRecords(sceneVoList);
             voPage.setTotal(total);
@@ -113,6 +136,36 @@ public class LaserService {
         return PageInfo.PageInfo(voPage);
     }
 
+
+    private void getLaserSceneGps(SceneVo vo) {
+//        String redisKey = String.format(RedisKeyUtil.numGpsKey, vo.getNum());
+//        String redisKey2 = String.format(RedisKeyUtil.numShootKey, vo.getNum());
+//        if(redisUtil.hasKey(redisKey) && redisUtil.hasKey(redisKey2)){
+//            String gps = redisUtil.get(redisKey);
+//            String shootNum = redisUtil.get(redisKey2);
+//            vo.setGps(gps);
+//            vo.setShootCount(Integer.valueOf(shootNum));
+//            return;
+//        }
+        ScenePro pro = sceneProService.getByNum(vo.getNum());
+        if(pro != null){
+            //redisUtil.set(redisKey,pro.getGps()== null ?"":pro.getGps());
+            //redisUtil.set(redisKey2,String.valueOf(pro.getShootCount()== null ? 0 :pro.getShootCount()));
+            vo.setGps(pro.getGps());
+            vo.setShootCount(pro.getShootCount());
+        }
+        ScenePlus plus = scenePlusService.getByNum(vo.getNum());
+        if(plus != null){
+            ScenePlusExt ext = scenePlusExtService.getByPlusId(plus.getId());
+            if(ext != null){
+                //redisUtil.set(redisKey,ext.getGps()== null?"":ext.getGps());
+               // redisUtil.set(redisKey2,String.valueOf(ext.getShootCount()== null ? 0 :ext.getShootCount()));
+                vo.setGps(ext.getGps());
+                vo.setShootCount(ext.getShootCount());
+            }
+        }
+    }
+
     private LaserSceneParam getLaserSceneParam(SceneParam param) {
         LaserSceneParam newParam = new LaserSceneParam();
         if(param.getCompanyId()!= null){ //客户场景

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IAuthorizeCameraDetailMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.AuthorizeCameraDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Mapper
+public interface IAuthorizeCameraDetailMapper extends BaseMapper<AuthorizeCameraDetail> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IAuthorizeCameraLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.AuthorizeCameraLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-10
+ */
+@Mapper
+public interface IAuthorizeCameraLogMapper extends BaseMapper<AuthorizeCameraLog> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IAuthorizeCameraMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.AuthorizeCamera;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Mapper
+public interface IAuthorizeCameraMapper extends BaseMapper<AuthorizeCamera> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IAuthorizeInstallMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.AuthorizeInstall;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Mapper
+public interface IAuthorizeInstallMapper extends BaseMapper<AuthorizeInstall> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IAuthorizeModelingMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.AuthorizeModeling;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Mapper
+public interface IAuthorizeModelingMapper extends BaseMapper<AuthorizeModeling> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IDownloadOrderMgMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.DownloadOrderMg;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 下载次数订单表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Mapper
+public interface IDownloadOrderMgMapper extends BaseMapper<DownloadOrderMg> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IFolderMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.Folder;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 文件夹表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-08-02
+ */
+@Mapper
+public interface IFolderMapper extends BaseMapper<Folder> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/IModelingConfigMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.ModelingConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-14
+ */
+@Mapper
+public interface IModelingConfigMapper extends BaseMapper<ModelingConfig> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/ISceneColdStorageLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.SceneColdStorageLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景冷归档日志表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+@Mapper
+public interface ISceneColdStorageLogMapper extends BaseMapper<SceneColdStorageLog> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/ISceneColdStorageMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.SceneColdStorage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 场景封存状态表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+@Mapper
+public interface ISceneColdStorageMapper extends BaseMapper<SceneColdStorage> {
+
+}

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

@@ -6,5 +6,7 @@ public class MqQueueUtil {
     public static String updateUserCommand = "updateUser";
 
     public static String ucenterScenePayStatusQueue = "scene-pay-status";
+    public static String sceneRestoreQueue = "scene-rest-store";
+    public static String laserUnfreezeScene = "laser-unfreeze-scene";
     public static String laserMoveQueue = "laser-migrate-scene";
 }

+ 97 - 0
src/main/java/com/fdkankan/manage/mq/consumer/SceneRestStoreConsumer.java

@@ -0,0 +1,97 @@
+package com.fdkankan.manage.mq.consumer;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.manage.common.RedisKeyUtil;
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.mq.param.SceneRestStoreVo;
+import com.fdkankan.manage.service.ISceneColdStorageLogService;
+import com.fdkankan.manage.service.ISceneColdStorageService;
+import com.fdkankan.manage.service.ISceneProService;
+import com.fdkankan.manage.thread.ThreadService;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
+import com.fdkankan.redis.util.RedisUtil;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * 场景解冻 mq
+ */
+@Slf4j
+@Component
+public class SceneRestStoreConsumer {
+
+    @Autowired
+    FYunFileServiceInterface fYunFileServiceInterface;
+    @Autowired
+    RedisUtil redisUtil;
+    @Autowired
+    ISceneColdStorageService sceneColdStorageService;
+    @Autowired
+    ISceneColdStorageLogService sceneColdStorageLogService;
+    @Autowired
+    ISceneProService sceneProService;
+
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.scene.rest-store:scene-rest-store}"),
+            concurrency = "1"
+    )
+    public void consumerQueue(Channel channel, Message message) throws IOException {
+        try {
+            String messageId = message.getMessageProperties().getMessageId();
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("scene-restStore-mq--messageId:{},msg:{}",messageId,msg);
+
+            SceneRestStoreVo sceneRestStoreVo = JSONObject.parseObject(msg, SceneRestStoreVo.class);
+            String num = sceneRestStoreVo.getNum();
+            String cloudBucket= sceneRestStoreVo.getCloudBucket();
+            String bucket= sceneRestStoreVo.getBucket();
+            String folderName= sceneRestStoreVo.getFolderName();
+            String redisKey = String.format(RedisKeyUtil.restStoreKey, num);
+
+            try {
+                fYunFileServiceInterface.restoreFolder(cloudBucket,folderName,1);
+            }catch (Exception e){
+                log.info("scene-restStore-mq-error:",e);
+            }
+            Long startTime = new Date().getTime();
+            Integer process = fYunFileServiceInterface.getRestoreFolderProcess(cloudBucket, folderName);
+            log.info("scene-restStore-mq-cloudBucket:{},bucket:{},folderName:{},process:{}",cloudBucket,bucket,folderName,process);
+            while (process != 100 ){
+                Long time = new Date().getTime();
+                if(time - startTime >1000 * 60 * 10){
+                    startTime = time;
+                    process = fYunFileServiceInterface.getRestoreFolderProcess(cloudBucket, folderName);
+                    log.info("scene-restStore-mq-cloudBucket:{},bucket:{},folderName:{},process:{}",cloudBucket,bucket,folderName,process);
+                }
+            }
+            fYunFileServiceInterface.copyFileBetweenBucket(cloudBucket,folderName,bucket,folderName);
+            log.info("Tscene-restStore-mq-copy-bucket");
+            sceneColdStorageService.updateStatus(num,2);
+            sceneColdStorageLogService.saveLog(num,folderName);
+            sceneProService.restStoreSuccess(num);
+            redisUtil.del(redisKey);
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+        }catch (Exception e){
+            log.info("scene-restStore----消费失败",e);
+        }finally {
+
+        }
+
+    }
+
+}

+ 13 - 0
src/main/java/com/fdkankan/manage/mq/param/SceneRestStoreVo.java

@@ -0,0 +1,13 @@
+package com.fdkankan.manage.mq.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class SceneRestStoreVo {
+    private String num ;
+    private String cloudBucket;
+    private String bucket;
+    private String folderName;
+}

+ 21 - 0
src/main/java/com/fdkankan/manage/service/IAuthorizeCameraDetailService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.AuthorizeCameraDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+public interface IAuthorizeCameraDetailService extends IService<AuthorizeCameraDetail> {
+
+    List<AuthorizeCameraDetail> getByCameraId(Integer id);
+
+    void updateSnCode(Integer id, Long cameraId,Integer cameraType,String snCode);
+}

+ 18 - 0
src/main/java/com/fdkankan/manage/service/IAuthorizeCameraLogService.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.AuthorizeCameraDetail;
+import com.fdkankan.manage.entity.AuthorizeCameraLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-10
+ */
+public interface IAuthorizeCameraLogService extends IService<AuthorizeCameraLog> {
+
+    AuthorizeCameraLog saveLog(AuthorizeCameraDetail cameraDetail, String snCode, String authorizeKey);
+}

+ 24 - 0
src/main/java/com/fdkankan/manage/service/IAuthorizeCameraService.java

@@ -0,0 +1,24 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.AuthorizeCamera;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+public interface IAuthorizeCameraService extends IService<AuthorizeCamera> {
+
+    Object pageList(AuthorizeParam param);
+
+    AuthorizeCamera addOrUpdate(AuthorizeCamera param);
+
+    Object detail(Integer id);
+
+    Object updateSnCode(Integer detailId, String snCode);
+}

+ 22 - 0
src/main/java/com/fdkankan/manage/service/IAuthorizeInstallService.java

@@ -0,0 +1,22 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.AuthorizeInstall;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+public interface IAuthorizeInstallService extends IService<AuthorizeInstall> {
+
+    Object pageList(AuthorizeParam param);
+
+    AuthorizeInstall addOrUpdate(AuthorizeInstall param);
+
+    AuthorizeInstall checkMachineCode(String machineCode);
+}

+ 20 - 0
src/main/java/com/fdkankan/manage/service/IAuthorizeModelingService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.AuthorizeModeling;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+public interface IAuthorizeModelingService extends IService<AuthorizeModeling> {
+
+    Object pageList(AuthorizeParam param);
+
+    AuthorizeModeling addOrUpdate(AuthorizeModeling param);
+}

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

@@ -41,4 +41,6 @@ public interface ICameraService extends IService<Camera> {
     Integer updateCompany(List<CameraInOutParam> companyParams);
 
     void initAllCameraSpace(Long userId);
+
+    void updateCameraType(CameraInOutParam param);
 }

+ 1 - 0
src/main/java/com/fdkankan/manage/service/ICameraTypeService.java

@@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ICameraTypeService extends IService<CameraType> {
 
+    CameraType getByType(Integer cameraType);
 }

+ 3 - 0
src/main/java/com/fdkankan/manage/service/ICommonService.java

@@ -2,6 +2,8 @@ package com.fdkankan.manage.service;
 
 import com.fdkankan.manage.common.ResultData;
 import java.io.IOException;
+
+import com.fdkankan.manage.vo.response.AddressComponent;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -17,4 +19,5 @@ public interface ICommonService {
     ResultData uploadFile(MultipartFile file) throws IOException;
 
 
+    AddressComponent getAddressComponent(String gps);
 }

+ 18 - 0
src/main/java/com/fdkankan/manage/service/IDownloadOrderMgService.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.DownloadOrderMg;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.UserIncrementParam;
+
+/**
+ * <p>
+ * 下载次数订单表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+public interface IDownloadOrderMgService extends IService<DownloadOrderMg> {
+
+    DownloadOrderMg addOrder(UserIncrementParam param);
+}

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

@@ -3,6 +3,8 @@ package com.fdkankan.manage.service;
 import com.fdkankan.manage.entity.FolderScene;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 文件夹和场景关联表 服务类
@@ -14,4 +16,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IFolderSceneService extends IService<FolderScene> {
 
     void delBySceneId(Long sceneId);
+
+    void delBySceneId(List<Long> sceneId);
+
+    void delByCameraId(Long cameraId);
 }

+ 16 - 0
src/main/java/com/fdkankan/manage/service/IFolderService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.Folder;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 文件夹表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-08-02
+ */
+public interface IFolderService extends IService<Folder> {
+
+}

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

@@ -2,6 +2,7 @@ package com.fdkankan.manage.service;
 
 import com.fdkankan.manage.entity.IncrementOrderMg;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.entity.IncrementType;
 import com.fdkankan.manage.vo.request.UserIncrementParam;
 
 /**
@@ -14,5 +15,9 @@ import com.fdkankan.manage.vo.request.UserIncrementParam;
  */
 public interface IIncrementOrderMgService extends IService<IncrementOrderMg> {
 
-    void addOrder(UserIncrementParam param);
+    IncrementOrderMg addOrder(UserIncrementParam param, IncrementType incrementType);
+
+    IncrementOrderMg getByOrderSn(String orderSn);
+
+    IncrementOrderMg getByIncrementId(Long id);
 }

+ 18 - 0
src/main/java/com/fdkankan/manage/service/IModelingConfigService.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.ModelingConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.ModelingConfigParam;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-14
+ */
+public interface IModelingConfigService extends IService<ModelingConfig> {
+
+    Object pageList(ModelingConfigParam param);
+}

+ 19 - 0
src/main/java/com/fdkankan/manage/service/ISceneColdStorageLogService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.SceneColdStorageLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * <p>
+ * 场景冷归档日志表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+public interface ISceneColdStorageLogService extends IService<SceneColdStorageLog> {
+
+    void saveLog(String num, String folderName);
+}

+ 25 - 0
src/main/java/com/fdkankan/manage/service/ISceneColdStorageService.java

@@ -0,0 +1,25 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.SceneColdStorage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.entity.SceneCopyLog;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 场景封存状态表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+public interface ISceneColdStorageService extends IService<SceneColdStorage> {
+
+    SceneColdStorage getByNum(String num);
+
+    void updateStatus(String num, Integer i);
+
+    HashMap<String, SceneColdStorage> getByNumList(List<String> numList);
+}

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

@@ -31,4 +31,6 @@ public interface IScenePlusService extends IService<ScenePlus> {
     Long getSpaceSumByCameraId(Long cameraId);
 
     Long getCountByCameraId(Long cameraId);
+
+    List<ScenePlus> getListByCameraId(Long cameraId);
 }

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

@@ -58,4 +58,10 @@ public interface ISceneProService extends IService<ScenePro> {
     Long getSpaceSumByCameraId(Long cameraId);
 
     Long getCountByCameraId(Long cameraId);
+
+    void restStore(String num);
+
+    Object getRestStoreProcess(String num);
+
+    void restStoreSuccess(String num);
 }

+ 2 - 0
src/main/java/com/fdkankan/manage/service/IUserIncrementService.java

@@ -36,4 +36,6 @@ public interface IUserIncrementService extends IService<UserIncrement> {
 
 
     void delAgentId(Integer agentId);
+
+    List<UserIncrement> getByOrderSn(String orderSn);
 }

+ 40 - 0
src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraDetailServiceImpl.java

@@ -0,0 +1,40 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.manage.entity.AuthorizeCameraDetail;
+import com.fdkankan.manage.mapper.IAuthorizeCameraDetailMapper;
+import com.fdkankan.manage.service.IAuthorizeCameraDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Service
+public class AuthorizeCameraDetailServiceImpl extends ServiceImpl<IAuthorizeCameraDetailMapper, AuthorizeCameraDetail> implements IAuthorizeCameraDetailService {
+
+    @Override
+    public List<AuthorizeCameraDetail> getByCameraId(Integer id) {
+        LambdaQueryWrapper<AuthorizeCameraDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AuthorizeCameraDetail::getAuthorizeCameraId,id);
+        return list(wrapper);
+    }
+
+    @Override
+    public void updateSnCode(Integer id, Long cameraId,Integer cameraType,String snCode) {
+        LambdaUpdateWrapper<AuthorizeCameraDetail> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(AuthorizeCameraDetail::getId,id);
+        wrapper.set(AuthorizeCameraDetail::getSnCode,snCode);
+        wrapper.set(AuthorizeCameraDetail::getCameraType,cameraType);
+        wrapper.set(AuthorizeCameraDetail::getCameraId,cameraId);
+        this.update(wrapper);
+    }
+}

+ 33 - 0
src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraLogServiceImpl.java

@@ -0,0 +1,33 @@
+package com.fdkankan.manage.service.impl;
+import java.util.Date;
+
+import com.fdkankan.manage.entity.AuthorizeCameraDetail;
+import com.fdkankan.manage.entity.AuthorizeCameraLog;
+import com.fdkankan.manage.mapper.IAuthorizeCameraLogMapper;
+import com.fdkankan.manage.service.IAuthorizeCameraLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-10
+ */
+@Service
+public class AuthorizeCameraLogServiceImpl extends ServiceImpl<IAuthorizeCameraLogMapper, AuthorizeCameraLog> implements IAuthorizeCameraLogService {
+
+    @Override
+    public AuthorizeCameraLog saveLog(AuthorizeCameraDetail cameraDetail, String snCode, String authorizeKey) {
+        AuthorizeCameraLog authorizeCameraLog = new AuthorizeCameraLog();
+        authorizeCameraLog.setAuthorizeCameraId(cameraDetail.getAuthorizeCameraId());
+        authorizeCameraLog.setDetailId(cameraDetail.getId());
+        authorizeCameraLog.setOldSnCode(cameraDetail.getSnCode());
+        authorizeCameraLog.setNewSnCode(snCode);
+        authorizeCameraLog.setUpdateAuthorizeKey(authorizeKey);
+        this.save(authorizeCameraLog);
+        return authorizeCameraLog;
+    }
+}

+ 216 - 0
src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraServiceImpl.java

@@ -0,0 +1,216 @@
+package com.fdkankan.manage.service.impl;
+import java.util.Date;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.util.SecurityUtil;
+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.mapper.IAuthorizeCameraMapper;
+import com.fdkankan.manage.service.*;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.util.CameraUtils;
+import com.fdkankan.manage.util.ListUtils;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+import com.fdkankan.reg.RegCodeUtil;
+import com.fdkankan.reg.dto.CamRegDto;
+import com.fdkankan.reg.dto.CamRegSDto;
+import com.fdkankan.reg.dto.MachineRegDto;
+import jdk.internal.dynalink.linker.LinkerServices;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Service
+@Slf4j
+public class AuthorizeCameraServiceImpl extends ServiceImpl<IAuthorizeCameraMapper, AuthorizeCamera> implements IAuthorizeCameraService {
+
+    @Autowired
+    IAuthorizeCameraDetailService authorizeCameraDetailService;
+    @Autowired
+    IAuthorizeCameraLogService authorizeCameraLogService;
+    @Autowired
+    ISysUserService sysUserService;
+    @Autowired
+    ICameraService cameraService;
+    @Autowired
+    ICameraDetailService cameraDetailService;
+
+    @Override
+    public Object pageList(AuthorizeParam param) {
+        LambdaQueryWrapper<AuthorizeCamera> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getCustomerName())){
+            wrapper.like(AuthorizeCamera::getCustomerName,param.getCustomerName());
+        }
+        if(param.getCustomerType() != null){
+            wrapper.eq(AuthorizeCamera::getCustomerType,param.getCustomerType());
+        }
+        if(param.getUseType() != null){
+            wrapper.eq(AuthorizeCamera::getUseType,param.getUseType());
+        }
+        if(StringUtils.isNotBlank(param.getAuthorizeKey())){
+            wrapper.like(AuthorizeCamera::getAuthorizeKey,param.getAuthorizeKey());
+        }
+        if(StringUtils.isNotBlank(param.getMachineUuid())){
+            wrapper.like(AuthorizeCamera::getMachineUuid,param.getMachineUuid());
+        }
+        wrapper.orderByDesc(AuthorizeCamera::getCreateTime);
+        Page<AuthorizeCamera> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        Set<Long> sysIds = page.getRecords().stream().map(AuthorizeCamera::getSysUserId).collect(Collectors.toSet());
+        HashMap<Long, SysUser> userMap = sysUserService.getByIds(sysIds);
+        for (AuthorizeCamera record : page.getRecords()) {
+            if(userMap.get(record.getSysUserId())!=null){
+                record.setSysUserName(userMap.get(record.getSysUserId()).getNickName());
+            }
+            String snCodes  = "";
+            List<AuthorizeCameraDetail> details = authorizeCameraDetailService.getByCameraId(record.getId());
+            for (AuthorizeCameraDetail detail : details) {
+                snCodes += detail.getSnCode()+ "\n";
+            }
+            record.setSnCodes(snCodes);
+        }
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public AuthorizeCamera addOrUpdate(AuthorizeCamera param) {
+        param.setSysUserId(Long.valueOf((String) StpUtil.getLoginId()));
+        HashMap<String,AuthorizeCameraDetail> detailHashMap = new HashMap<>();
+        if(param.getId() == null){
+            //获取机器UUID,机器名称
+            MachineRegDto machineRegDto = null;
+            try {
+                 machineRegDto = RegCodeUtil.builder().env(CacheUtil.laserRegEnv).build().ParseMachineCode(param.getMachineCode());
+            }catch (Exception e){
+                throw new BusinessException(ResultCode.MACHINE_CODE_ERROR);
+            }
+            if(machineRegDto == null){
+                throw new BusinessException(ResultCode.READ_MACHINE_CODE_ERROR);
+            }
+
+            param.setMachineUuid( machineRegDto.getUuid());
+            try {
+                CamRegSDto dtos = new CamRegSDto();
+                dtos.setMachineCode(param.getMachineCode());
+                dtos.setTimestamp(new Date().getTime());
+                List<CamRegDto> camRegs = new ArrayList<>();
+                String[] split = param.getSnCodes().split("\n");
+                if(ListUtils.checkForDuplicates(split)){
+                    throw new BusinessException(ResultCode.CAMERA_SN_EXITS);
+                }
+                for (String snCode : split) {
+                    if(StringUtils.isBlank(snCode)){
+                        continue;
+                    }
+                    snCode = snCode.toUpperCase();
+                    CamRegDto camRegDto = new CamRegDto();
+                    camRegDto.setSn(snCode);
+                    Camera camera = cameraService.getBySnCode(snCode);
+                    if(camera == null){
+                        throw new BusinessException(ResultCode.CAMERA_SN_NOT_EXIST);
+                    }
+                    CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
+                    if(cameraDetail == null){
+                        throw new BusinessException(ResultCode.CAMERA_SN_NOT_EXIST);
+                    }
+                    if(cameraDetail.getType() != 9 && cameraDetail.getType() !=10 && cameraDetail.getType() !=11){
+                        throw new BusinessException(ResultCode.CAMERA_AUTHORIZE_ERROR);
+                    }
+                    camRegDto.setCameraType(cameraDetail.getType());
+                    camRegs.add(camRegDto);
+                    AuthorizeCameraDetail detail = new AuthorizeCameraDetail();
+                    detail.setSnCode(snCode);
+                    detail.setCameraId(camera.getId());
+                    detail.setCameraType(CameraUtils.getCameraType(cameraDetail.getType()));
+                    detail.setCameraTypeStr(CameraUtils.getCameraTypeStr(detail.getCameraType()));
+                    detailHashMap.put(snCode,detail);
+                }
+                param.setCameraNum(detailHashMap.size());
+                dtos.setCamRegs(camRegs);
+                String authorizeKey =  RegCodeUtil.builder().env(CacheUtil.laserRegEnv).build().batchGenRegeditCamCode(dtos);
+                if(StringUtils.isBlank(authorizeKey)){
+                    throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
+                }
+                param.setAuthorizeKey(authorizeKey);
+            }catch (Exception e){
+                log.info("授权相机:error:",e);
+                throw e;
+            }
+        }
+        this.saveOrUpdate(param);
+        for (AuthorizeCameraDetail detail : detailHashMap.values()) {
+            detail.setAuthorizeCameraId(param.getId());
+            authorizeCameraDetailService.save(detail);
+        }
+        return param;
+    }
+
+    @Override
+    public Object detail(Integer id) {
+        AuthorizeCamera authorizeCamera = this.getById(id);
+        if(authorizeCamera == null){
+            throw new BusinessException(ResultCode.RECOED_NO_EXITS);
+        }
+        return authorizeCameraDetailService.getByCameraId(id);
+    }
+
+    @Override
+    public Object updateSnCode(Integer detailId, String snCode) {
+        snCode = snCode.toUpperCase();
+        AuthorizeCameraDetail cameraDetail = authorizeCameraDetailService.getById(detailId);
+        if(cameraDetail == null){
+            throw new BusinessException(ResultCode.RECOED_NO_EXITS);
+        }
+        AuthorizeCamera authorizeCamera = this.getById(cameraDetail.getAuthorizeCameraId());
+        if(authorizeCamera == null){
+            throw new BusinessException(ResultCode.RECOED_NO_EXITS);
+        }
+        if(cameraDetail.getSnCode().toUpperCase().equals(snCode)){
+            throw new BusinessException(ResultCode.UPDATE_CAMERA_ERROR);
+        }
+        Camera bySnCode = cameraService.getBySnCode(snCode);
+        if(bySnCode == null){
+            throw new BusinessException(ResultCode.UPDATE_CAMERA_NO_IN);
+        }
+        CameraDetail byCameraId = cameraDetailService.getByCameraId(bySnCode.getId());
+        if(byCameraId == null){
+            throw new BusinessException(ResultCode.UPDATE_CAMERA_NO_IN);
+        }
+        try {
+            CamRegSDto dtos = new CamRegSDto();
+            dtos.setMachineCode(authorizeCamera.getMachineCode());
+            dtos.setTimestamp(new Date().getTime());
+            List<CamRegDto> camRegs = new ArrayList<>();
+            CamRegDto camRegDto = new CamRegDto();
+            camRegDto.setSn(cameraDetail.getSnCode());
+            camRegDto.setToSn(snCode);
+            camRegs.add(camRegDto);
+            dtos.setCamRegs(camRegs);
+            String authorizeKey =  RegCodeUtil.builder().env(CacheUtil.laserRegEnv).build().batchGenRegeditCamCode(dtos);
+            if(StringUtils.isBlank(authorizeKey)){
+                throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
+            }
+            AuthorizeCameraLog authorizeCameraLog = authorizeCameraLogService.saveLog(cameraDetail, snCode, authorizeKey);
+            authorizeCameraDetailService.updateSnCode(cameraDetail.getId(),bySnCode.getId(),CameraUtils.getCameraType(byCameraId.getType()),snCode);
+            return authorizeCameraLog;
+        }catch (Exception e){
+            throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
+        }
+    }
+}

+ 122 - 0
src/main/java/com/fdkankan/manage/service/impl/AuthorizeInstallServiceImpl.java

@@ -0,0 +1,122 @@
+package com.fdkankan.manage.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.common.CacheUtil;
+import com.fdkankan.manage.common.PageInfo;
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.entity.AuthorizeInstall;
+import com.fdkankan.manage.entity.SysUser;
+import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.mapper.IAuthorizeInstallMapper;
+import com.fdkankan.manage.service.IAuthorizeInstallService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.service.ISysUserService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+import com.fdkankan.reg.RegCodeUtil;
+import com.fdkankan.reg.dto.MachineRegDto;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Service
+public class AuthorizeInstallServiceImpl extends ServiceImpl<IAuthorizeInstallMapper, AuthorizeInstall> implements IAuthorizeInstallService {
+
+    @Autowired
+    ISysUserService sysUserService;
+
+    @Override
+    public Object pageList(AuthorizeParam param) {
+        LambdaQueryWrapper<AuthorizeInstall> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getCustomerName())){
+            wrapper.like(AuthorizeInstall::getCustomerName,param.getCustomerName());
+        }
+        if(param.getCustomerType() != null){
+            wrapper.eq(AuthorizeInstall::getCustomerType,param.getCustomerType());
+        }
+        if(param.getUseType() != null){
+            wrapper.eq(AuthorizeInstall::getUseType,param.getUseType());
+        }
+        if(StringUtils.isNotBlank(param.getAuthorizeKey())){
+            wrapper.like(AuthorizeInstall::getAuthorizeKey,param.getAuthorizeKey());
+        }
+        if(StringUtils.isNotBlank(param.getMachineUuid())){
+            wrapper.like(AuthorizeInstall::getMachineUuid,param.getMachineUuid());
+        }
+        wrapper.orderByDesc(AuthorizeInstall::getCreateTime);
+        Page<AuthorizeInstall> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        Set<Long> sysIds = page.getRecords().stream().map(AuthorizeInstall::getSysUserId).collect(Collectors.toSet());
+        HashMap<Long, SysUser> userMap = sysUserService.getByIds(sysIds);
+        for (AuthorizeInstall record : page.getRecords()) {
+            if(userMap.get(record.getSysUserId())!=null){
+                record.setSysUserName(userMap.get(record.getSysUserId()).getNickName());
+            }
+        }
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public AuthorizeInstall addOrUpdate(AuthorizeInstall param) {
+        param.setSysUserId(Long.valueOf((String) StpUtil.getLoginId()));
+        if(param.getId() == null){
+            //获取机器UUID,机器名称
+            MachineRegDto machineRegDto = RegCodeUtil.builder().env(CacheUtil.laserRegEnv).build().ParseMachineCode(param.getMachineCode());
+            if(machineRegDto == null){
+                throw new BusinessException(ResultCode.READ_MACHINE_CODE_ERROR);
+            }
+            param.setMachineUuid( machineRegDto.getUuid());
+            try {
+                String authorizeKey = RegCodeUtil.builder().env(CacheUtil.laserRegEnv).build().GenRegeditCode(param.getMachineCode());
+                if(StringUtils.isBlank(authorizeKey)){
+                    throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
+                }
+                param.setAuthorizeKey(authorizeKey);
+            }catch (Exception e){
+                throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
+            }
+        }
+        this.saveOrUpdate(param);
+        return param;
+    }
+
+    @Override
+    public AuthorizeInstall checkMachineCode(String machineCode) {
+        LambdaQueryWrapper<AuthorizeInstall> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AuthorizeInstall::getMachineCode,machineCode);
+        List<AuthorizeInstall> list = this.list(wrapper);
+        if(list!=null && list.size() >0){
+            return list.get(0);
+        }
+        MachineRegDto machineRegDto = null;
+        try {
+            machineRegDto = RegCodeUtil.builder().env(CacheUtil.laserRegEnv).build().ParseMachineCode(machineCode);
+        }catch (Exception e){
+            throw new BusinessException(ResultCode.MACHINE_CODE_ERROR);
+        }
+        if(machineRegDto == null){
+            throw new BusinessException(ResultCode.READ_MACHINE_CODE_ERROR);
+        }
+        String uuid = machineRegDto.getUuid();
+        LambdaQueryWrapper<AuthorizeInstall> wrapper2 = new LambdaQueryWrapper<>();
+        wrapper2.eq(AuthorizeInstall::getMachineUuid,uuid);
+        List<AuthorizeInstall> list2 = this.list(wrapper2);
+        if(list2!=null && list2.size() >0){
+            return list2.get(0);
+        }
+        return null;
+    }
+}

+ 70 - 0
src/main/java/com/fdkankan/manage/service/impl/AuthorizeModelingServiceImpl.java

@@ -0,0 +1,70 @@
+package com.fdkankan.manage.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.common.PageInfo;
+import com.fdkankan.manage.entity.AuthorizeCamera;
+import com.fdkankan.manage.entity.AuthorizeModeling;
+import com.fdkankan.manage.entity.SysUser;
+import com.fdkankan.manage.mapper.IAuthorizeModelingMapper;
+import com.fdkankan.manage.service.IAuthorizeModelingService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.service.ISysUserService;
+import com.fdkankan.manage.vo.request.AuthorizeParam;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Service
+public class AuthorizeModelingServiceImpl extends ServiceImpl<IAuthorizeModelingMapper, AuthorizeModeling> implements IAuthorizeModelingService {
+
+    @Autowired
+    ISysUserService sysUserService;
+
+    @Override
+    public Object pageList(AuthorizeParam param) {
+        LambdaQueryWrapper<AuthorizeModeling> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getCustomerName())){
+            wrapper.like(AuthorizeModeling::getCustomerName,param.getCustomerName());
+        }
+        if(param.getCustomerType() != null){
+            wrapper.eq(AuthorizeModeling::getCustomerType,param.getCustomerType());
+        }
+        if(param.getUseType() != null){
+            wrapper.eq(AuthorizeModeling::getUseType,param.getUseType());
+        }
+        if(StringUtils.isNotBlank(param.getAuthorizeKey())){
+            wrapper.like(AuthorizeModeling::getAuthorizeKey,param.getAuthorizeKey());
+        }
+        wrapper.orderByDesc(AuthorizeModeling::getCreateTime);
+        Page<AuthorizeModeling> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        Set<Long> sysIds = page.getRecords().stream().map(AuthorizeModeling::getSysUserId).collect(Collectors.toSet());
+        HashMap<Long, SysUser> userMap = sysUserService.getByIds(sysIds);
+        for (AuthorizeModeling record : page.getRecords()) {
+            if(userMap.get(record.getSysUserId())!=null){
+                record.setSysUserName(userMap.get(record.getSysUserId()).getNickName());
+            }
+        }
+        return PageInfo.PageInfo(page);
+    }
+
+    @Override
+    public AuthorizeModeling addOrUpdate(AuthorizeModeling param) {
+        param.setSysUserId(Long.valueOf((String) StpUtil.getLoginId()));
+        this.saveOrUpdate(param);
+        return  param;
+    }
+}

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

@@ -51,6 +51,8 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     IUserIncrementService userIncrementService;
     @Autowired
     IIncrementTypeService incrementTypeService;
+    @Autowired
+    IFolderSceneService folderSceneService;
 
 
     @Override
@@ -83,7 +85,8 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         if(!"local".equals(CacheUtil.uploadType) && cameraDetail.getType() !=10){
             sceneProService.lockOrUnLockBySpace(cameraDetail,cameraId,-2);     //封存场景
         }
-
+        //解绑删除相机。文件夹与场景绑定关系
+        folderSceneService.delByCameraId(cameraId);
     }
 
     @Override
@@ -261,6 +264,9 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
     @Override
     public Boolean checkSpace(CameraDetail detailEntity, Long space) {
+        if(detailEntity.getType() == 10 || detailEntity.getType() == 11){
+            return true;
+        }
         UserIncrement userIncrement = userIncrementService.getByCameraId(detailEntity.getCameraId());
         if(userIncrement == null || userIncrement.getIsExpired() == 1){
             return checkSpace(detailEntity,null,space);

+ 38 - 5
src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java

@@ -237,6 +237,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         List<Integer> errorIndexList = new ArrayList<>();
         Set<String> wifiNameSet = new HashSet<>();
         Integer index = 0;
+        List<String> snCodes = new ArrayList<>();
         for (String wifiName : wifiNameList) {
             index ++;
             if(StringUtils.isBlank(wifiName)){
@@ -253,11 +254,16 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             }
             String[] split = wifiName.split("_");
             String cameraPrefix = split[0] +"_";
-
+            String snCode = split[1];
             if(!wifiNamePrefixList.contains(cameraPrefix)){
                 errorIndexList.add(index);
                 continue;
             }
+            if(snCodes.contains(snCode)){
+                errorIndexList.add(index);
+                continue;
+            }
+            snCodes.add(snCode);
             wifiNameSet.add(wifiName);
         }
         return errorIndexList;
@@ -351,9 +357,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             if(cameraDetail == null){
                 throw new BusinessException(ResultCode.CAMERA_NOT_IN);
             }
-            if(param.getAgentId() != null){
-                cameraDetail.setAgentId(param.getAgentId());
-            }
+            cameraDetail.setAgentId(param.getAgentId());
+            cameraDetail.setBuyDate(Dateutils.getDate(param.getBuyDate()));
             cameraDetail.setOrderSn(param.getOrderSn());
             cameraDetail.setOwn(param.getOutType());
             cameraDetail.setCompanyId(param.getCompanyId());
@@ -445,7 +450,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         }
         CameraDetail cameraDetail = cameraDetailService.getByCameraId(id);
         if(cameraDetail !=null && cameraDetail.getUserId()!=null){
-            throw new BusinessException(ResultCode.CAMERA_DEL_ERROR);
+            this.unbindCamera(cameraDetail.getCameraId());
         }
         this.removeById(id);
         cameraDetailService.deleteByCameraId(id);
@@ -563,4 +568,32 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         }
 
     }
+
+    @Override
+    public void updateCameraType(CameraInOutParam param) {
+        if(param.getId() == null || param.getCameraType() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera camera = this.getById(param.getId());
+        if(camera == null){
+            throw new BusinessException(ResultCode.CAMERA_NOT_EXIST);
+        }
+        CameraType cameraType = cameraTypeService.getByType(param.getCameraType());
+        if(cameraType == null){
+            throw new BusinessException(ResultCode.CAMERA_TYPE_ERROR);
+        }
+        LambdaUpdateWrapper<Camera> cameraLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        cameraLambdaUpdateWrapper.eq(Camera::getId,param.getId());
+        cameraLambdaUpdateWrapper.set(Camera::getWifiName,cameraType.getWifiNamePrefix()+ camera.getSnCode());
+        this.update(cameraLambdaUpdateWrapper);
+
+
+        LambdaUpdateWrapper<CameraDetail> wrapper  = new LambdaUpdateWrapper<>();
+        wrapper.eq(CameraDetail::getCameraId,param.getId());
+        wrapper.set(CameraDetail::getType,param.getCameraType());
+        wrapper.set(CameraDetail::getGoodsId,param.getCameraType() == 1? 4: param.getCameraType());
+        cameraDetailService.update(wrapper);
+
+
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.manage.entity.CameraType;
 import com.fdkankan.manage.mapper.ICameraTypeMapper;
 import com.fdkankan.manage.service.ICameraTypeService;
@@ -17,4 +18,10 @@ import org.springframework.stereotype.Service;
 @Service
 public class CameraTypeServiceImpl extends ServiceImpl<ICameraTypeMapper, CameraType> implements ICameraTypeService {
 
+    @Override
+    public CameraType getByType(Integer cameraType) {
+        LambdaQueryWrapper<CameraType> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CameraType::getCameraType, cameraType);
+        return this.getOne(wrapper);
+    }
 }

+ 37 - 0
src/main/java/com/fdkankan/manage/service/impl/CommonServiceImpl.java

@@ -1,7 +1,9 @@
 package com.fdkankan.manage.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.manage.common.OssPath;
+import com.fdkankan.manage.common.RedisKeyUtil;
 import com.fdkankan.manage.common.ResultData;
 import com.fdkankan.common.util.DateExtUtil;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
@@ -10,6 +12,12 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Calendar;
 import java.util.UUID;
+
+import com.fdkankan.manage.util.ProvinceUtils;
+import com.fdkankan.manage.vo.response.AddressComponent;
+import com.fdkankan.manage.vo.response.GpsVo;
+import com.fdkankan.redis.util.RedisUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -32,6 +40,8 @@ public class CommonServiceImpl implements ICommonService {
     private String ossUrlPrefix;
    @Autowired
     private FYunFileServiceInterface fYunFileServiceInterface;
+   @Autowired
+    RedisUtil redisUtil;
 
     @Override
     public ResultData uploadFile(MultipartFile file) throws IOException {
@@ -48,4 +58,31 @@ public class CommonServiceImpl implements ICommonService {
         return ResultData.ok(url);
 
     }
+
+    @Override
+    public AddressComponent getAddressComponent(String gps){
+        if(StringUtils.isNotBlank(gps)){
+            GpsVo gpsVo = JSONObject.parseObject(gps, GpsVo.class);
+            if(gpsVo!=null && StringUtils.isNotBlank(gpsVo.getLatitude()) && StringUtils.isNotBlank(gpsVo.getAltitude())){
+                String points = gpsVo.getLongitude()+","+gpsVo.getLatitude();
+                String rediskey = String.format(RedisKeyUtil.gpsKey, points);
+                AddressComponent addressComponent = null;
+                if(redisUtil.hasKey(rediskey)){
+                    String s = redisUtil.get(rediskey);
+                    if(StringUtils.isNotBlank(s)){
+                        addressComponent = JSONObject.parseObject(s, AddressComponent.class);
+                    }
+                }else {
+                    addressComponent = ProvinceUtils.pointsToLocationsAll(points);
+                    if(addressComponent != null){
+                        redisUtil.set(String.format(RedisKeyUtil.gpsKey,points),JSONObject.toJSONString(addressComponent));
+                    }else {
+                        redisUtil.set(String.format(RedisKeyUtil.gpsKey,points),"");
+                    }
+                }
+                return addressComponent;
+            }
+        }
+        return null;
+    }
 }

+ 3 - 3
src/main/java/com/fdkankan/manage/service/impl/DownService.java

@@ -56,7 +56,7 @@ public class DownService implements IDownService {
         }
         Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : plus.getSceneSource();
         log.info("checkDownLoad--sceneType:{},isObj:{}",sceneType,isObj);
-        if(sceneType == 4 && isObj !=1){ //深时场景
+        if((sceneType == 4 || sceneType == 5) && isObj !=1){ //深时场景
             return SSCheckDownload(sceneNum);
         }
         SceneDownloadLog sceneDownloadLog;
@@ -125,7 +125,7 @@ public class DownService implements IDownService {
 
         Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : scenePlus.getSceneSource();
         log.info("down--sceneType:{},isObj:{}",sceneType,isObj);
-        if(sceneType == 4 && isObj !=1){ //深时场景
+        if((sceneType == 4 || sceneType == 5) && isObj !=1){ //深时场景
             return SSDownload(sceneNum,userId);
         }
 
@@ -166,7 +166,7 @@ public class DownService implements IDownService {
         }
         Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : scenePlus.getSceneSource();
         log.info("downloadProcess--sceneType:{},isObj:{}",sceneType,isObj);
-        if(sceneType == 4 && isObj !=1){ //深时场景
+        if((sceneType == 4 || sceneType == 5) && isObj !=1){ //深时场景
             return SSDownloadProcess(sceneNum);
         }
         String redisKey = RedisKey.PREFIX_DOWNLOAD_PROGRESS;

+ 35 - 0
src/main/java/com/fdkankan/manage/service/impl/DownloadOrderMgServiceImpl.java

@@ -0,0 +1,35 @@
+package com.fdkankan.manage.service.impl;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.fdkankan.manage.entity.DownloadOrder;
+import com.fdkankan.manage.entity.DownloadOrderMg;
+import com.fdkankan.manage.mapper.IDownloadOrderMgMapper;
+import com.fdkankan.manage.service.IDownloadOrderMgService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.util.Dateutils;
+import com.fdkankan.manage.vo.request.UserIncrementParam;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 下载次数订单表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-07
+ */
+@Service
+public class DownloadOrderMgServiceImpl extends ServiceImpl<IDownloadOrderMgMapper, DownloadOrderMg> implements IDownloadOrderMgService {
+
+    @Override
+    public DownloadOrderMg addOrder(UserIncrementParam param) {
+        DownloadOrderMg downloadOrder = new DownloadOrderMg();
+        BeanUtil.copyProperties(param,downloadOrder);
+        downloadOrder.setOrderSn(Dateutils.getOrderSn());
+        downloadOrder.setPayStatus(1);
+        this.save(downloadOrder);
+        return downloadOrder;
+    }
+}

+ 3 - 0
src/main/java/com/fdkankan/manage/service/impl/DownloadOrderServiceImpl.java

@@ -68,6 +68,9 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
             if(record.getTimeZoneOff() != null){
                 tradeTime = Dateutils.AddMinute(record.getTradeTime(),record.getTimeZoneOff());
             }
+            if(StringUtils.isNotBlank(record.getSnCode())){
+                record.setDownTypeStr(snCodeMap.get(record.getSnCode()));
+            }
             record.setCreateTime(tradeTime);
         }
         return page;

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

@@ -124,8 +124,9 @@ public class ExcelServiceImpl implements IExcelService {
                 String companyName = map.get(2);
                 String orderSn = map.get(3);
                 String agentName = map.get(4);
+                String buyDate = map.get(5);
                 CameraOutTypeEnum outTypeEnum = CameraOutTypeEnum.getByMsg(outTypeString);
-                if(outTypeEnum == null || StringUtils.isBlank(snCode)){
+                if(outTypeEnum == null || StringUtils.isBlank(snCode) || StringUtils.isBlank(buyDate)){
                     log.error("outError-->出库错误:出库类型为空或snCode为空:snCode:{},outType:{},companyName:{},orderSn:{},agentName:{}"
                             ,snCode,outTypeString,companyName,orderSn,agentName);
                     errorIndex.add(index -3);
@@ -135,6 +136,7 @@ public class ExcelServiceImpl implements IExcelService {
                     int outType = outTypeEnum.getCode();
                     param.setOutType(outType);
                 }
+                param.setBuyDate(buyDate);
                 if(StringUtils.isNotBlank(agentName)){
                     AgentNew agentNew = agentNewService.getByName(agentName);
                     if(agentNew == null){

+ 43 - 0
src/main/java/com/fdkankan/manage/service/impl/FolderSceneServiceImpl.java

@@ -2,11 +2,20 @@ package com.fdkankan.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.manage.entity.FolderScene;
+import com.fdkankan.manage.entity.ScenePlus;
+import com.fdkankan.manage.entity.ScenePro;
 import com.fdkankan.manage.mapper.IFolderSceneMapper;
 import com.fdkankan.manage.service.IFolderSceneService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.service.IScenePlusService;
+import com.fdkankan.manage.service.ISceneProService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 文件夹和场景关联表 服务实现类
@@ -18,10 +27,44 @@ import org.springframework.stereotype.Service;
 @Service
 public class FolderSceneServiceImpl extends ServiceImpl<IFolderSceneMapper, FolderScene> implements IFolderSceneService {
 
+    @Autowired
+    ISceneProService sceneProService;
+    @Autowired
+    IScenePlusService scenePlusService;
+
     @Override
     public void delBySceneId(Long sceneId) {
         LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(FolderScene::getSceneId,sceneId);
         this.remove(wrapper);
     }
+    public void delBySceneId(List<Long> sceneIds) {
+        if(sceneIds.size() >0){
+            LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(FolderScene::getSceneId,sceneIds);
+            this.remove(wrapper);
+        }
+    }
+
+    @Override
+    public void delByCameraId(Long cameraId) {
+        List<ScenePro> proList = sceneProService.getListByCameraId(cameraId);
+        List<ScenePlus> plusList = scenePlusService.getListByCameraId(cameraId);
+        List<Long> sceneIds = new ArrayList<>();
+        if (proList.size() > 0) {
+            List<Long> proIds = proList.stream().map(ScenePro::getId).collect(Collectors.toList());
+            if (proIds.size() > 0) {
+                sceneIds.addAll(proIds);
+            }
+        }
+        if (plusList.size() > 0) {
+            List<Long> plusIds = plusList.stream().map(ScenePlus::getId).collect(Collectors.toList());
+            if (plusIds.size() > 0) {
+                sceneIds.addAll(plusIds);
+            }
+        }
+        if (sceneIds.size() > 0) {
+            this.delBySceneId(sceneIds);
+        }
+    }
 }

+ 20 - 0
src/main/java/com/fdkankan/manage/service/impl/FolderServiceImpl.java

@@ -0,0 +1,20 @@
+package com.fdkankan.manage.service.impl;
+
+import com.fdkankan.manage.entity.Folder;
+import com.fdkankan.manage.mapper.IFolderMapper;
+import com.fdkankan.manage.service.IFolderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 文件夹表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-08-02
+ */
+@Service
+public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implements IFolderService {
+
+}

+ 36 - 14
src/main/java/com/fdkankan/manage/service/impl/IncrementOrderMgServiceImpl.java

@@ -1,13 +1,18 @@
 package com.fdkankan.manage.service.impl;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.manage.entity.IncrementOrderMg;
+import com.fdkankan.manage.entity.IncrementType;
 import com.fdkankan.manage.mapper.IIncrementOrderMgMapper;
 import com.fdkankan.manage.service.IIncrementOrderMgService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.manage.util.Dateutils;
 import com.fdkankan.manage.vo.request.UserIncrementParam;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -22,22 +27,39 @@ import org.springframework.stereotype.Service;
 public class IncrementOrderMgServiceImpl extends ServiceImpl<IIncrementOrderMgMapper, IncrementOrderMg> implements IIncrementOrderMgService {
 
     @Override
-    public void addOrder(UserIncrementParam param) {
+    public IncrementOrderMg addOrder(UserIncrementParam param, IncrementType incrementType) {
         IncrementOrderMg incrementOrderMg = new IncrementOrderMg();
+        BeanUtil.copyProperties(param,incrementOrderMg);
+        incrementOrderMg.setId(null);
+        incrementOrderMg.setIncrementId(param.getId());
         incrementOrderMg.setOrderSn(Dateutils.getOrderSn());
-        incrementOrderMg.setUserId(param.getUserId());
-        incrementOrderMg.setCount(param.getCount());
-        incrementOrderMg.setAbroad(0);
-        incrementOrderMg.setIncrementType(param.getIncrementTypeId());
-        incrementOrderMg.setMemberLevels("");
-        incrementOrderMg.setMonthQy(param.getMonthQy());
-        incrementOrderMg.setTimeZoneOff(0);
-        incrementOrderMg.setCustomerName(param.getCustomerName());
-        incrementOrderMg.setCustomerType(param.getCustomerType());
-        incrementOrderMg.setEndCustomer(param.getEndCustomer());
-        incrementOrderMg.setUseType(param.getUseType());
-        incrementOrderMg.setProjectNum(param.getProjectNum());
-        incrementOrderMg.setRemark(param.getRemark());
+        incrementOrderMg.setPayStatus(1);
+        incrementOrderMg.setIncrementType(incrementType.getId());
+        if(incrementType.getValidTimeType() == 0){
+            incrementOrderMg.setMemberLevels("PR");
+        }
+        if(incrementType.getValidTimeType() == 1){
+            incrementOrderMg.setMemberLevels("SE");
+        }
         this.save(incrementOrderMg);
+        return incrementOrderMg;
+    }
+
+    @Override
+    public IncrementOrderMg getByOrderSn(String orderSn) {
+        LambdaQueryWrapper<IncrementOrderMg> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IncrementOrderMg::getOrderSn,orderSn);
+        return this.getOne(wrapper);
+    }
+
+    @Override
+    public IncrementOrderMg getByIncrementId(Long id) {
+        LambdaQueryWrapper<IncrementOrderMg> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IncrementOrderMg::getIncrementId,id);
+        List<IncrementOrderMg> list = this.list(wrapper);
+        if(ObjectUtils.isEmpty(list)){
+            return null;
+        }
+        return list.get(0);
     }
 }

+ 34 - 3
src/main/java/com/fdkankan/manage/service/impl/IncrementOrderServiceImpl.java

@@ -6,10 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.CacheUtil;
+import com.fdkankan.manage.entity.Camera;
 import com.fdkankan.manage.entity.IncrementOrder;
+import com.fdkankan.manage.entity.UserIncrement;
 import com.fdkankan.manage.mapper.IIncrementOrderMapper;
+import com.fdkankan.manage.service.ICameraService;
 import com.fdkankan.manage.service.IExcelService;
 import com.fdkankan.manage.service.IIncrementOrderService;
+import com.fdkankan.manage.service.IUserIncrementService;
 import com.fdkankan.manage.util.Dateutils;
 import com.fdkankan.manage.vo.request.OrderParam;
 import com.fdkankan.manage.vo.response.IncrementOrderVo;
@@ -18,6 +22,7 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * <p>
@@ -32,19 +37,46 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
 
     @Autowired
     IExcelService excelService;
+    @Autowired
+    IUserIncrementService userIncrementService;
+    @Autowired
+    ICameraService cameraService;
 
     @Override
     public PageInfo pageList(OrderParam param) {
         CacheUtil.orderParam = param;
+        Page<IncrementOrderVo> page = getPageInfo(param);
+        return PageInfo.PageInfo(page);
+    }
+
+    private Page<IncrementOrderVo>  getPageInfo(OrderParam param){
         Page<IncrementOrderVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
+
         for (IncrementOrderVo record : page.getRecords()) {
             String tradeTime = record.getTradeTime();
             if(record.getTimeZoneOff() != null){
                 tradeTime = Dateutils.AddMinute(record.getTradeTime(),record.getTimeZoneOff());
             }
             record.setCreateTime(tradeTime);
+            UserIncrement userIncrement = null;
+            if(record.getIncrementId() != null){
+                userIncrement = userIncrementService.getById(record.getIncrementId());
+            }else {
+                List<UserIncrement> userIncrements = userIncrementService.getByOrderSn(record.getOrderSn());
+                if(userIncrements!=null && userIncrements.size() >0){
+                    userIncrement = userIncrements.get(0);
+                }
+            }
+            if(userIncrement != null){
+                record.setIncrementStartTime(Dateutils.getDate(userIncrement.getIncrementStartTime()));
+                record.setIncrementEndTime(Dateutils.getDate(userIncrement.getIncrementEndTime()));
+                Camera camera = cameraService.getById(userIncrement.getCameraId());
+                if(camera!=null){
+                    record.setSnCode(camera.getSnCode());
+                }
+            }
         }
-        return PageInfo.PageInfo(page);
+        return page;
     }
 
     @Override
@@ -52,8 +84,7 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
         OrderParam orderParam = CacheUtil.orderParam;
         orderParam.setPageNum(1);
         orderParam.setPageSize(5000);
-        Page<IncrementOrderVo> page = this.getBaseMapper().pageList(new Page<>(orderParam.getPageNum(),orderParam.getPageSize()),orderParam);
-
+        Page<IncrementOrderVo> page = getPageInfo(orderParam);
         ExcelWriter excelWriter = null;
         try {
             excelWriter = EasyExcel.write(resp.getOutputStream(),IncrementOrderVo.class).build();

+ 36 - 0
src/main/java/com/fdkankan/manage/service/impl/ModelingConfigServiceImpl.java

@@ -0,0 +1,36 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.common.PageInfo;
+import com.fdkankan.manage.entity.ModelingConfig;
+import com.fdkankan.manage.mapper.IModelingConfigMapper;
+import com.fdkankan.manage.service.IModelingConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.vo.request.ModelingConfigParam;
+import org.apache.commons.lang3.StringUtils;
+import org.bouncycastle.math.raw.Mod;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-14
+ */
+@Service
+public class ModelingConfigServiceImpl extends ServiceImpl<IModelingConfigMapper, ModelingConfig> implements IModelingConfigService {
+
+    @Override
+    public Object pageList(ModelingConfigParam param) {
+        LambdaQueryWrapper<ModelingConfig> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getCameraName())){
+            wrapper.like(ModelingConfig::getCameraName,param.getCameraName());
+        }
+        wrapper.orderByDesc(ModelingConfig::getCreateTime);
+        Page<ModelingConfig> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        return PageInfo.PageInfo(page);
+    }
+}

+ 33 - 0
src/main/java/com/fdkankan/manage/service/impl/SceneColdStorageLogServiceImpl.java

@@ -0,0 +1,33 @@
+package com.fdkankan.manage.service.impl;
+import java.util.Date;
+import java.util.concurrent.atomic.AtomicReference;
+
+import com.fdkankan.manage.entity.SceneColdStorage;
+import com.fdkankan.manage.entity.SceneColdStorageLog;
+import com.fdkankan.manage.mapper.ISceneColdStorageLogMapper;
+import com.fdkankan.manage.service.ISceneColdStorageLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 场景冷归档日志表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+@Service
+public class SceneColdStorageLogServiceImpl extends ServiceImpl<ISceneColdStorageLogMapper, SceneColdStorageLog> implements ISceneColdStorageLogService {
+
+    @Override
+    public void saveLog(String num, String folderName) {
+        SceneColdStorageLog sceneColdStorageLog = new SceneColdStorageLog();
+        sceneColdStorageLog.setNum(num);
+        sceneColdStorageLog.setPath(folderName);
+        sceneColdStorageLog.setType(2);
+        sceneColdStorageLog.setState(1);
+        sceneColdStorageLog.setReason("");
+        this.save(sceneColdStorageLog);
+    }
+}

+ 54 - 0
src/main/java/com/fdkankan/manage/service/impl/SceneColdStorageServiceImpl.java

@@ -0,0 +1,54 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.manage.entity.SceneColdStorage;
+import com.fdkankan.manage.entity.SceneCopyLog;
+import com.fdkankan.manage.mapper.ISceneColdStorageMapper;
+import com.fdkankan.manage.service.ISceneColdStorageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 场景封存状态表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+@Service
+public class SceneColdStorageServiceImpl extends ServiceImpl<ISceneColdStorageMapper, SceneColdStorage> implements ISceneColdStorageService {
+
+    @Override
+    public SceneColdStorage getByNum(String num) {
+        LambdaQueryWrapper<SceneColdStorage> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SceneColdStorage::getNum,num);
+        wrapper.eq(SceneColdStorage::getState,1);
+        return this.getOne(wrapper);
+    }
+
+    @Override
+    public void updateStatus(String num, Integer state) {
+        LambdaUpdateWrapper<SceneColdStorage> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(SceneColdStorage::getNum,num);
+        wrapper.set(SceneColdStorage::getState,state);
+        this.update(wrapper);
+    }
+
+    @Override
+    public HashMap<String, SceneColdStorage> getByNumList(List<String> numList) {
+        HashMap<String, SceneColdStorage> map = new HashMap<>();
+        if(numList.size() >0){
+            LambdaQueryWrapper<SceneColdStorage> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(SceneColdStorage::getNum,numList);
+            wrapper.eq(SceneColdStorage::getState,1);
+            List<SceneColdStorage> list = this.list(wrapper);
+            list.forEach(entity -> map.put(entity.getNum(),entity));
+        }
+        return map;
+    }
+}

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

@@ -98,4 +98,11 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         wrapper.eq(ScenePlus::getSceneStatus,-2);
         return this.count(wrapper);
     }
+
+    @Override
+    public List<ScenePlus> getListByCameraId(Long cameraId) {
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ScenePlus::getCameraId,cameraId);
+        return this.list(wrapper);
+    }
 }

+ 131 - 25
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -24,14 +24,17 @@ 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.mq.param.SceneRestStoreVo;
 import com.fdkankan.manage.service.*;
+import com.fdkankan.manage.thread.ThreadService;
+import com.fdkankan.manage.util.CameraUtils;
 import com.fdkankan.manage.util.Dateutils;
+import com.fdkankan.manage.util.ProvinceUtils;
 import com.fdkankan.manage.util.SceneStatusUtil;
 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.manage.vo.response.*;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
+import com.fdkankan.redis.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -97,6 +100,12 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     ISceneDelLogService sceneDelLogService;
     @Autowired
     RabbitMqProducer rabbitMqProducer;
+    @Autowired
+    RedisUtil redisUtil;
+    @Autowired
+    ISceneColdStorageService sceneColdStorageService;
+    @Autowired
+    ICommonService commonService;
 
 
     @Override
@@ -213,6 +222,11 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             List<String> numList = records.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
             map = copyLogService.getByNewNumList(numList);
         }
+        HashMap<String,SceneColdStorage> coldStorageMap = null;
+        if(records.size() >0){
+            List<String> numList = records.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
+            coldStorageMap = sceneColdStorageService.getByNumList(numList);
+        }
         for (SceneVo record : page.getRecords()) {
             record.setStatusString(SceneStatusUtil.getStatusString(record));
             if(map !=null ){
@@ -222,6 +236,12 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     record.setIsCopy(true);
                 }
             }
+            if(coldStorageMap != null){
+                SceneColdStorage sceneColdStorage = coldStorageMap.get(record.getNum());
+                if(sceneColdStorage != null){
+                    record.setIsColdStorage(true);
+                }
+            }
             if(record.getStatus() == -1){  //计算失败
                 SceneBuildProcessLog sceneBuildProcessLog = sceneBuildProcessLogService.getByNum(record.getNum());
                 if(sceneBuildProcessLog != null){
@@ -229,6 +249,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     record.setBuildErrorReason(SceneBuildProcessLogEnum.getReason(sceneBuildProcessLog.getProcess()));
                 }
             }
+            //{"latitude":22.3672085,"longitude":113.595673,"altitude":9.275519,"horizontalAccuracy":65.0,"verticalAccuracy":10.0,"timestamp":1564381147.2775609}
+            record.setAddressComponent(commonService.getAddressComponent(record.getGps()));
         }
         return PageInfo.PageInfo(page);
     }
@@ -284,10 +306,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(!oldCameraDetail.getType().equals(cameraDetail.getType())){
             throw new BusinessException(ResultCode.CAMERA_TYPE_NOT_ERROR);
         }
-        String home = dataSource.replace("/mnt/data", "home")+"/data.fdage";
-        if(!fYunFileServiceInterface.fileExist(home)){
-            throw new BusinessException(ResultCode.MOVE_ERROR);
-        }
+//        String home = dataSource.replace("/mnt/data", "home")+"/data.fdage";
+//        if(!fYunFileServiceInterface.fileExist(home)){
+//            throw new BusinessException(ResultCode.MOVE_ERROR);
+//        }
 
         HashMap<String, SceneCopyLog> byNewNumList = copyLogService.getByNewNumList(Arrays.asList(param.getNum()));
         if(byNewNumList.size() >0){
@@ -308,26 +330,15 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
         Long subSpace =  oldCameraDetail.getTotalSpace() - oldUseSpace;
 
-        if(oldCameraDetail.getType() != 11 && oldCameraDetail.getType() != 10 && subSpace >0){           //有剩余容量解封容量内场景
-            this.lockOrUnLockBySpace(oldCameraDetail,oldCameraDetail.getCameraId(),1);
-        }
-
-        Integer payStatus =  scenePro == null ? scenePlus.getPayStatus() : scenePro.getPayStatus();
-
-        if(cameraDetail.getType() != 11 && cameraDetail.getType() != 10 && payStatus!=1){           //有剩余容量解封容量内场景
-            this.lockOrUnLockBySpace(scenePro,scenePlus,1);
-        }
-
-
         if(scenePro!=null){
             LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
             wrapper.eq(ScenePro::getId,scenePro.getId());
             wrapper.set(ScenePro::getCameraId,camera.getId());
             wrapper.set(ScenePro::getUserId,cameraDetail.getUserId());
-            wrapper.set(ScenePro::getStatus,0);
+           // wrapper.set(ScenePro::getStatus,0);
+           // this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),0,"status");
             this.update(wrapper);
             //场景迁移到另外的相机清除本身在的文件夹
-            this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),0,"status");
             folderSceneService.delBySceneId(scenePro.getId());
         }
         if(scenePlus!=null){
@@ -335,23 +346,30 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             wrapper.eq(ScenePlus::getId,scenePlus.getId());
             wrapper.set(ScenePlus::getCameraId,camera.getId());
             wrapper.set(ScenePlus::getUserId,cameraDetail.getUserId());
-            wrapper.set(ScenePlus::getSceneStatus,0);
+            //wrapper.set(ScenePlus::getSceneStatus,0);
+            //this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),0,"status");
             scenePlusService.update(wrapper);
-            this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),0,"status");
             folderSceneService.delBySceneId(scenePlus.getId());
         }
         //协作相机
         sceneResourceCameraService.setCooperationUser(cameraDetail,param.getNum());
 
-        String newDataSource = updateFdageNewDataSource(scenePro, scenePlus, oldCamera.getSnCode(), param.getSnCode(), dataSource);
+        //String newDataSource = updateFdageNewDataSource(scenePro, scenePlus, oldCamera.getSnCode(), param.getSnCode(), dataSource);
 
         if(cameraDetail.getType() == 10 || cameraDetail.getType() == 11){       //深时场景
             //迁移深时 dataSource
-            FileUtil.move(new File(dataSource +"_laserData"),new File(newDataSource+"_laserData"),true);
-            laserService.move(param.getNum(),oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),newDataSource);
+            //FileUtil.move(new File(dataSource +"_laserData"),new File(newDataSource+"_laserData"),true);
+            laserService.move(param.getNum(),oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),dataSource);
         }
         cameraDetailService.initSpace(oldCameraDetail);
         cameraDetailService.initSpace(cameraDetail);
+
+        if(oldCameraDetail.getType() != 11 && oldCameraDetail.getType() != 10 && subSpace >0){           //有剩余容量解封容量内场景
+            this.lockOrUnLockBySpace(oldCameraDetail.getCameraId());
+        }
+        if(cameraDetail.getType() != 11 && cameraDetail.getType() != 10){           //有剩余容量解封容量内场景
+            this.lockOrUnLockBySpace(cameraDetail.getCameraId());
+        }
     }
 
 
@@ -380,6 +398,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         try {
             newSnCode = newSnCode.toLowerCase();
             String fdagePaht =  dataSource.replace("/mnt/data","home") +"/data.fdage";
+            if(!fYunFileServiceInterface.fileExist(fdagePaht)){
+                return dataSource;
+            }
             localPathFdage = String.format(OssPath.localFdagePath,fdagePaht);
             String fileContent = fYunFileServiceInterface.getFileContent(fdagePaht);
             JSONObject jsonObject = updateFdageJson(JSONObject.parseObject(fileContent), newSnCode);
@@ -616,6 +637,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     snCodeMap.put(num,cameraMap.get(cameraId));
                 }
             }
+            List<CameraDetail> cameraIds1 = cameraDetailService.getByCameraIds(cameraList.stream().map(Camera::getId).collect(Collectors.toList()));
+            for (CameraDetail cameraDetail : cameraIds1) {
+                snCodeMap.put(cameraMap.get(cameraDetail.getCameraId()), CameraUtils.getCameraTypeStr(CameraUtils.getCameraType(cameraDetail.getType())));
+            }
         }
 
         return snCodeMap;
@@ -637,6 +662,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     @Override
     public void rebuildScene(String num) {
+        String redisKey2 = String.format(RedisKeyUtil.numShootKey, num);
+        redisUtil.del(redisKey2);
         String dataSource = null;
         ScenePro scenePro = this.getByNum(num);
         if(scenePro!=null && scenePro.getSceneSource() != 4){
@@ -662,6 +689,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(countByNewNum >0){
             throw new BusinessException(ResultCode.COPY_NUM_NOTREBUILD);
         }
+        SceneColdStorage coldStorage = sceneColdStorageService.getByNum(num);
+        if(coldStorage != null){
+            throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR2);
+        }
 
         if(!fYunFileServiceInterface.fileExist(dataSource.replace("/mnt/data","home")+"/data.fdage")){
             throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR);
@@ -682,6 +713,81 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     }
 
     @Override
+    public void restStore(String num) {
+        if(StringUtils.isBlank(num)){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String redisKey = String.format(RedisKeyUtil.restStoreKey, num);
+        if(redisUtil.hasKey(redisKey)){
+            throw new BusinessException(ResultCode.SCENE_STORE_ING);
+        }
+        SceneColdStorage sceneColdStorage = sceneColdStorageService.getByNum(num);
+        if(sceneColdStorage == null){
+            throw new BusinessException(ResultCode.SCENE_NOT_STORE);
+        }
+        String dataSource = scenePlusService.getDataSourceByNum(num);
+        if(StringUtils.isBlank(dataSource)){
+            throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
+        }
+        String homePath = dataSource.replace("/mnt/data","home");
+        SceneRestStoreVo sceneRestStoreVo = new SceneRestStoreVo(num,sceneColdStorage.getColdBucket(),sceneColdStorage.getBucket(),homePath);
+        Map<String, Object> map = BeanUtil.beanToMap(sceneRestStoreVo);
+        redisUtil.set(redisKey,homePath);
+        rabbitMqProducer.sendByWorkQueue(MqQueueUtil.sceneRestoreQueue,map);
+        //threadService.checkRestore(num,sceneColdStorage.getColdBucket(),sceneColdStorage.getBucket(),homePath);
+    }
+
+    @Override
+    public void restStoreSuccess(String num) {
+        Integer sceneResource = null;
+        ScenePro scenePro = this.getByNum(num);
+        Date time = Dateutils.dateAddOneMonth(new Date(),-11);
+        String date = Dateutils.getDate(time);
+        if(scenePro!=null ){
+            sceneResource = scenePro.getSceneSource();
+            LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(ScenePro::getId,scenePro.getId());
+            wrapper.set(ScenePro::getCreateTime,date);
+            this.update(wrapper);
+        }
+        ScenePlus scenePlus = scenePlusService.getByNum(num);
+        if(scenePlus != null ){
+            sceneResource = scenePlus.getSceneSource();
+            ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
+            if(scenePlusExt != null){
+                LambdaUpdateWrapper<ScenePlusExt> wrapper = new LambdaUpdateWrapper<>();
+                wrapper.eq(ScenePlusExt::getId,scenePlusExt.getId());
+                wrapper.set(ScenePlusExt::getAlgorithmTime,date);
+                scenePlusExtService.update(wrapper);
+            }
+        }
+        //深时场景通知修改计算完成时间
+        if(sceneResource != null && (sceneResource == 4 || sceneResource == 5)){
+            HashMap<String,String> map = new HashMap<>();
+            map.put("sceneCode",num);
+            map.put("algorithmTime",date);
+            rabbitMqProducer.sendByWorkQueue(MqQueueUtil.laserUnfreezeScene,map);
+        }
+    }
+
+    @Override
+    public Object getRestStoreProcess(String num) {
+        if(StringUtils.isBlank(num)){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        SceneColdStorage sceneColdStorage = sceneColdStorageService.getByNum(num);
+        if(sceneColdStorage == null){
+            throw new BusinessException(ResultCode.SCENE_NOT_STORE);
+        }
+        String dataSource = scenePlusService.getDataSourceByNum(num);
+        if(StringUtils.isBlank(dataSource)){
+            throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
+        }
+        String homePath = dataSource.replace("/mnt/data","home");
+        return fYunFileServiceInterface.getRestoreFolderProcess(sceneColdStorage.getColdBucket(),homePath);
+    }
+
+    @Override
     public Long getSpaceSumByCameraId(Long cameraId) {
         return this.getBaseMapper().getSpaceSumByCameraId(cameraId);
     }

+ 49 - 6
src/main/java/com/fdkankan/manage/service/impl/UserIncrementServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,6 +20,7 @@ import com.fdkankan.manage.vo.response.UserIncrementVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -101,6 +103,21 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
                 IncrementType incrementType = incrementTypeService.getById(record.getIncrementTypeId());
                 vo.setValidTimeType(incrementType.getValidTimeType());
             }
+            if(!StringUtils.isEmpty(record.getOrderSn()) && !record.getOrderSn().contains("O")){
+                IncrementOrderMg incrementOrderMg = iIncrementOrderMgService.getByOrderSn(record.getOrderSn());
+                if(incrementOrderMg == null){
+                    incrementOrderMg = iIncrementOrderMgService.getByIncrementId(record.getId());
+                }
+                if(incrementOrderMg != null){
+                    vo.setCustomerName(incrementOrderMg.getCustomerName());
+                    vo.setCustomerType(incrementOrderMg.getCustomerType());
+                    vo.setEndCustomer(incrementOrderMg.getEndCustomer());
+                    vo.setIncrementTypeId(incrementOrderMg.getIncrementType());
+                    vo.setUseType(incrementOrderMg.getUseType());
+                    vo.setProjectNum(incrementOrderMg.getProjectNum());
+                    vo.setRemark(incrementOrderMg.getRemark());
+                }
+            }
             voList.add(vo);
         }
         Page<UserIncrementVo> voPage = new Page<>(pageNum, pageSize);
@@ -136,9 +153,21 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         this.updateById(userIncrement);
 
         UserIncrementParam param = new UserIncrementParam();
+        IncrementOrderMg incrementOrderMg = iIncrementOrderMgService.getByOrderSn(userIncrement.getOrderSn());
+        if(incrementOrderMg !=null){
+            BeanUtil.copyProperties(incrementOrderMg,param);
+        }
+        param.setId(null);
         param.setUserId(userIncrement.getUserId());
         param.setCount(incrementType.getDownloadNum());
-        userService.addDownNum(param);
+        //userService.addDownNum(param);
+
+        LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(User::getId,userIncrement.getUserId());
+        wrapper.setSql("download_num_total = download_num_total + " +  incrementType.getDownloadNum());
+        userService.update(wrapper);
+
+        iIncrementOrderMgService.addOrder(param, incrementType);
 
         agentNewLogService.addByUserIncrement(userIncrement);
         if(userIncrement.getCameraId() != null){
@@ -154,18 +183,23 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         if(incrementType == null){
             throw new BusinessException(ResultCode.INCREMENT_TYPE_EMPTY);
         }
+        IncrementOrderMg incrementOrderMg = iIncrementOrderMgService.addOrder(param, incrementType);
 
         for (int i = 0 ; i<param.getCount() ;i++) {
             UserIncrement userIncrement = new UserIncrement();
             String date = DateUtil.date2String(new Date(), DateUtil.DEFAULT_DATE_FORMAT);
+            userIncrement.setId(param.getId());
             userIncrement.setUserId(param.getUserId());
             userIncrement.setKeyWord(UUID.randomUUID().toString().replace("-", ""));
             userIncrement.setIsExpired(0);
-            userIncrement.setCreateTime(date);
             userIncrement.setUpdateTime(date);
-            userIncrement.setIncrementStartTime(date);
             userIncrement.setIncrementEndTime(param.getIncrementEndTime());
             userIncrement.setIncrementTypeId(param.getIncrementTypeId());
+            if(userIncrement.getId()== null){
+                userIncrement.setIncrementStartTime(date);
+                userIncrement.setCreateTime(date);
+                userIncrement.setOrderSn(incrementOrderMg.getOrderSn());
+            }
             if(incrementType.getValidTimeType() == 0){
                 userIncrement.setMemberLevels("PR");
             }
@@ -179,13 +213,15 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         }
 
         if(userIncrementList.size() >0){
-            this.saveBatch(userIncrementList);
+            this.saveOrUpdateBatch(userIncrementList);
             User user = userService.getById(param.getUserId());
             if(user == null){
                 throw new BusinessException(ResultCode.USER_NOT_EXIST);
             }
-            user.setDownloadNumTotal(user.getDownloadNumTotal() + param.getCount() * incrementType.getDownloadNum());
-            userService.updateById(user);
+            LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(User::getId,user.getId());
+            wrapper.setSql("download_num_total = download_num_total + " +  param.getCount() * incrementType.getDownloadNum());
+            userService.update(wrapper);
         }
     }
 
@@ -230,4 +266,11 @@ public class UserIncrementServiceImpl extends ServiceImpl<IUserIncrementMapper,
         wrapper.set(UserIncrement::getAgentId,null);
         this.update(wrapper);
     }
+
+    @Override
+    public List<UserIncrement> getByOrderSn(String orderSn) {
+        LambdaQueryWrapper<UserIncrement> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(UserIncrement::getOrderSn,orderSn);
+        return this.list(wrapper);
+    }
 }

+ 17 - 3
src/main/java/com/fdkankan/manage/service/impl/UserServiceImpl.java

@@ -60,6 +60,9 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     private ISysUserService sysUserService;
     @Value("${fyun.host:https://4dkk.4dage.com/}")
     private String host;
+    @Autowired
+    private IDownloadOrderMgService downloadOrderMgService;
+
 
     @Override
     public PageInfo pageList(UserParam param) {
@@ -86,11 +89,21 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
         if(user == null){
             throw new BusinessException(ResultCode.USER_NOT_EXIST);
         }
-        Integer totalNum = user.getDownloadNumTotal() == null ? 0 : user.getDownloadNumTotal() + param.getCount();
-        user.setDownloadNumTotal(totalNum);
-        this.updateById(user);
+
+        downloadOrderMgService.addOrder(param);
+
+        LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(User::getId,user.getId());
+        if(param.getDownType() == 0){
+            wrapper.setSql("download_num_total = download_num_total + " + param.getCount());
+        }
+        if(param.getDownType() == 1){
+            wrapper.setSql("ss_download_num_total = ss_download_num_total + " + param.getCount());
+        }
+        this.update(wrapper);
     }
 
+
     @Override
     public List<UserVo>  userDetail(Integer userId) {
         User user = this.getById(userId);
@@ -137,6 +150,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
                 vo.setVip(incrementCount  > 0 ? 1: 0);
                 vo.setIncrementCount(incrementCount);
                 vo.setSurDownNum(user.getDownloadNumTotal() - user.getDownloadNum());
+                vo.setSurSSDownNum(user.getSsDownloadNumTotal() - user.getSsDownloadNum());
                 vo.setCameraCount(cameraCount);
                 vo.setSceneNum(sceneCount + sceneProCount + scenePlusCount + ssNum);
                 if(user.getSysUserId() != null){

+ 69 - 8
src/main/java/com/fdkankan/manage/test/TestController.java

@@ -3,18 +3,16 @@ package com.fdkankan.manage.test;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.common.util.SecurityUtil;
 import com.fdkankan.elasticsearch.service.DocumentService;
 import com.fdkankan.elasticsearch.service.IndexService;
 import com.fdkankan.elasticsearch.service.QueryDataService;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.manage.common.*;
-import com.fdkankan.manage.entity.Camera;
-import com.fdkankan.manage.entity.CameraDetail;
+import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
-import com.fdkankan.manage.service.ICameraDetailService;
-import com.fdkankan.manage.service.ICameraService;
-import com.fdkankan.manage.service.IScenePlusService;
-import com.fdkankan.manage.service.ISceneProService;
+import com.fdkankan.manage.service.*;
+import com.fdkankan.manage.thread.ThreadService;
 import com.fdkankan.manage.util.ExcelUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,7 +26,7 @@ import static com.amazonaws.util.CredentialUtils.getCredentialsProvider;
 
 @Slf4j
 @RestController
-@RequestMapping("/test")
+@RequestMapping("/service/manage/test")
 public class TestController {
 
     @Autowired
@@ -47,6 +45,10 @@ public class TestController {
     QueryDataService queryDataService;
     @Autowired
     DocumentService documentService;
+    @Autowired
+    IFolderSceneService folderSceneService;
+    @Autowired
+    IFolderService folderService;
 
     @RequestMapping("/test")
     public ResultData test(@RequestParam(required = false) String oldSnCode,
@@ -109,10 +111,27 @@ public class TestController {
         System.out.println(excelRowList);
         return ResultData.ok();
     }
+    @Autowired
+    ThreadService threadService;
+
+    @GetMapping("/restStroeTest")
+    public ResultData restStoreTest() throws InterruptedException {
+        String bucket = "4dkankan";
+        String cloudBucket = "4dkk-bak";
+        String path = "test001";
+//        try {
+//            fYunFileServiceInterface.restoreFolder(cloudBucket,path,1);
+//        }catch (Exception e){
+//            throw new BusinessException(ResultCode.SCENE_STORE_ING);
+//        }
+        threadService.checkRestore("1",cloudBucket,bucket,path);
+        return ResultData.ok();
+    }
+
 
     @GetMapping("/initCamera")
     public ResultData initCamera(){
-        String[] snCodes = this.getSnCodes();
+        String[] snCodes = this.getSnCodeTest();
         List<String> snCodeList = Arrays.asList(snCodes);
         LambdaQueryWrapper<Camera> wrapper = new LambdaQueryWrapper<>();
         wrapper.notIn(Camera::getSnCode,snCodeList);
@@ -125,6 +144,9 @@ public class TestController {
             if(cameraDetail == null){
                 continue;
             }
+            if(cameraDetail.getType() == 10){
+                continue;
+            }
             Long proSpace = sceneProService.getCountByCameraId(cameraDetail.getCameraId());
             Long plusSpace = scenePlusService.getCountByCameraId(cameraDetail.getCameraId());
             LambdaUpdateWrapper<CameraDetail> wrapper1 = new LambdaUpdateWrapper<>();
@@ -139,6 +161,45 @@ public class TestController {
         return ResultData.ok();
     }
 
+    @RequestMapping("/restFolderScene")
+    public ResultData restFolderScene(){
+        List<FolderScene> list = folderSceneService.list();
+        for (FolderScene folderScene : list) {
+            Long sceneId = folderScene.getSceneId();
+            Long folderId = folderScene.getFolderId();
+            Folder folder = folderService.getById(folderId);
+            if(folder == null){
+                folderSceneService.removeById(folderScene.getId());
+                continue;
+            }
+            Long fUserId = folder.getUserId();
+            Long sUserId = null;
+            ScenePro pro = sceneProService.getById(sceneId);
+            if(pro != null && pro.getIsUpgrade() == 0){
+                sUserId = pro.getUserId();
+            }
+            ScenePlus plus = scenePlusService.getById(sceneId);
+            if(plus != null ){
+                sUserId = plus.getUserId();
+            }
+            if(sUserId != null && !sUserId.equals(fUserId)){
+                folderSceneService.removeById(folderScene.getId());
+            }
+            if(sUserId == null){
+                folderSceneService.removeById(folderScene.getId());
+            }
+        }
+        return ResultData.ok();
+    }
+
+    private String[] getSnCodeTest(){
+        String res [] = {
+                "0292D9F64",
+        };
+        return res;
+    }
+
+
     private String[] getSnCodes(){
         String res [] = {
                 "916ED6689",

+ 68 - 0
src/main/java/com/fdkankan/manage/thread/ThreadService.java

@@ -0,0 +1,68 @@
+package com.fdkankan.manage.thread;
+
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.manage.common.RedisKeyUtil;
+import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.service.ISceneColdStorageLogService;
+import com.fdkankan.manage.service.ISceneColdStorageService;
+import com.fdkankan.redis.util.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+@Service
+@Slf4j
+public class ThreadService {
+    @Autowired
+    FYunFileServiceInterface fYunFileServiceInterface;
+    @Autowired
+    RedisUtil redisUtil;
+    @Autowired
+    ISceneColdStorageService sceneColdStorageService;
+    @Autowired
+    ISceneColdStorageLogService sceneColdStorageLogService;
+
+
+    public void checkRestore(String num,String cloudBucket,String bucket,String folderName){
+        String redisKey = String.format(RedisKeyUtil.restStoreKey, num);
+        if(redisUtil.hasKey(redisKey)){
+            return;
+        }
+        redisUtil.set(redisKey,folderName);
+        AtomicReference<Integer> state = new AtomicReference<>(1);
+        AtomicReference<String> reason = new AtomicReference<>("");
+        ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(1);
+        //等待任务执行结束,在间隔2秒执行。
+        scheduledThreadPoolExecutor.scheduleWithFixedDelay(()->{
+            try {
+                Integer process = fYunFileServiceInterface.getRestoreFolderProcess(cloudBucket, folderName);
+                System.out.println(process);
+                log.info("ThreadService-cloudBucket:{},bucket:{},folderName:{},process:{}",cloudBucket,bucket,folderName,process);
+                if(process == 100){
+                    fYunFileServiceInterface.copyFileBetweenBucket(cloudBucket,folderName,bucket,folderName);
+                    log.info("ThreadService-copy-bucket");
+                    sceneColdStorageService.updateStatus(num,2);
+                    scheduledThreadPoolExecutor.shutdown();
+                }
+            }catch (Exception e){
+                log.info("ThreadService-error:",e);
+                state.set(-1);
+                reason.set(e.getMessage());
+                scheduledThreadPoolExecutor.shutdown();
+                throw new BusinessException(ResultCode.SCENE_NOT_STORE);
+            }finally {
+                redisUtil.del(redisKey);
+                sceneColdStorageLogService.saveLog(num,folderName);
+            }
+
+            //任务启动多久之后   ,周期 每10s执行一次,时间单位
+        },1000,60*1000, TimeUnit.MILLISECONDS);
+    }
+
+
+}

+ 27 - 0
src/main/java/com/fdkankan/manage/util/CameraUtils.java

@@ -0,0 +1,27 @@
+package com.fdkankan.manage.util;
+
+public class CameraUtils {
+
+    public static  Integer getCameraType(Integer type){
+        switch (type){
+            case 0 :
+            case 1 :
+            case 2 :
+            case 5 :
+                return 1;
+            case 9 :return 2;
+            case 10 :return 3;
+            case 11 :return 4;
+        }
+        return type;
+    }
+    public static  String getCameraTypeStr(Integer type){
+        switch (type){
+            case 1 : return "四维看看";
+            case 2 : return "四维看见";
+            case 3 : return "四维深时";
+            case 4 : return "四维深光";
+        }
+        return "";
+    }
+}

+ 29 - 4
src/main/java/com/fdkankan/manage/util/Dateutils.java

@@ -6,10 +6,7 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 public class Dateutils {
 
@@ -192,4 +189,32 @@ public class Dateutils {
         Date date = new Date();
         return simpleDateFormat.format(date);
     }
+
+    /*日期加+1年*/
+    public static Date dateAddOneYear(Date date,Integer i) {
+        Calendar  calendar = new GregorianCalendar();
+        calendar.setTime(date);
+        calendar.add(Calendar.YEAR,i); //把日期往后增加一天,整数  往后推,负数往前移动
+        date=calendar.getTime(); //这个时间就是日期往后推一天的结果
+        return date;
+
+    }
+    /*日期加+1月*/
+    public static Date dateAddOneMonth(Date date,Integer i) {
+        Calendar  calendar = new GregorianCalendar();
+        calendar.setTime(date);
+        calendar.add(Calendar.MONTH,i); //把日期往后增加一天,整数  往后推,负数往前移动
+        date=calendar.getTime(); //这个时间就是日期往后推一天的结果
+        return date;
+    }
+
+    /*日期加+1天*/
+    public static Date dateAddOne(Date date,Integer i) {
+        Calendar  calendar = new GregorianCalendar();
+        calendar.setTime(date);
+        calendar.add(Calendar.DATE,i); //把日期往后增加一天,整数  往后推,负数往前移动
+        date=calendar.getTime(); //这个时间就是日期往后推一天的结果
+        return date;
+
+    }
 }

+ 12 - 0
src/main/java/com/fdkankan/manage/util/ExcelUtil.java

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.util;
 
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -7,7 +8,9 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
@@ -30,10 +33,19 @@ public class ExcelUtil {
             //转换为List数组
             for (int cellNum=0;cellNum<= row.getLastCellNum();cellNum++){
                 Cell cell = row.getCell(cellNum);
+                if (cell != null && cell.getCellTypeEnum() != CellType.STRING && HSSFDateUtil.isCellDateFormatted(cell))
+                {
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                    Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
+                    String value = sdf.format(date);
+                    map.put(cellNum,value);
+                    continue;
+                }
                 if(cell != null){
                     String value = fommartNum(cell.toString().trim());
                     map.put(cellNum,value);
                 }
+
             }
             rowList.add(map);
         }

+ 19 - 0
src/main/java/com/fdkankan/manage/util/ListUtils.java

@@ -0,0 +1,19 @@
+package com.fdkankan.manage.util;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.stream.Stream;
+
+public class ListUtils {
+
+    public static <T> boolean checkForDuplicates(T... array) {
+        Set<T> set = new HashSet<>(Arrays.asList(array));
+        return array.length != set.size();
+    }
+
+    private static <T> boolean checkForDuplicates2(T... array) {
+        Long distinctCount = Stream.of(array).distinct().count();
+        return array.length != distinctCount;
+    }
+}

+ 115 - 0
src/main/java/com/fdkankan/manage/util/ProvinceUtils.java

@@ -0,0 +1,115 @@
+package com.fdkankan.manage.util;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.manage.vo.response.AddressComponent;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.Objects;
+
+@Slf4j
+public class ProvinceUtils {
+
+
+    public static void main(String[] args) {
+        //{
+        //  "altitude": 22.34735107421875,
+        //  "horizontalAccuracy": 4.9379683,
+        //  "latitude": 22.36707762,
+        //  "longitude": 113.59580565,
+        //  "timestamp": 1638779141699,
+        //  "verticalAccuracy": 7.5588307
+        //}
+        AddressComponent addressComponent = pointsToLocationsAll("113.595673,22.36707762");
+        System.out.println(addressComponent);
+    }
+
+    private static String getProvince(String log, String lat ){
+        //lat 小  log  大
+        //参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项)
+        String urlString = "http://gc.ditu.aliyun.com/regeocoding?l="+lat+","+log+"&type=010";
+        String res = "";
+        try {
+            URL url = new URL(urlString);
+            java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
+            conn.setDoOutput(true);
+            conn.setRequestMethod("POST");
+            java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream(),"UTF-8"));
+            String line;
+            while ((line = in.readLine()) != null) {
+                res += line+"\n";
+            }
+            in.close();
+        } catch (Exception e) {
+            System.out.println("error in wapaction,and e is " + e.getMessage());
+        }
+        System.out.println(res);
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        JSONArray jsonArray = JSON.parseArray(jsonObject.getString("addrList"));
+        JSONObject jsonObject1 = jsonArray.getJSONObject(0);
+        String arr[] = jsonObject1.get("admName").toString().split(",");
+        System.out.println(arr[0]);
+        return arr[0];
+    }
+
+
+
+    /**
+     * 根据经纬度转地址
+     * @param points
+     * @return
+     */
+    public static String amapKey = "3609daa52e8ae4493393292213e2fb98";
+
+        //经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。
+    public static AddressComponent pointsToLocationsAll(String points) {
+        //将GPS坐标转化为高德地图坐标的URL后再去请求位置信息
+        try {
+            points = URLEncoder.encode(points,"UTF-8");
+            String convertUrl =
+                    "https://restapi.amap.com/v3/assistant/coordinate/convert?locations="+points+"&coordsys=gps&key="+amapKey;
+            //GPS坐标转为高德地图坐标
+            String s = HttpUtil.get(convertUrl);
+            JSONObject jsonObject = JSON.parseObject(s);
+            String status = (String) jsonObject.get("status");
+            if(Objects.equals(status,"0")){
+                throw new RuntimeException("远程调用经纬度转化出错");
+            }
+            String locations = (String) jsonObject.get("locations");
+            String formattedAmapPoints = null;
+            try {
+                formattedAmapPoints = URLEncoder.encode(locations.replaceAll(";", "|"), "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                throw new RuntimeException(e.getMessage());
+            }
+            String locationUrl = "https://restapi.amap.com/v3/geocode/regeo?output=json&location="+formattedAmapPoints+"&key="+amapKey+"&radius=1000&batch=true";
+            String s1 = HttpUtil.get(locationUrl);
+            System.out.println(s1);
+            //获取转地址后的结果
+            JSONObject parseObject = JSON.parseObject(s1);
+            String status1 = (String) parseObject.get("status");
+            if(Objects.equals(status1,"0")){
+                throw new RuntimeException("根据经纬度获取具体地址出错");
+            }
+            JSONArray regeocodes = parseObject.getJSONArray("regeocodes");
+            String formattedAddress = "";
+            AddressComponent addressComponent = null;
+            for (Object regeocode : regeocodes) {
+                JSONObject object = (JSONObject) regeocode;
+                formattedAddress = (String)object.get("formatted_address");
+                JSONObject jsonObject1 = (JSONObject) object.get("addressComponent");
+                addressComponent = JSONObject.toJavaObject(jsonObject1, AddressComponent.class);
+            }
+            log.info("经纬度【{}】转化为具体地点【{}】",points,formattedAddress);
+            return addressComponent;
+        } catch (Exception e) {
+            log.info("经纬度转换错误error:{}",e);
+        }
+        return null;
+    }
+
+}

+ 1 - 1
src/main/java/com/fdkankan/manage/util/RsaUtils.java

@@ -37,7 +37,7 @@ public class RsaUtils {
 		System.out.println("公钥:"+publicKey);
 		System.out.println("私钥:"+privateKey);
 
-		String ciphertext = rsa.encipher("4DKKPRO_0292D9F77", publicKey);
+		String ciphertext = rsa.encipher("4DKKPRO_022677E21", publicKey);
 		System.out.println(String.format("密文:"+ciphertext));
 		String deTxt = rsa.decipher(ciphertext, privateKey);
 		System.out.println(deTxt);

+ 28 - 0
src/main/java/com/fdkankan/manage/vo/request/AuthorizeParam.java

@@ -0,0 +1,28 @@
+package com.fdkankan.manage.vo.request;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AuthorizeParam extends RequestBase{
+
+    /**
+     * 客户名称
+     */
+    private String customerName;
+
+    private Integer customerType;
+
+    private Integer useType;
+
+    /**
+     * 授权key
+     */
+    private String authorizeKey;
+
+    private String machineUuid;
+
+}

+ 4 - 0
src/main/java/com/fdkankan/manage/vo/request/CameraInOutParam.java

@@ -13,4 +13,8 @@ public class CameraInOutParam {
     private String companyName;     //客户名
 
     private Integer agentId;
+
+    private String buyDate;
+
+    private Integer cameraType;
 }

+ 8 - 0
src/main/java/com/fdkankan/manage/vo/request/ModelingConfigParam.java

@@ -0,0 +1,8 @@
+package com.fdkankan.manage.vo.request;
+
+import lombok.Data;
+
+@Data
+public class ModelingConfigParam extends RequestBase{
+    private String cameraName;
+}

+ 9 - 0
src/main/java/com/fdkankan/manage/vo/request/OrderParam.java

@@ -1,9 +1,12 @@
 package com.fdkankan.manage.vo.request;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fdkankan.manage.vo.request.RequestBase;
 import com.fdkankan.manage.util.Dateutils;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 @Data
 public class OrderParam extends RequestBase {
     private String orderSn;         //订单号
@@ -13,6 +16,12 @@ public class OrderParam extends RequestBase {
     private String tradeNum;        //交易号
     private String expressNum;      //快递单号
 
+    private Integer customerType;    //客户类别0直销,1经销
+    private Integer payMethod;       //充值方式0线上,1线下
+    private Integer useType;        //使用类型
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private BigDecimal amount;      //订单金额
+
     public String getStartTime() {
         return Dateutils.getStartTime(startTime);
     }

+ 5 - 0
src/main/java/com/fdkankan/manage/vo/request/UserIncrementParam.java

@@ -15,6 +15,11 @@ public class UserIncrementParam {
     private Integer monthQy;
 
     /**
+     * 0看看,看见,1深时
+     */
+    private Integer downType;
+
+    /**
      * 客户名称
      */
     private String customerName;

+ 14 - 0
src/main/java/com/fdkankan/manage/vo/response/AddressComponent.java

@@ -0,0 +1,14 @@
+package com.fdkankan.manage.vo.response;
+
+import lombok.Data;
+import lombok.ToString;
+
+@Data
+@ToString
+public class AddressComponent {
+    private String country;
+    private String province;
+    private String city;
+    private String district;
+    private String township;
+}

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


Some files were not shown because too many files changed in this diff