Browse Source

添加过滤器,把所有文件放同一张表

wuweihao 5 năm trước cách đây
mục cha
commit
d6fe5ab8ef

+ 41 - 0
src/main/java/com/fd/config/MyInterceptor.java

@@ -0,0 +1,41 @@
+package com.fd.config;
+
+import lombok.extern.log4j.Log4j2;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Created by Owen on 2019/10/25 0025 16:49
+ *
+ *  拦截验证
+ */
+@Log4j2
+public class MyInterceptor implements HandlerInterceptor {
+
+    //重写preHandle方法
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        log.info("run preHandle");
+
+        log.info("request url: {}", request.getRequestURL());
+
+
+        String originHeader = request.getHeader("origin");
+//        response.setHeader("Access-Control-Allow-Origin", originHeader);
+        String requestHeaders = request.getHeader("Access-Control-Request-Headers");
+        if (requestHeaders==null) {
+            requestHeaders = "";
+        }
+        response.setHeader("Access-Control-Allow-Credentials", "true");
+        response.setHeader("Access-Control-Allow-Methods", "HEAD,PUT,DELETE,POST,GET");
+        response.setHeader("Access-Control-Allow-Headers", "Accept, Origin, XRequestedWith, Content-Type, LastModified," + requestHeaders);
+        response.setHeader("Access-Control-Allow-Origin", "*");
+
+
+        return true;
+    }
+
+
+}

+ 46 - 0
src/main/java/com/fd/config/WebMvcConfg.java

@@ -0,0 +1,46 @@
+package com.fd.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * Created by Owen on 2019/10/25 0025 16:29
+ */
+@Configuration
+public class WebMvcConfg implements WebMvcConfigurer {
+
+
+    @Bean
+    public MyInterceptor myInterceptor(){
+        return new MyInterceptor();
+    }
+
+    /**
+   * 重写addInterceptors方法
+   * addPathPatterns:需要拦截的访问路径
+   * excludePathPatterns:不需要拦截的路径,
+   * String数组类型可以写多个用","分割
+   */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(myInterceptor())
+//                .addPathPatterns("/**")
+                .addPathPatterns("/api/vts/**")
+                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html");
+    }
+
+    /**
+     * 配置全局跨域
+     */
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("*")
+                .allowCredentials(true)
+                .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
+                .maxAge(3600);
+    }
+}

+ 2 - 0
src/main/java/com/fd/constant/ErrorCode.java

