From 3be6c249ebd002eb89388fba4334f1713b665cdc Mon Sep 17 00:00:00 2001
From: yz <3614508250@qq.com>
Date: Mon, 4 Mar 2024 14:26:51 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=AF=E5=8A=A8=E6=8A=A5?=
 =?UTF-8?q?=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../FinancialBigDataApplication.java          |   2 +
 .../config/security/WebConfigurerAdapter.java |  20 +-
 .../financial_bigdata/util/SealUtil.java      | 130 +++----
 .../util/file/IFileUtil.java                  | 174 ++++-----
 .../util/file/LocalFileUtil.java              | 350 +++++++++---------
 5 files changed, 339 insertions(+), 337 deletions(-)

diff --git a/src/main/java/com/sztzjy/financial_bigdata/FinancialBigDataApplication.java b/src/main/java/com/sztzjy/financial_bigdata/FinancialBigDataApplication.java
index 02817ff..dae093f 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/FinancialBigDataApplication.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/FinancialBigDataApplication.java
@@ -2,7 +2,9 @@ package com.sztzjy.financial_bigdata;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
+@EnableScheduling
 @SpringBootApplication
 public class FinancialBigDataApplication {
 
diff --git a/src/main/java/com/sztzjy/financial_bigdata/config/security/WebConfigurerAdapter.java b/src/main/java/com/sztzjy/financial_bigdata/config/security/WebConfigurerAdapter.java
index 376b7f0..0062f92 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/config/security/WebConfigurerAdapter.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/config/security/WebConfigurerAdapter.java
@@ -1,7 +1,7 @@
 package com.sztzjy.financial_bigdata.config.security;
 
-import com.sztzjy.financial_bigdata.util.file.IFileUtil;
-import com.sztzjy.financial_bigdata.util.file.LocalFileUtil;
+//import com.sztzjy.financial_bigdata.util.file.IFileUtil;
+//import com.sztzjy.financial_bigdata.util.file.LocalFileUtil;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -67,12 +67,12 @@ public class WebConfigurerAdapter implements WebMvcConfigurer {
         }
     }
 
-    @Bean
-    public IFileUtil getFileUtil() {
-        if (fileType.equals("local")) {
-            return new LocalFileUtil(filePath);
-        } else {
-            throw new IllegalArgumentException("未知文件工具类注入类型");
-        }
-    }
+//    @Bean
+//    public IFileUtil getFileUtil() {
+//        if (fileType.equals("local")) {
+//            return new LocalFileUtil(filePath);
+//        } else {
+//            throw new IllegalArgumentException("未知文件工具类注入类型");
+//        }
+//    }
 }
