From a69b31c6d942b816e1e48e9dc017a6f52bd23ae4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 31 May 2022 19:04:37 +0800
Subject: [PATCH] 20220527

---
 src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java                            |   17 +++++
 src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java              |    3 +
 src/main/resources/application.properties                                                      |    4 +
 src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java        |    4 +
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java          |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java          |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java        |  115 ++++++++++++++++++++++++++++++++++---
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java          |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java                |   16 +++++
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java        |    2 
 src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java                            |    3 +
 12 files changed, 152 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java b/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java
index aa6c37c..315de52 100644
--- a/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java
+++ b/src/main/java/com/xcong/farmer/cms/common/contants/AppContants.java
@@ -21,4 +21,7 @@
      */
     public static final String TOKEN_START_WITH = "Bearer ";
 
+    public static final String PICTURE_PATH = "D:\\Tools\\";
+
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java
index 86faea6..c5c60a5 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/WebMvcConfig.java
@@ -1,11 +1,16 @@
 package com.xcong.farmer.cms.configurations;
 
+import com.xcong.farmer.cms.common.contants.AppContants;
+import com.xcong.farmer.cms.configurations.properties.ApplicationProperties;
 import com.xcong.farmer.cms.utils.SpringContextHolder;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.SpringBootConfiguration;
 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.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 /**
@@ -37,4 +42,16 @@
     public SpringContextHolder springContextHolder() {
         return new SpringContextHolder();
     }
+
+    @Value("${upload.file.location}")
+    private String fileLocation;
+    @Value("${upload.file.path}")
+    private String filePath;
+    @Override
+    public void addResourceHandlers(ResourceHandlerRegistry registry) {
+        //注册配置类,使用addResourceHandlers方法,将本地路径savePath映射到saveUrl路由上。
+        registry.addResourceHandler(filePath).addResourceLocations(fileLocation);
+        WebMvcConfigurer.super.addResourceHandlers(registry);
+    }
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java b/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java
index a9a2ca4..809259f 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java
@@ -17,4 +17,8 @@
 
     private boolean debug;
 
+    private String fileStoragePath;
+
+    private String staticResourceUrl;
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
index 7d8f85e..9456823 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
@@ -43,6 +43,9 @@
                 .antMatchers("/webjars/**").permitAll()
                 .antMatchers("/v2/**").permitAll()
                 .antMatchers("/api/common/login").permitAll()
+                .antMatchers("/api/common/doUpload").permitAll()
+                .antMatchers("/api/common/uploadFile").permitAll()
+                .antMatchers("/image/**").permitAll()
                 .anyRequest().authenticated()
                 .and().apply(securityConfiguereAdapter());
     }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java
index 1d87867..e1e58f4 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminColumnController.java
@@ -28,7 +28,7 @@
     @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminColumnVo.class)})
     @PostMapping(value = "/columnInPage")
     public Result getColumnInPage(@RequestBody @Valid AdminColumnDto adminColumnDto) {
-        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
+//        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
         return iColumnService.getColumnInPage(adminColumnDto);
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
index 2b5bc78..91c6b5f 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
@@ -2,28 +2,32 @@
 
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.crypto.SecureUtil;
-import com.alibaba.fastjson.JSONObject;
 import com.xcong.farmer.cms.common.contants.AppContants;
 import com.xcong.farmer.cms.common.response.Result;
-import com.xcong.farmer.cms.common.system.bean.LoginUserBean;
-import com.xcong.farmer.cms.common.system.dto.LoginDto;
+import com.xcong.farmer.cms.configurations.properties.ApplicationProperties;
+import com.xcong.farmer.cms.modules.system.dto.AdminBase64UploadDto;
 import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
 import com.xcong.farmer.cms.modules.system.service.ICommonService;
-import com.xcong.farmer.cms.modules.system.service.IUserService;
-import com.xcong.farmer.cms.utils.RedisUtils;
+import com.xcong.farmer.cms.utils.SpringContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.util.FileCopyUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import sun.misc.BASE64Decoder;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.Map;
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import cn.hutool.core.util.ObjectUtil;
+
+
 
 @RestController
 @RequestMapping(value = "/api/common")
@@ -59,4 +63,93 @@
         return iCommonService.memberLogout();
     }
 
+    private Long maxSize = 1024*1024*100L;
+
+
+
+//    /**
+//     * 文件上传方法
+//     */
+//    @ApiOperation(value = "文件上传", notes = "文件上传")
+//    @PostMapping(value = "/doUpload")
+//    public Result doFileUpload(@RequestBody @Validated AdminBase64UploadDto uploadDto){
+//        // 文件保存目录路径
+//        String savePath = AppContants.PICTURE_PATH;
+//        // 文件保存目录URL
+//        String saveUrl = resourceUrl;
+//        // 保存和访问路径检查
+//        if (StrUtil.isEmpty(saveUrl) || StrUtil.isEmpty(savePath)) {
+//            return Result.fail("文件上传失败");
+//        }
+//        // 检查目录
+//        File uploadDir = new File(savePath);
+//        if (!uploadDir.isDirectory()) {
+//            uploadDir.mkdir();
+//        }
+//        log.info("uploadDto:" + uploadDto.getBase64Str());
+//        BASE64Decoder decoder = new BASE64Decoder();
+//        byte[] bytes = new byte[0];
+//        try {
+//            bytes = decoder.decodeBuffer(uploadDto.getBase64Str());
+//        } catch (IOException e) {
+//            return Result.fail("上传文件失败");
+//        }
+//
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+//        String ymd = sdf.format(new Date());
+//        savePath += ymd + "/";
+//        saveUrl += ymd + "/";
+//        File dirFile = new File(savePath);
+//        if (!dirFile.exists()) {
+//            dirFile.mkdirs();
+//        }
+//        if (bytes.length > maxSize) {
+//            return Result.fail("上传文件大小超过限制");
+//        }
+//        String newFileName = IdUtil.simpleUUID() + IdUtil.simpleUUID() + ".png";
+//        File uploadedFile = new File(savePath, newFileName);
+//        try {
+//            FileCopyUtils.copy(bytes, uploadedFile);
+//        } catch (Exception e) {
+//            return Result.fail("上传文件失败");
+//        }
+//        log.info("saveUrl:" + saveUrl);
+//        String visitPath = saveUrl + newFileName;
+//        log.info("上传一个文件:" + newFileName);
+//        log.info("访问路径:" + visitPath);
+//
+//        return Result.ok("上传成功",visitPath);
+//    }
+
+    @Value("${static.resource.url}")
+    private String resourceUrl;
+
+    @ApiOperation(value = "文件上传", notes = "文件上传")
+    @PostMapping("/uploadFile")
+    public Result uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
+
+        // 文件保存目录路径
+        String savePath = AppContants.PICTURE_PATH;
+        // 文件保存目录URL
+        String saveUrl = resourceUrl;
+        // 检查目录
+        File uploadDir = new File(savePath);
+        if (!uploadDir.isDirectory()) {
+            uploadDir.mkdir();
+        }
+        //获得文件的后缀
+        String filename = IdUtil.simpleUUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+        File filepath = new File(savePath + filename);
+        try {
+            //存文件
+            file.transferTo(filepath);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        String visitPath = (saveUrl + filename);
+        return Result.ok("上传成功",visitPath);
+    }
+
+
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java
index d868849..0311888 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java
@@ -30,7 +30,6 @@
     @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminMenuVo.class)})
     @PostMapping(value = "/menuInPage")
     public Result getMenuInPage(@RequestBody @Valid AdminMenuDto adminMenuDto) {
-        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
         return iMenuService.getMenuInPage(adminMenuDto);
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java
index 89970dc..dc1c9c4 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminNavigationBarController.java
@@ -28,7 +28,6 @@
     @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminNavigationBarVo.class)})
     @PostMapping(value = "/barInPage")
     public Result getBarInPage(@RequestBody @Valid AdminNavigationBarDto adminNavigationBarDto) {
-        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
         return iNavigationBarService.getBarInPage(adminNavigationBarDto);
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java
index 81a54a4..bf6952d 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java
@@ -30,7 +30,6 @@
     @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminRoleVo.class)})
     @PostMapping(value = "/userInPage")
     public Result getUserInPage(@RequestBody @Valid AdminRoleDto adminRoleDto) {
-        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
         return iRoleService.getRoleInPage(adminRoleDto);
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
index e1b28aa..83e1d8b 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
@@ -33,7 +33,6 @@
     @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminUserVo.class)})
     @PostMapping(value = "/userInPage")
     public Result getUserInPage(@RequestBody @Valid AdminUserDto adminUserDto) {
-        log.info("--->{}", SecurityContextHolder.getContext().getAuthentication());
         return iUserService.getUserInPage(adminUserDto);
     }
 
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java
new file mode 100644
index 0000000..88be92e
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminBase64UploadDto.java
@@ -0,0 +1,16 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@ApiModel(value = "AdminBase64UploadDto", description = "参数接收类")
+public class AdminBase64UploadDto {
+
+    @NotBlank
+    @ApiModelProperty(value = "base64字符串")
+    public String base64Str;
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..5f5d326
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,4 @@
+# �����ϴ�ͼƬ��·���ͷ���ͼƬͼƬ��·��
+upload.file.location=file:D:/Tools/
+upload.file.path =/image/**
+static.resource.url =http://localhost:8878/image/

--
Gitblit v1.9.1