From 2e0aeb31e210bce6175e64fd0005db2746eab0d0 Mon Sep 17 00:00:00 2001 From: MAC <1162714483@qq.com> Date: Wed, 8 Sep 2021 22:24:09 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C):=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E5=90=88=E6=B3=95=E6=80=A7=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=EF=BC=8C=E5=9B=BE=E5=83=8F=E9=A2=84=E8=A7=88=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../advice/GlobalExceptionHandlerAdvice.java | 12 +++++++++++ .../file/component/UserDealComp.java | 4 ++-- .../file/controller/FileController.java | 3 ++- .../file/controller/UserController.java | 3 ++- .../file/dto/file/BatchDeleteFileDTO.java | 7 ++++++- .../file/dto/file/CreateFileDTO.java | 8 ++++++++ .../qiwenshare/file/dto/user/RegisterDTO.java | 20 ++++++++++++++++--- .../file/service/FiletransferService.java | 2 +- .../qiwenshare/file/service/UserService.java | 10 ---------- 10 files changed, 51 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index c242628..922f6be 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.qiwenshare qiwenshare - 1.0.9 + 1.0.10 qiwen-file diff --git a/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java b/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java index ebbb5de..eeec58d 100644 --- a/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java +++ b/src/main/java/com/qiwenshare/file/advice/GlobalExceptionHandlerAdvice.java @@ -7,6 +7,7 @@ import com.qiwenshare.common.result.ResultCodeEnum; import com.qiwenshare.ufop.exception.UploadException; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; +import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; @@ -69,6 +70,17 @@ public class GlobalExceptionHandlerAdvice { return RestResult.setResult(ResultCodeEnum.NOT_LOGIN_ERROR); } + /** + * 方法参数校验 + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + @ResponseBody + @ResponseStatus(HttpStatus.BAD_REQUEST) + public RestResult handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { + log.error(e.getMessage(), e); + return RestResult.setResult(ResultCodeEnum.PARAM_ERROR).message(e.getBindingResult().getFieldError().getDefaultMessage()); + } + /**-------- 自定义定异常处理方法 --------**/ @ExceptionHandler(QiwenException.class) diff --git a/src/main/java/com/qiwenshare/file/component/UserDealComp.java b/src/main/java/com/qiwenshare/file/component/UserDealComp.java index 89c461a..bb2fc0b 100644 --- a/src/main/java/com/qiwenshare/file/component/UserDealComp.java +++ b/src/main/java/com/qiwenshare/file/component/UserDealComp.java @@ -1,6 +1,7 @@ package com.qiwenshare.file.component; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qiwenshare.common.constant.RegexConstant; import com.qiwenshare.file.domain.UserBean; import com.qiwenshare.file.mapper.UserMapper; import org.springframework.stereotype.Component; @@ -51,8 +52,7 @@ public class UserDealComp { } public Boolean isPhoneFormatRight(String phone){ - String regex = "^1\\d{10}"; - boolean isRight = Pattern.matches(regex, phone); + boolean isRight = Pattern.matches(RegexConstant.PASSWORD_REGEX, phone); return isRight; } } diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index 25420d4..1a5f1c5 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -40,6 +40,7 @@ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilde import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; import java.util.*; @Tag(name = "file", description = "该接口为文件接口,主要用来做一些文件的基本操作,如创建目录,删除,移动,复制等。") @@ -67,7 +68,7 @@ public class FileController { @RequestMapping(value = "/createfile", method = RequestMethod.POST) @MyLog(operation = "创建文件", module = CURRENT_MODULE) @ResponseBody - public RestResult createFile(@RequestBody CreateFileDTO createFileDto) { + public RestResult createFile(@Valid @RequestBody CreateFileDTO createFileDto) { UserBean sessionUserBean = (UserBean) SessionUtil.getSession(); diff --git a/src/main/java/com/qiwenshare/file/controller/UserController.java b/src/main/java/com/qiwenshare/file/controller/UserController.java index c516c70..bfee0d4 100644 --- a/src/main/java/com/qiwenshare/file/controller/UserController.java +++ b/src/main/java/com/qiwenshare/file/controller/UserController.java @@ -18,6 +18,7 @@ import org.apache.shiro.crypto.hash.SimpleHash; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; import java.util.HashMap; import java.util.Map; @@ -42,7 +43,7 @@ public class UserController { @PostMapping(value = "/register") @MyLog(operation = "用户注册", module = CURRENT_MODULE) @ResponseBody - public RestResult addUser(@RequestBody RegisterDTO registerDTO) { + public RestResult addUser(@Valid @RequestBody RegisterDTO registerDTO) { RestResult restResult = null; UserBean userBean = new UserBean(); BeanUtil.copyProperties(registerDTO, userBean); diff --git a/src/main/java/com/qiwenshare/file/dto/file/BatchDeleteFileDTO.java b/src/main/java/com/qiwenshare/file/dto/file/BatchDeleteFileDTO.java index 4574dc3..a5cc9db 100644 --- a/src/main/java/com/qiwenshare/file/dto/file/BatchDeleteFileDTO.java +++ b/src/main/java/com/qiwenshare/file/dto/file/BatchDeleteFileDTO.java @@ -3,12 +3,17 @@ package com.qiwenshare.file.dto.file; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.regex.Pattern; + @Data @Schema(name = "批量删除文件DTO",required = true) public class BatchDeleteFileDTO { @Schema(description="文件集合", required = true) private String files; - + public static void main(String[] args) { + boolean ddd = Pattern.matches("(?!((^(con)$)|^(con)/..*|(^(prn)$)|^(prn)/..*|(^(aux)$)|^(aux)/..*|(^(nul)$)|^(nul)/..*|(^(com)[1-9]$)|^(com)[1-9]/..*|(^(lpt)[1-9]$)|^(lpt)[1-9]/..*)|^/s+|.*/s$)(^[^/////:/*/?/\"//|]{1,255}$)", "con1"); + System.out.println(ddd); + } } diff --git a/src/main/java/com/qiwenshare/file/dto/file/CreateFileDTO.java b/src/main/java/com/qiwenshare/file/dto/file/CreateFileDTO.java index f6434cc..278a62e 100644 --- a/src/main/java/com/qiwenshare/file/dto/file/CreateFileDTO.java +++ b/src/main/java/com/qiwenshare/file/dto/file/CreateFileDTO.java @@ -1,13 +1,21 @@ package com.qiwenshare.file.dto.file; +import com.qiwenshare.common.constant.RegexConstant; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; + @Data @Schema(name = "创建文件DTO",required = true) public class CreateFileDTO { @Schema(description="文件名", required=true) + @NotBlank(message = "文件名不能为空") + @Pattern(regexp = RegexConstant.FILE_NAME_REGEX, message = "文件名不合法!") private String fileName; @Schema(description="文件路径", required=true) private String filePath; + } diff --git a/src/main/java/com/qiwenshare/file/dto/user/RegisterDTO.java b/src/main/java/com/qiwenshare/file/dto/user/RegisterDTO.java index 7e72cf5..01762e0 100644 --- a/src/main/java/com/qiwenshare/file/dto/user/RegisterDTO.java +++ b/src/main/java/com/qiwenshare/file/dto/user/RegisterDTO.java @@ -1,15 +1,29 @@ package com.qiwenshare.file.dto.user; +import com.qiwenshare.common.constant.RegexConstant; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; + @Data @Schema(name = "用户注册DTO",required = true) public class RegisterDTO { - @Schema(description = "用户名") + + @Schema(description = "用户名", required = true, example = "奇文网盘") + @NotBlank(message = "用户名不能为空") + @Size(min = 1, max = 20, message = "用户名最少1位,最多20位") private String username; - @Schema(description = "手机号") + + @Schema(description = "手机号", required = true, example = "13911112222") + @NotBlank(message = "手机号不能为空") + @Pattern(regexp = RegexConstant.PHONE_REGEX, message = "手机号码输入有误") private String telephone; - @Schema(description = "密码") + + @Schema(description = "密码", required = true, example = "password123") + @NotBlank(message = "密码不能为空") + @Pattern(regexp = RegexConstant.PASSWORD_REGEX, message = "密码长度6-20位,不允许中文") private String password; } diff --git a/src/main/java/com/qiwenshare/file/service/FiletransferService.java b/src/main/java/com/qiwenshare/file/service/FiletransferService.java index d16e21b..c1bdd3a 100644 --- a/src/main/java/com/qiwenshare/file/service/FiletransferService.java +++ b/src/main/java/com/qiwenshare/file/service/FiletransferService.java @@ -208,7 +208,7 @@ public class FiletransferService implements IFiletransferService { FileBean fileBean = fileMapper.selectById(userFile1.getFileId()); Downloader downloader = ufopFactory.getDownloader(fileBean.getStorageType()); if (downloader == null) { - log.error("下载失败,文件存储类型不支持下载,storageType:{}, isOSS:{}", fileBean.getStorageType()); + log.error("下载失败,文件存储类型不支持下载,storageType:{}", fileBean.getStorageType()); throw new UploadException("下载失败"); } DownloadFile downloadFile = new DownloadFile(); diff --git a/src/main/java/com/qiwenshare/file/service/UserService.java b/src/main/java/com/qiwenshare/file/service/UserService.java index 7c7f3eb..ec3c96a 100644 --- a/src/main/java/com/qiwenshare/file/service/UserService.java +++ b/src/main/java/com/qiwenshare/file/service/UserService.java @@ -110,17 +110,7 @@ public class UserService extends ServiceImpl implements IU // return restResult; // } UserController.verificationCodeMap.remove(telephone); - if (userBean.getTelephone() == null || "".equals(userBean.getTelephone())){ - return RestResult.fail().message("用户名不能为空!"); - } - if (userBean.getPassword() == null || "".equals(userBean.getPassword())){ - return RestResult.fail().message("密码不能为空!"); - } - - if (userBean.getUsername() == null || "".equals(userBean.getUsername())){ - return RestResult.fail().message("用户名不能为空!"); - } if (userDealComp.isUserNameExit(userBean)) { return RestResult.fail().message("用户名已存在!"); }