瀏覽代碼

解冻场景码

lyhzzz 2 年之前
父節點
當前提交
4f0287705c
共有 21 個文件被更改,包括 464 次插入3 次删除
  1. 5 0
      pom.xml
  2. 1 0
      src/main/java/com/fdkankan/manage/common/RedisKeyUtil.java
  3. 2 0
      src/main/java/com/fdkankan/manage/common/ResultCode.java
  4. 26 0
      src/main/java/com/fdkankan/manage/config/ThreadPoolConfig.java
  5. 18 0
      src/main/java/com/fdkankan/manage/controller/SceneController.java
  6. 72 0
      src/main/java/com/fdkankan/manage/entity/SceneColdStorage.java
  7. 81 0
      src/main/java/com/fdkankan/manage/entity/SceneColdStorageLog.java
  8. 1 1
      src/main/java/com/fdkankan/manage/generate/AutoGenerate.java
  9. 18 0
      src/main/java/com/fdkankan/manage/mapper/ISceneColdStorageLogMapper.java
  10. 18 0
      src/main/java/com/fdkankan/manage/mapper/ISceneColdStorageMapper.java
  11. 16 0
      src/main/java/com/fdkankan/manage/service/ISceneColdStorageLogService.java
  12. 19 0
      src/main/java/com/fdkankan/manage/service/ISceneColdStorageService.java
  13. 4 0
      src/main/java/com/fdkankan/manage/service/ISceneProService.java
  14. 3 2
      src/main/java/com/fdkankan/manage/service/impl/AuthorizeCameraServiceImpl.java
  15. 20 0
      src/main/java/com/fdkankan/manage/service/impl/SceneColdStorageLogServiceImpl.java
  16. 37 0
      src/main/java/com/fdkankan/manage/service/impl/SceneColdStorageServiceImpl.java
  17. 36 0
      src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java
  18. 19 0
      src/main/java/com/fdkankan/manage/test/TestController.java
  19. 58 0
      src/main/java/com/fdkankan/manage/thread/ThreadService.java
  20. 5 0
      src/main/resources/mapper/manage/SceneColdStorageLogMapper.xml
  21. 5 0
      src/main/resources/mapper/manage/SceneColdStorageMapper.xml

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

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

@@ -7,6 +7,7 @@ public class RedisKeyUtil {
     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 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";

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

@@ -78,6 +78,8 @@ public enum ResultCode  {
     MACHINE_CODE_EXITS(50059, "当前设备已存在授权记录!"),
     UPDATE_CAMERA_NO_IN(50060, "替换的sn未入库!"),
     UPDATE_CAMERA_ERROR(50061, "替换的sn重复!"),
+    SCENE_NOT_STORE(50062, "场景未冻结无需解冻!"),
+    SCENE_STORE_ING(50063, "场景正在解冻请稍候!"),
     ;
 
     private Integer code;

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

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

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

+ 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_modeling_config"
+                "t_scene_cold_storage","t_scene_cold_storage_log"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

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

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

@@ -0,0 +1,16 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.SceneColdStorageLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 场景冷归档日志表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-07-25
+ */
+public interface ISceneColdStorageLogService extends IService<SceneColdStorageLog> {
+
+}

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

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

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

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

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

@@ -20,7 +20,6 @@ import com.fdkankan.reg.dto.CamRegSDto;
 import com.fdkankan.reg.dto.MachineRegDto;
 import jdk.internal.dynalink.linker.LinkerServices;
 import org.apache.commons.lang3.StringUtils;
-import org.ini4j.Reg;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -98,6 +97,7 @@ public class AuthorizeCameraServiceImpl extends ServiceImpl<IAuthorizeCameraMapp
                 List<CamRegDto> camRegs = new ArrayList<>();
                 String[] split = param.getSnCodes().split("\n");
                 for (String snCode : split) {
+                    snCode = snCode.toUpperCase();
                     CamRegDto camRegDto = new CamRegDto();
                     camRegDto.setSn(snCode);
                     Camera camera = cameraService.getBySnCode(snCode);
@@ -153,6 +153,7 @@ public class AuthorizeCameraServiceImpl extends ServiceImpl<IAuthorizeCameraMapp
 
     @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);
@@ -161,7 +162,7 @@ public class AuthorizeCameraServiceImpl extends ServiceImpl<IAuthorizeCameraMapp
         if(authorizeCamera == null){
             throw new BusinessException(ResultCode.RECOED_NO_EXITS);
         }
-        if(cameraDetail.getSnCode().equals(snCode)){
+        if(cameraDetail.getSnCode().toUpperCase().equals(snCode)){
             throw new BusinessException(ResultCode.UPDATE_CAMERA_ERROR);
         }
         Camera bySnCode = cameraService.getBySnCode(snCode);

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

@@ -0,0 +1,20 @@
+package com.fdkankan.manage.service.impl;
+
+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 {
+
+}

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

@@ -0,0 +1,37 @@
+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.mapper.ISceneColdStorageMapper;
+import com.fdkankan.manage.service.ISceneColdStorageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <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);
+    }
+}

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

@@ -99,6 +99,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     RabbitMqProducer rabbitMqProducer;
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    ISceneColdStorageService sceneColdStorageService;
 
 
     @Override
@@ -690,6 +692,40 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     }
 
     @Override
+    public void restStore(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");
+        fYunFileServiceInterface.restoreFolder(sceneColdStorage.getColdBucket(),homePath);
+    }
+
+    @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);
     }

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

@@ -3,6 +3,7 @@ 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;
@@ -15,6 +16,7 @@ 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.thread.ThreadService;
 import com.fdkankan.manage.util.ExcelUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -109,6 +111,23 @@ 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(){

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

@@ -0,0 +1,58 @@
+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.redis.util.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+@Service
+@Slf4j
+public class ThreadService {
+    @Autowired
+    FYunFileServiceInterface fYunFileServiceInterface;
+    @Autowired
+    RedisUtil redisUtil;
+
+
+    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);
+        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");
+                    scheduledThreadPoolExecutor.shutdown();
+                }
+            }catch (Exception e){
+                log.info("ThreadService-error:",e);
+                scheduledThreadPoolExecutor.shutdown();
+                throw new BusinessException(ResultCode.SCENE_NOT_STORE);
+            }finally {
+                redisUtil.del(redisKey);
+            }
+
+            //任务启动多久之后   ,周期 每10s执行一次,时间单位
+        },1000,60*1000, TimeUnit.MILLISECONDS);
+    }
+
+
+}

+ 5 - 0
src/main/resources/mapper/manage/SceneColdStorageLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.manage.mapper.ISceneColdStorageLogMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/manage/SceneColdStorageMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.manage.mapper.ISceneColdStorageMapper">
+
+</mapper>