Browse Source

本地代码提交

高家顺 4 years ago
parent
commit
43e56531c6

+ 35 - 0
src/main/java/com/macro/mall/tiny/common/util/MyFileUtils.java

@@ -3,6 +3,7 @@ package com.macro.mall.tiny.common.util;
 
 import com.google.common.collect.Lists;
 import com.macro.mall.tiny.config.UploadConfig;
+import com.macro.mall.tiny.modules.business.model.BDirectory;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -114,4 +115,38 @@ public class MyFileUtils {
         }
         return Lists.newArrayList();
     }
+
+    public static void main(String[] args) {
+        String path = "F:/StudyWorkSpace/doc-manager/power";
+        final BDirectory file = getAllAuthDirectory(new File(path), true);
+        System.out.println(file);
+    }
+
+    public static BDirectory getAllAuthDirectory(File file, boolean auth) {
+        if (!file.exists() && !file.isDirectory()) {
+            return null;
+        }
+        final String fileName = file.getName();
+        List<BDirectory> subDirectory = Lists.newArrayList();
+        boolean hasFile = false;
+
+        final File[] subFiles = file.listFiles((dir, name) -> auth || !name.startsWith(String.valueOf(UploadConfig.AUTH_STR)));
+        if (subFiles != null && subFiles.length > 0) {
+            for (File subFile : subFiles) {
+                if (!subFile.isDirectory() && !hasFile) {
+                    hasFile = true;
+                } else {
+                    subDirectory.add(getAllAuthDirectory(subFile, auth));
+                }
+            }
+        }
+
+        final BDirectory thisFile = new BDirectory();
+        thisFile.setName(fileName);
+        thisFile.setPath(file.getPath());
+        thisFile.setSubDirectory(subDirectory);
+        thisFile.setHasFile(hasFile ? 1 : 0);
+
+        return thisFile;
+    }
 }

+ 0 - 1
src/main/java/com/macro/mall/tiny/modules/business/controller/BLineController.java

@@ -10,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.websocket.server.PathParam;
-import java.security.Key;
 import java.util.List;
 
 /**

+ 7 - 41
src/main/java/com/macro/mall/tiny/modules/business/controller/FileController.java

@@ -3,6 +3,7 @@ package com.macro.mall.tiny.modules.business.controller;
 import com.macro.mall.tiny.common.api.CommonResult;
 import com.macro.mall.tiny.domain.AdminUserDetails;
 import com.macro.mall.tiny.modules.business.dto.FileUploadParam;
+import com.macro.mall.tiny.modules.business.model.BDirectory;
 import com.macro.mall.tiny.modules.business.service.FileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -62,47 +63,6 @@ public class FileController {
         return CommonResult.success("上传成功,后台正在处理...");
     }
 
-    /*@ApiOperation("文件下载接口")
-    @GetMapping("/download")
-    public Object downloadFile(@RequestParam String fileName, final HttpServletResponse response) {
-        OutputStream os = null;
-        InputStream is = null;
-        try {
-            // 取得输出流
-            os = response.getOutputStream();
-            // 清空输出流
-            response.reset();
-            response.setContentType("application/x-download;charset=UTF-8");
-            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
-            //读取流
-            File f = new File(UploadConfig.path + fileName);
-            is = new FileInputStream(f);
-            //复制
-            IOUtils.copy(is, response.getOutputStream());
-            response.getOutputStream().flush();
-        } catch (IOException e) {
-            return CommonResult.failed("下载附件失败,error:" + e.getMessage());
-        }
-        //文件的关闭放在finally中
-        finally {
-            try {
-                if (is != null) {
-                    is.close();
-                }
-            } catch (IOException e) {
-                log.error("关闭文件输入流失败:", e);
-            }
-            try {
-                if (os != null) {
-                    os.close();
-                }
-            } catch (IOException e) {
-                log.error("关闭文件输出流失败:", e);
-            }
-        }
-        return null;
-    }*/
-
     /**
      * 下载模板
      */