diff --git a/src/main/java/com/sztzjy/financial_bigdata/util/SealUtil.java b/src/main/java/com/sztzjy/financial_bigdata/util/SealUtil.java
index a7276a8..00d7822 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/util/SealUtil.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/util/SealUtil.java
@@ -1,65 +1,65 @@
-package com.sztzjy.financial_bigdata.util;
-
-import cn.hutool.core.util.IdUtil;
-import com.sztzjy.financial_bigdata.util.file.LocalFileUtil;
-import com.sztzjy.financial_bigdata.util.seal.SealCircle;
-import com.sztzjy.financial_bigdata.util.seal.SealFont;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.io.File;
-
-/**
- * @author 17803
- * @date 2023-12-05 15:11
- */
-
-@Component
-public class SealUtil {
-
-    @Resource
-    LocalFileUtil localFileUtil;
-
-    @Value("${file.path}")
-    private String filePath;
-
-    public  String genertSealB(String name) throws Exception{
-        String file = filePath+"/seal/";
-        // 创建 File 对象
-                File infoFile = new File(file);
-                if (!infoFile.exists()) {
-                    infoFile.mkdir();
-                }
-        String s = IdUtil.fastSimpleUUID();
-        com.sztzjy.financial_bigdata.util.seal.SealUtil.builder()
-                .size(200)
-                .borderCircle(SealCircle.builder().line(4).width(95).height(95).build())
-                .mainFont(SealFont.builder().text(name+"有限公司").size(22).space(30.0).margin(4).build())
-                .centerFont(SealFont.builder().text("★").size(60).build())
-                .titleFont(SealFont.builder().text("电子签章").size(16).space(8.0).margin(54).build())
-                .build()
-                .draw(filePath+"/seal/"+ s +".png");
-        System.out.println(name+"公章已生成");
-       return s;
-    }
-    public  String genertSealA(String name) throws Exception{
-        String file = filePath+"/seal/";
-        // 创建 File 对象
-        File infoFile = new File(file);
-        if (!infoFile.exists()) {
-            infoFile.mkdir();
-        }
-        String s = IdUtil.fastSimpleUUID();
-        com.sztzjy.financial_bigdata.util.seal.SealUtil.builder()
-                .size(200)
-                .borderCircle(SealCircle.builder().line(4).width(95).height(95).build())
-                .mainFont(SealFont.builder().text(name).size(22).space(30.0).margin(4).build())
-                .centerFont(SealFont.builder().text("★").size(60).build())
-                .titleFont(SealFont.builder().text("电子签章").size(16).space(8.0).margin(54).build())
-                .build()
-                .draw(filePath+"/seal/"+ s +".png");
-        System.out.println(name+"公章已生成");
-        return s;
-    }
-}
+//package com.sztzjy.financial_bigdata.util;
+//
+//import cn.hutool.core.util.IdUtil;
+//import com.sztzjy.financial_bigdata.util.file.LocalFileUtil;
+//import com.sztzjy.financial_bigdata.util.seal.SealCircle;
+//import com.sztzjy.financial_bigdata.util.seal.SealFont;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.stereotype.Component;
+//
+//import javax.annotation.Resource;
+//import java.io.File;
+//
+///**
+// * @author 17803
+// * @date 2023-12-05 15:11
+// */
+//
+//@Component
+//public class SealUtil {
+//
+//    @Resource
+//    LocalFileUtil localFileUtil;
+//
+//    @Value("${file.path}")
+//    private String filePath;
+//
+//    public  String genertSealB(String name) throws Exception{
+//        String file = filePath+"/seal/";
+//        // 创建 File 对象
+//                File infoFile = new File(file);
+//                if (!infoFile.exists()) {
+//                    infoFile.mkdir();
+//                }
+//        String s = IdUtil.fastSimpleUUID();
+//        com.sztzjy.financial_bigdata.util.seal.SealUtil.builder()
+//                .size(200)
+//                .borderCircle(SealCircle.builder().line(4).width(95).height(95).build())
+//                .mainFont(SealFont.builder().text(name+"有限公司").size(22).space(30.0).margin(4).build())
+//                .centerFont(SealFont.builder().text("★").size(60).build())
+//                .titleFont(SealFont.builder().text("电子签章").size(16).space(8.0).margin(54).build())
+//                .build()
+//                .draw(filePath+"/seal/"+ s +".png");
+//        System.out.println(name+"公章已生成");
+//       return s;
+//    }
+//    public  String genertSealA(String name) throws Exception{
+//        String file = filePath+"/seal/";
+//        // 创建 File 对象
+//        File infoFile = new File(file);
+//        if (!infoFile.exists()) {
+//            infoFile.mkdir();
+//        }
+//        String s = IdUtil.fastSimpleUUID();
+//        com.sztzjy.financial_bigdata.util.seal.SealUtil.builder()
+//                .size(200)
+//                .borderCircle(SealCircle.builder().line(4).width(95).height(95).build())
+//                .mainFont(SealFont.builder().text(name).size(22).space(30.0).margin(4).build())
+//                .centerFont(SealFont.builder().text("★").size(60).build())
+//                .titleFont(SealFont.builder().text("电子签章").size(16).space(8.0).margin(54).build())
+//                .build()
+//                .draw(filePath+"/seal/"+ s +".png");
+//        System.out.println(name+"公章已生成");
+//        return s;
+//    }
+//}
diff --git a/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java b/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java
index fac9b37..cd754ca 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/util/file/IFileUtil.java
@@ -1,87 +1,87 @@
-package com.sztzjy.financial_bigdata.util.file;
-
-
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.InputStream;
-
-/**
- * 文件上传下载接口定义
- *
- * @author 陈沅
- */
-public interface IFileUtil {
-
-
-
-    /**
-     * 从http请求上传文件
-     *
-     * @param file form传参http文件对象
-     * @return 返回文件在服务器上保存的相对路径
-     */
-    String upload(MultipartFile file);
-
-    /**
-     * 根据文件流上传文件
-     *
-     * @param objectName 指定文件名(带扩展名)
-     * @param fileIn     文件流
-     * @return 返回文件在服务器上保存的相对路径
-     */
-    String upload(String objectName, InputStream fileIn);
-
-    /**
-     * 删除服务器上的一个文件
-     *
-     * @param path 文件在服务器上保存的相对路径
-     * @return 返回true则表示删除成功
-     */
-    boolean remove(String path);
-
-    /**
-     * 下载文件流,指定文件名
-     *
-     * @param response
-     * @param fileName 指定下载文件名称
-     * @param filePath 文件保存的相对路径
-     */
-    void download(HttpServletResponse response, String fileName, String filePath);
-
-    /**
-     * 下载文件流,不指定文件名
-     *
-     * @param response
-     * @param filePath 文件保存的相对路径
-     */
-    void download(HttpServletResponse response, String filePath);
-
-    /**
-     * 相对路径
-     *
-     * @param relativePath 文件保存的相对路径
-     * @return 文件保存的绝对路径
-     */
-    String getFullPath(String relativePath);
-
-
-    /**
-     * 获取文件后缀名
-     *
-     * @param fileName 文件名称
-     * @return suffix
-     */
-    String getSuffix(String fileName);
-
-
-    /**
-     * 获取文件存储至磁盘的相对路径
-     *
-     * @param fileName 文件名
-     * @param suffix   动态拼接的文件后缀,若该值为空则不拼接
-     * @return 相对路径
-     */
-    String getDiskRelativePath(String fileName, String suffix);
-
-}
+//package com.sztzjy.financial_bigdata.util.file;
+//
+//
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.InputStream;
+//
+///**
+// * 文件上传下载接口定义
+// *
+// * @author 陈沅
+// */
+//public interface IFileUtil {
+//
+//
+//
+//    /**
+//     * 从http请求上传文件
+//     *
+//     * @param file form传参http文件对象
+//     * @return 返回文件在服务器上保存的相对路径
+//     */
+//    String upload(MultipartFile file);
+//
+//    /**
+//     * 根据文件流上传文件
+//     *
+//     * @param objectName 指定文件名(带扩展名)
+//     * @param fileIn     文件流
+//     * @return 返回文件在服务器上保存的相对路径
+//     */
+//    String upload(String objectName, InputStream fileIn);
+//
+//    /**
+//     * 删除服务器上的一个文件
+//     *
+//     * @param path 文件在服务器上保存的相对路径
+//     * @return 返回true则表示删除成功
+//     */
+//    boolean remove(String path);
+//
+//    /**
+//     * 下载文件流,指定文件名
+//     *
+//     * @param response
+//     * @param fileName 指定下载文件名称
+//     * @param filePath 文件保存的相对路径
+//     */
+//    void download(HttpServletResponse response, String fileName, String filePath);
+//
+//    /**
+//     * 下载文件流,不指定文件名
+//     *
+//     * @param response
+//     * @param filePath 文件保存的相对路径
+//     */
+//    void download(HttpServletResponse response, String filePath);
+//
+//    /**
+//     * 相对路径
+//     *
+//     * @param relativePath 文件保存的相对路径
+//     * @return 文件保存的绝对路径
+//     */
+//    String getFullPath(String relativePath);
+//
+//
+//    /**
+//     * 获取文件后缀名
+//     *
+//     * @param fileName 文件名称
+//     * @return suffix
+//     */
+//    String getSuffix(String fileName);
+//
+//
+//    /**
+//     * 获取文件存储至磁盘的相对路径
+//     *
+//     * @param fileName 文件名
+//     * @param suffix   动态拼接的文件后缀,若该值为空则不拼接
+//     * @return 相对路径
+//     */
+//    String getDiskRelativePath(String fileName, String suffix);
+//
+//}
diff --git a/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java b/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java
index 84445ff..32ea663 100644
--- a/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java
+++ b/src/main/java/com/sztzjy/financial_bigdata/util/file/LocalFileUtil.java
@@ -1,175 +1,175 @@
-package com.sztzjy.financial_bigdata.util.file;
-
-import cn.hutool.core.util.CharsetUtil;
-import cn.hutool.core.util.IdUtil;
-import org.springframework.util.Assert;
-import org.springframework.util.StringUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.net.URLEncoder;
-import java.nio.file.Files;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
-public class LocalFileUtil implements IFileUtil{
-
-    private final static List<String> excludeSp = Arrays.asList("exe", "bin", "sh");
-
-    private final String localPath;
-
-    public LocalFileUtil(String localPath) {
-        this.localPath = localPath;
-    }
-
-    @Override
-    public String upload(MultipartFile file) {
-        return upload(null, file);
-    }
-
-    @Override
-    public String upload(String objectName, InputStream fileIn) {
-        Assert.notNull(fileIn, "文件不能为空");
-        Assert.hasText(objectName, "文件名为空");
-        Assert.isTrue(objectName.lastIndexOf(".") > 0, "文件名称需携带扩展后缀");
-        FileOutputStream out = null;
-        try {
-            String relativePath = getDiskRelativePath(objectName, null);
-            File file = new File(getFullPath(relativePath));
-            file.getParentFile().mkdirs();
-            out = new FileOutputStream(file);
-            byte[] buff = new byte[4096];
-            int len;
-            while ((len = fileIn.read(buff)) != -1) {
-                out.write(buff, 0, len);
-            }
-            out.flush();
-            return relativePath;
-        } catch (IOException e) {
-            e.printStackTrace();
-            throw new IllegalArgumentException("上传文件失败,IO错误");
-        } finally {
-            try {
-                fileIn.close();
-                if (out != null) out.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    @Override
-    public boolean remove(String path) {
-        if (!StringUtils.hasText(path)) return false;
-        File file = new File(getFullPath(path));
-        if (!file.exists()) return false;
-        return file.delete();
-    }
-
-    @Override
-    public void download(HttpServletResponse response, String fileName, String relativePath) {
-        Assert.hasText(relativePath, "路径为空");
-        System.out.println("------------------------------------" + getFullPath(relativePath));
-        File file = new File(getFullPath(relativePath));
-        Assert.isTrue(file.exists(), "附件不存在");
-        String sp = relativePath.substring(relativePath.lastIndexOf(".") + 1);
-        Assert.isTrue(!excludeSp.contains(sp.toLowerCase()), "文件类型错误");
-        if (!StringUtils.hasText(fileName)) {
-            fileName = file.getName().substring(0, file.getName().lastIndexOf("."));
-        }
-        InputStream fis = null;
-        try {
-            response.setContentType("application/octet-stream");
-            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode((fileName + "." + sp), CharsetUtil.UTF_8));
-            fis = new BufferedInputStream(Files.newInputStream(file.toPath()));
-            response.addHeader("Content-Length", String.valueOf(fis.available()));
-            byte[] buff = new byte[4096];
-            int len;
-            while ((len = fis.read(buff)) != -1) {
-                response.getOutputStream().write(buff, 0, len);
-            }
-        } catch (Exception e) {
-            throw new IllegalArgumentException("下载文件失败: " + e.getMessage());
-        } finally {
-            try {
-                if (fis != null) fis.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    @Override
-    public void download(HttpServletResponse response, String relativePath) {
-        download(response, null, relativePath);
-    }
-
-    @Override
-    public String getFullPath(String relativePath) {
-        if (!relativePath.startsWith("/")) {
-            relativePath = "/" + relativePath;
-        }
-        return localPath + relativePath;
-    }
-
-    @Override
-    public String getSuffix(String fileName) {
-        Assert.hasText(fileName, "文件名不存在!");
-        if (fileName.lastIndexOf(".") < 0) {
-            return null;
-        }
-        return fileName.substring(fileName.lastIndexOf(".") + 1);
-    }
-
-    public String upload(String fileName, MultipartFile file) {
-        return upload(fileName, file, null);
-    }
-
-
-    @Override
-    public String getDiskRelativePath(String fileName, String suffix) {
-        Calendar c = Calendar.getInstance();
-        Date d = new Date();
-        c.setTime(d);
-        String year = Integer.toString(c.get(Calendar.YEAR));
-        String month = Integer.toString(c.get(Calendar.MONTH) + 1);
-        String day = Integer.toString(c.get(Calendar.DATE));
-        StringBuilder path = new StringBuilder();
-        path.append("/").append(year)
-                .append("/").append(month)
-                .append("/").append(day)
-                .append("/").append(fileName);
-        if (StringUtils.hasText(suffix)) path.append(".").append(suffix);
-        return path.toString();
-    }
-
-    private String upload(String fileName, MultipartFile file, String relativePath) {
-        Assert.isTrue(!file.isEmpty(), "文件不存在");
-        String originalFilename = file.getOriginalFilename();
-        if (fileName == null) fileName = IdUtil.simpleUUID();
-        String sp = getSuffix(originalFilename);
-        Assert.notNull(sp, "文件类型错误");
-        Assert.isTrue(!excludeSp.contains(sp.toLowerCase()), "文件类型错误");
-        try {
-            String filePath;
-            if (relativePath == null) {
-                filePath = getDiskRelativePath(fileName, sp);
-            } else {
-                relativePath = relativePath.endsWith("/") ? relativePath : relativePath + "/";
-                filePath = relativePath + fileName + "." + sp;
-            }
-
-            File destFile = new File(getFullPath(filePath));
-            destFile.getParentFile().mkdirs();
-            file.transferTo(destFile);
-            return filePath;
-        } catch (FileNotFoundException e) {
-            throw new IllegalArgumentException("上传文件失败,FileNotFound错误");
-        } catch (IOException e) {
-            throw new IllegalArgumentException("上传文件失败,IO错误");
-        }
-    }
-}
+//package com.sztzjy.financial_bigdata.util.file;
+//
+//import cn.hutool.core.util.CharsetUtil;
+//import cn.hutool.core.util.IdUtil;
+//import org.springframework.util.Assert;
+//import org.springframework.util.StringUtils;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.*;
+//import java.net.URLEncoder;
+//import java.nio.file.Files;
+//import java.util.Arrays;
+//import java.util.Calendar;
+//import java.util.Date;
+//import java.util.List;
+//
+//public class LocalFileUtil implements IFileUtil{
+//
+//    private final static List<String> excludeSp = Arrays.asList("exe", "bin", "sh");
+//
+//    private final String localPath;
+//
+//    public LocalFileUtil(String localPath) {
+//        this.localPath = localPath;
+//    }
+//
+//    @Override
+//    public String upload(MultipartFile file) {
+//        return upload(null, file);
+//    }
+//
+//    @Override
+//    public String upload(String objectName, InputStream fileIn) {
+//        Assert.notNull(fileIn, "文件不能为空");
+//        Assert.hasText(objectName, "文件名为空");
+//        Assert.isTrue(objectName.lastIndexOf(".") > 0, "文件名称需携带扩展后缀");
+//        FileOutputStream out = null;
+//        try {
+//            String relativePath = getDiskRelativePath(objectName, null);
+//            File file = new File(getFullPath(relativePath));
+//            file.getParentFile().mkdirs();
+//            out = new FileOutputStream(file);
+//            byte[] buff = new byte[4096];
+//            int len;
+//            while ((len = fileIn.read(buff)) != -1) {
+//                out.write(buff, 0, len);
+//            }
+//            out.flush();
+//            return relativePath;
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//            throw new IllegalArgumentException("上传文件失败,IO错误");
+//        } finally {
+//            try {
+//                fileIn.close();
+//                if (out != null) out.close();
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public boolean remove(String path) {
+//        if (!StringUtils.hasText(path)) return false;
+//        File file = new File(getFullPath(path));
+//        if (!file.exists()) return false;
+//        return file.delete();
+//    }
+//
+//    @Override
+//    public void download(HttpServletResponse response, String fileName, String relativePath) {
+//        Assert.hasText(relativePath, "路径为空");
+//        System.out.println("------------------------------------" + getFullPath(relativePath));
+//        File file = new File(getFullPath(relativePath));
+//        Assert.isTrue(file.exists(), "附件不存在");
+//        String sp = relativePath.substring(relativePath.lastIndexOf(".") + 1);
+//        Assert.isTrue(!excludeSp.contains(sp.toLowerCase()), "文件类型错误");
+//        if (!StringUtils.hasText(fileName)) {
+//            fileName = file.getName().substring(0, file.getName().lastIndexOf("."));
+//        }
+//        InputStream fis = null;
+//        try {
+//            response.setContentType("application/octet-stream");
+//            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode((fileName + "." + sp), CharsetUtil.UTF_8));
+//            fis = new BufferedInputStream(Files.newInputStream(file.toPath()));
+//            response.addHeader("Content-Length", String.valueOf(fis.available()));
+//            byte[] buff = new byte[4096];
+//            int len;
+//            while ((len = fis.read(buff)) != -1) {
+//                response.getOutputStream().write(buff, 0, len);
+//            }
+//        } catch (Exception e) {
+//            throw new IllegalArgumentException("下载文件失败: " + e.getMessage());
+//        } finally {
+//            try {
+//                if (fis != null) fis.close();
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public void download(HttpServletResponse response, String relativePath) {
+//        download(response, null, relativePath);
+//    }
+//
+//    @Override
+//    public String getFullPath(String relativePath) {
+//        if (!relativePath.startsWith("/")) {
+//            relativePath = "/" + relativePath;
+//        }
+//        return localPath + relativePath;
+//    }
+//
+//    @Override
+//    public String getSuffix(String fileName) {
+//        Assert.hasText(fileName, "文件名不存在!");
+//        if (fileName.lastIndexOf(".") < 0) {
+//            return null;
+//        }
+//        return fileName.substring(fileName.lastIndexOf(".") + 1);
+//    }
+//
+//    public String upload(String fileName, MultipartFile file) {
+//        return upload(fileName, file, null);
+//    }
+//
+//
+//    @Override
+//    public String getDiskRelativePath(String fileName, String suffix) {
+//        Calendar c = Calendar.getInstance();
+//        Date d = new Date();
+//        c.setTime(d);
+//        String year = Integer.toString(c.get(Calendar.YEAR));
+//        String month = Integer.toString(c.get(Calendar.MONTH) + 1);
+//        String day = Integer.toString(c.get(Calendar.DATE));
+//        StringBuilder path = new StringBuilder();
+//        path.append("/").append(year)
+//                .append("/").append(month)
+//                .append("/").append(day)
+//                .append("/").append(fileName);
+//        if (StringUtils.hasText(suffix)) path.append(".").append(suffix);
+//        return path.toString();
+//    }
+//
+//    private String upload(String fileName, MultipartFile file, String relativePath) {
+//        Assert.isTrue(!file.isEmpty(), "文件不存在");
+//        String originalFilename = file.getOriginalFilename();
+//        if (fileName == null) fileName = IdUtil.simpleUUID();
+//        String sp = getSuffix(originalFilename);
+//        Assert.notNull(sp, "文件类型错误");
+//        Assert.isTrue(!excludeSp.contains(sp.toLowerCase()), "文件类型错误");
+//        try {
+//            String filePath;
+//            if (relativePath == null) {
+//                filePath = getDiskRelativePath(fileName, sp);
+//            } else {
+//                relativePath = relativePath.endsWith("/") ? relativePath : relativePath + "/";
+//                filePath = relativePath + fileName + "." + sp;
+//            }
+//
+//            File destFile = new File(getFullPath(filePath));
+//            destFile.getParentFile().mkdirs();
+//            file.transferTo(destFile);
+//            return filePath;
+//        } catch (FileNotFoundException e) {
+//            throw new IllegalArgumentException("上传文件失败,FileNotFound错误");
+//        } catch (IOException e) {
+//            throw new IllegalArgumentException("上传文件失败,IO错误");
+//        }
+//    }
+//}