@@ -9,6 +9,8 @@ public class ErrorCode {
 
     public static final String E50002 = "Id不存在";
 
+    public static final String E50003 = "文件删除失败";
+
     public static final String E50005 = "命令执行失败";
 
 

+ 2 - 0
src/main/java/com/fd/constant/TypeCode.java

@@ -9,6 +9,8 @@ public class TypeCode {
 
     public static final String FILE_TYPE_MODEL = "model";
 
+    public static final String FILE_TYPE_MODEL_TILE = "tile"; // 瓦片
+
     public static final String FILE_TYPE_VECTOR = "vector";
 
     public static final String FILE_TYPE_VECTOR_GEOJSON = "geojson";

+ 35 - 11
src/main/java/com/fd/controller/VtsModelController.java

@@ -31,7 +31,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
  * Created by Owen on 2019/11/7 0007 10:19
  * 3D Model
  */
-@CrossOrigin(maxAge = 3600)
+//@CrossOrigin(maxAge = 3600)
 @Log4j2
 @RestController
 @RequestMapping("api/vts/model")
@@ -68,8 +68,12 @@ public class VtsModelController {
     @ApiOperation("upload model file list")
     @PostMapping(value = "list")
     private ResponseResult list(@RequestBody PageDto param){
-        Page<FileEntity> page = fileRepository.findByType(TypeCode.FILE_TYPE_MODEL, PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
-        return new ResponseResult(200,page);
+        log.info("run list");
+        Page<FileEntity> page = fileRepository.findByType(
+                TypeCode.FILE_TYPE_MODEL,
+                TypeCode.FILE_TYPE_MODEL_TILE,
+                PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
+        return new ResponseResult(200, page);
     }
 
 
@@ -148,17 +152,19 @@ public class VtsModelController {
             String fileName = fileEntity.getFileName();
             fileName = fileName.substring(0, fileName.lastIndexOf("."));
             String fileUrl = cmd.substring(cmd.indexOf("--output") + 9, cmd.indexOf("--tilesetId") - 1);
-            GenerateFileEntity entity = generateFileRepository.findByFileId(fileId);
-            if (entity == null) {
-                entity = new GenerateFileEntity();
-            }
-            entity.setFileId(fileId);
+//            GenerateFileEntity entity = generateFileRepository.findByFileId(fileId);
+//            if (entity == null) {
+//                entity = new GenerateFileEntity();
+//            }
+            FileEntity entity = new FileEntity();
+//            entity.setFileId(fileId);
             entity.setFileName(fileName);
             entity.setFileUrl(fileUrl);
             entity.setCreateTime(new Date());
             entity.setUpdateTime(new Date());
-            entity.setType("vts");
-            generateFileRepository.save(entity);
+            entity.setType(TypeCode.FILE_TYPE_MODEL_TILE);
+//            generateFileRepository.save(entity);
+            fileRepository.save(entity);
             // 表示执行完成,释放锁
             existsSlpk2vts.set(false);
 
@@ -231,7 +237,7 @@ public class VtsModelController {
     @ApiOperation("command model vts remove")
     @GetMapping("/command/vts/remove/{fileId}")
     private ResponseResult commandVtsRemove(@PathVariable("fileId") Long fileId) {
-        log.info("run commandChangeUserVts");
+        log.info("run commandVtsRemove");
         GenerateFileEntity entity = generateFileRepository.findByFileId(fileId);
         if (entity == null) {
             return new ResponseResult(50002, ErrorCode.E50002);
@@ -267,6 +273,24 @@ public class VtsModelController {
         return new ResponseResult(200, "success");
     }
 
+    /**
+     * 删除文件
+     */
+    @GetMapping("delete/{fileId}/")
+    private ResponseResult deleteFile(@PathVariable("fileId") Long fileId) {
+        log.info("run deleteFile: {}", fileId);
+        return fileServer.deleteFileById(fileId);
+    }
+
+
+    @GetMapping("test")
+    private ResponseResult test() {
+        log.info("run test: {}");
+
+
+        return new ResponseResult(200, "123");
+    }
+
 
 
 

+ 21 - 7
src/main/java/com/fd/controller/VtsVectorController.java

@@ -65,7 +65,10 @@ public class VtsVectorController {
     @ApiOperation("upload Vector file list")
     @PostMapping(value = "list")
     private ResponseResult list(@RequestBody PageDto param){
-        Page<FileEntity> page = fileRepository.findByType(TypeCode.FILE_TYPE_VECTOR, PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
+        log.info("run list");
+        Page<FileEntity> page = fileRepository.findByType(
+                TypeCode.FILE_TYPE_VECTOR, TypeCode.FILE_TYPE_VECTOR_GEOJSON,
+                PageRequest.of(param.getPageNum(), param.getPageSize(), Sort.by("createTime").descending()));
         return new ResponseResult(200,page);
     }
 
@@ -80,6 +83,7 @@ public class VtsVectorController {
     @ApiOperation("upload Vector file")
     @PostMapping(value = "upload/{directoryName}/", consumes = { "multipart/form-data" })
     private ResponseResult uploadVector(@RequestParam("file") MultipartFile file, @PathVariable("directoryName") String directoryName){
+        log.info("run uploadVector");
         return fileServer.upload2(file, vectorPath+directoryName+"/");
     }
 
@@ -113,17 +117,18 @@ public class VtsVectorController {
         String fileName = fileEntity.getFileName();
 
         // 把生成的文件信息写入数据库
-        GenerateFileEntity geojson = generateFileRepository.findByFileId(fileId);
-        if (geojson == null) {
-            geojson = new GenerateFileEntity();
-        }
+//        GenerateFileEntity geojson = generateFileRepository.findByFileId(fileId);
+//        if (geojson == null) {
+//            geojson = new GenerateFileEntity();
+//        }
+        FileEntity geojson = new FileEntity();
         geojson.setFileName(fileName.replace(".shp",".geojson"));
         geojson.setFileUrl(fileUrl+".geojson");
         geojson.setCreateTime(new Date());
         geojson.setUpdateTime(new Date());
         geojson.setType(TypeCode.FILE_TYPE_VECTOR_GEOJSON);
-
-        geojson = generateFileRepository.save(geojson);
+        fileRepository.save(geojson);
+//        geojson = generateFileRepository.save(geojson);
 
         return new ResponseResult(200, geojson);
     }
@@ -155,4 +160,13 @@ public class VtsVectorController {
 
         return new ResponseResult(200, "success");
     }
+
+    /**
+     * 删除文件
+     */
+    @GetMapping("delete/{fileId}/")
+    private ResponseResult deleteFile(@PathVariable("fileId") Long fileId) {
+        log.info("run deleteFile: {}", fileId);
+        return fileServer.deleteFileById(fileId);
+    }
 }

+ 4 - 0
src/main/java/com/fd/repository/FileRepository.java

@@ -5,6 +5,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
 
 /**
  * Created by Owen on 2019/10/28 0028 11:36
@@ -15,4 +16,7 @@ public interface FileRepository extends JpaRepository<FileEntity, Long>, JpaSpec
 
     // 条件分页查询
     Page<FileEntity> findByType(String type, Pageable pageable);
+
+    @Query(value = "select r from FileEntity r where r.type=?1 or r.type =?2")
+    Page<FileEntity> findByType(String type, String type1, Pageable pageable);
 }

+ 3 - 1
src/main/java/com/fd/server/FileServer.java

@@ -15,5 +15,7 @@ public interface FileServer {
     // 普通文件上传,不支持大文件
     ResponseResult upload2(MultipartFile file, String savePath);
 
-    boolean deleteById(Long id);
+    ResponseResult deleteFileById(Long id);
+
+//    ResponseResult deleteDirectoryById(Long fileId);
 }

+ 36 - 7
src/main/java/com/fd/server/impl/FileServerImpl.java

@@ -116,19 +116,48 @@ public class FileServerImpl implements FileServer {
     }
 
     @Override
-    public boolean deleteById(Long id)  {
+    public ResponseResult deleteFileById(Long id)  {
 
         // 删除服务器文件
-//        Optional<FileEntity> e = fileRepository.findById(id);
+        Optional<FileEntity> e = fileRepository.findById(id);
+        if (!e.isPresent()) {
+            return new ResponseResult(50002, ErrorCode.E50002);
+        }
+        FileEntity fileEntity = e.get();
+        String fileName = fileEntity.getFileName();
+        // 文件
+        if (fileName.contains(".")) {
+            File file = new File(fileEntity.getFileUrl());
+            file.delete();
+        } else { // 目录
+            FileUtils.delAllFile(fileEntity.getFileUrl());
+        }
+
+
+        // 删除数据库记录
+        fileRepository.deleteById(id);
+
+        return new ResponseResult(200, "success");
+    }
+
+//    @Override
+//    public ResponseResult deleteDirectoryById(Long fileId) {
+//        // 删除服务器文件
+//        Optional<FileEntity> e = fileRepository.findById(fileId);
 //        if (!e.isPresent()) {
-//            throw new Exception(ErrorCode.E50002);
+//            return new ResponseResult(50002, ErrorCode.E50002);
 //        }
 //        FileEntity fileEntity = e.get();
-//        fileEntity.getFileUrl();
-//        FileUtils.
+//
+//        return null;
+//    }
 
-        // 删除数据库记录
+    public static void main(String[] args) {
+        String a = "aaa.bb";
+        String b = "aaa";
+        System.out.println(a.contains("."));
+        System.out.println(b.contains("."));
 
-        return false;
     }
+
 }