@@ -120,4 +80,10 @@ public class FileController {
         outputStream.flush();
         outputStream.close();
     }
+
+    @ApiOperation("文件上传接口")
+    @PostMapping("/upload")
+    public CommonResult<BDirectory> getDirectory(){
+        return null;
+    }
 }

+ 33 - 0
src/main/java/com/macro/mall/tiny/modules/business/model/BDirectory.java

@@ -0,0 +1,33 @@
+package com.macro.mall.tiny.modules.business.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/4/1 17:02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "BFile对象", description = "文件对象")
+public class BDirectory implements Serializable {
+
+    @ApiModelProperty(value = "文件夹名称")
+    private String name;
+
+    @ApiModelProperty(value = "文件夹详细路径")
+    private String path;
+
+    @ApiModelProperty(value = "目录下是否有文件")
+    private int hasFile;
+
+    @ApiModelProperty(value = "下一层")
+    private List<BDirectory> subDirectory;
+
+}

+ 19 - 0
src/main/java/com/macro/mall/tiny/modules/business/service/BDirectoryCacheService.java

@@ -0,0 +1,19 @@
+package com.macro.mall.tiny.modules.business.service;
+
+import com.macro.mall.tiny.domain.AdminUserDetails;
+import com.macro.mall.tiny.modules.business.model.BDirectory;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/4/1 18:03
+ */
+public interface BDirectoryCacheService {
+
+    BDirectory getDirectory(AdminUserDetails userDetails);
+
+    void setDirectory(AdminUserDetails userDetails, BDirectory directory);
+
+    void delDirectory(AdminUserDetails userDetails);
+
+}

+ 45 - 0
src/main/java/com/macro/mall/tiny/modules/business/service/impl/BDirectoryCacheServiceImpl.java

@@ -0,0 +1,45 @@
+package com.macro.mall.tiny.modules.business.service.impl;
+
+import com.macro.mall.tiny.common.service.RedisService;
+import com.macro.mall.tiny.domain.AdminUserDetails;
+import com.macro.mall.tiny.modules.business.model.BDirectory;
+import com.macro.mall.tiny.modules.business.service.BDirectoryCacheService;
+import com.macro.mall.tiny.security.util.AuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * @author gjs
+ * @description
+ * @date 2021/4/1 18:08
+ */
+public class BDirectoryCacheServiceImpl implements BDirectoryCacheService {
+    @Autowired
+    private RedisService redisService;
+    @Value("${redis.database}")
+    private String REDIS_DATABASE;
+    @Value("${redis.expire.common}")
+    private Long REDIS_EXPIRE;
+    @Value("${redis.key.directory}")
+    private String REDIS_KEY_DIRECTORY;
+
+    private String getKey(AdminUserDetails userDetails) {
+        final boolean access = AuthUtil.checkAccess(userDetails, "/visit");
+        return REDIS_DATABASE + ":" + REDIS_KEY_DIRECTORY + ":" + (access ? 1 : 0);
+    }
+
+    @Override
+    public BDirectory getDirectory(AdminUserDetails userDetails) {
+        return (BDirectory) redisService.get(getKey(userDetails));
+    }
+
+    @Override
+    public void setDirectory(AdminUserDetails userDetails, BDirectory directory) {
+        redisService.set(getKey(userDetails), directory, REDIS_EXPIRE);
+    }
+
+    @Override
+    public void delDirectory(AdminUserDetails userDetails) {
+        redisService.del(getKey(userDetails));
+    }
+}

+ 1 - 1
src/main/java/com/macro/mall/tiny/modules/business/service/impl/BLineCacheServiceImpl.java

@@ -23,7 +23,7 @@ public class BLineCacheServiceImpl implements BLineCacheService {
     private String REDIS_DATABASE;
     @Value("${redis.expire.common}")
     private Long REDIS_EXPIRE;
-    @Value("${business:lineList}")
+    @Value("${redis.key.directory}")
     private String REDIS_KEY_LINE_LIST;
 
     @Override