Browse Source

# feat:用户相关实体的接口添加数据校验
- 使用spring-boot-starter-validation

yang yi 1 tuần trước cách đây
mục cha
commit
7ccb7178bf

+ 33 - 13
src/main/java/space/anyi/serve/controller/UserController.java

@@ -2,6 +2,10 @@ package space.anyi.serve.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 import space.anyi.serve.entity.PageVo;
@@ -10,6 +14,7 @@ import space.anyi.serve.entity.user.*;
 import space.anyi.serve.service.UserService;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -43,8 +48,8 @@ public class UserController {
             String username,
             String role,
             @RequestParam(defaultValue = "1") Integer enable,
-            @RequestParam(defaultValue = "1") Integer pageNum,
-            @RequestParam(defaultValue = "10") Integer pageSize) {
+            @NotNull(message = "页码不能为null") @RequestParam(defaultValue = "1") Integer pageNum,
+            @NotNull(message = "分页大小不能为null")@RequestParam(defaultValue = "10") Integer pageSize) {
         User user = new User();
         user.setAccount(account);
         user.setUsername(username);
@@ -61,7 +66,7 @@ public class UserController {
      * @return 单条数据
      */
     @GetMapping("{id}")
-    public Response<UserVo> queryById(@PathVariable String id) {
+    public Response<UserVo> queryById(@NotBlank(message = "用户ID不能为空") @PathVariable String id) {
         User user = this.userService.queryById(Long.valueOf(id));
         return Response.ok(UserVo.form(user));
     }
@@ -73,7 +78,7 @@ public class UserController {
      * @return 新增结果
      */
     @PostMapping
-    public Response<Boolean> add(@RequestBody UserDto userDto) {
+    public Response<Boolean> add(@Valid@RequestBody UserDto userDto) {
         User user = new User();
         BeanUtils.copyProperties(userDto,user);
         return Response.ok(this.userService.insert(user));
@@ -86,7 +91,7 @@ public class UserController {
      * @return 编辑结果
      */
     @PutMapping
-    public Response<Boolean> edit(@RequestBody UserDto userDto) {
+    public Response<Boolean> edit(@Valid@RequestBody UserDto userDto) {
         User user = new User();
         BeanUtils.copyProperties(userDto,user);
         user.setId(Long.valueOf(userDto.getId()));
@@ -100,29 +105,44 @@ public class UserController {
      * @return 删除是否成功
      */
     @DeleteMapping
-    public Response<Boolean> deleteById(List<Long> ids) {
-        return Response.ok(this.userService.deleteById(ids));
+    public Response<Boolean> deleteById(@NotEmpty(message = "ID列表不能为空") List<String> ids) {
+        List<Long> list = ids.stream().map(Long::valueOf).toList();
+        return Response.ok(this.userService.deleteById(list));
     }
 
-    //更新用户状态
+    /**
+     * 更新用户状态
+     * @param dto
+     * @return
+     */
     @PutMapping("/updateStatus")
-    public Response updateUserStatus(@RequestBody UpdateUserStatusDto dto){
+    public Response updateUserStatus(@Valid@RequestBody UpdateUserStatusDto dto){
         User user = new User();
         BeanUtils.copyProperties(dto,user);
         user.setId(Long.valueOf(dto.getId()));
         return Response.ok(userService.updateUserStatus(user));
     }
-    //更新用户头像
+
+    /**
+     * 更新用户头像
+     * @param dto
+     * @return
+     */
     @PutMapping("/updateAvatar")
-    public Response updateUserAvatar(@RequestBody UpdateUserAvatarDto dto){
+    public Response updateUserAvatar(@Valid@RequestBody UpdateUserAvatarDto dto){
         User user = new User();
         BeanUtils.copyProperties(dto,user);
         user.setId(Long.valueOf(dto.getId()));
         return Response.ok(userService.updateUserAvatar(user));
     }
-    //更新用户密码
+
+    /**
+     * 更新用户密码
+     * @param dto
+     * @return
+     */
     @PutMapping("/updatePassword")
-    public Response updatePassword(@RequestBody UpdateUserPasswordDto dto){
+    public Response updatePassword(@Valid @RequestBody UpdateUserPasswordDto dto){
         User user = new User();
         BeanUtils.copyProperties(dto,user);
         user.setId(Long.valueOf(dto.getId()));

+ 4 - 0
src/main/java/space/anyi/serve/entity/user/UpdateUserPasswordDto.java

@@ -1,6 +1,7 @@
 package space.anyi.serve.entity.user;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 
 /**
  * @fileName: UpdateUserPasswordDto
@@ -12,10 +13,13 @@ import io.swagger.v3.oas.annotations.media.Schema;
  */
 @Schema(description = "用户密码修改使用的DTO")
 public class UpdateUserPasswordDto {
+    @NotBlank(message = "用户ID不能为空")
     @Schema(description = "用户ID")
     private String id;
+    @NotBlank(message = "用户的旧密码不能为空")
     @Schema(description = "用户的当前密码")
     private String password;
+    @NotBlank(message = "用户的新密码不能为空")
     @Schema(description = "用户的新密码")
     private String oldPassword;
 

+ 7 - 2
src/main/java/space/anyi/serve/entity/user/UpdateUserStatusDto.java

@@ -2,7 +2,10 @@ package space.anyi.serve.entity.user;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.SchemaProperty;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 
 /**
  * @fileName: UpdateUserStatusDto
@@ -14,10 +17,12 @@ import jakarta.validation.constraints.NotBlank;
  */
 @Schema(description = "用户状态更新使用的DTO")
 public class UpdateUserStatusDto {
-    @NotBlank
+    @NotBlank(message = "用户ID不能为空")
     @Schema(description = "用户ID")
     private String id;
-    @NotBlank
+    @NotNull(message = "用户状态不能为空")
+    @Min(value = 0,message = "状态不能小于0")
+    @Max(value = 1,message = "用户状态不能大于1")
     @Schema(description = "更新后的状态;1:启用,0:禁用")
     private Integer enable;
 

+ 9 - 0
src/main/java/space/anyi/serve/entity/user/UserDto.java

@@ -1,6 +1,8 @@
 package space.anyi.serve.entity.user;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import org.hibernate.validator.constraints.Length;
 import org.springframework.lang.NonNull;
 
 /**
@@ -15,12 +17,19 @@ import org.springframework.lang.NonNull;
 public class UserDto {
     @Schema(description = "用户ID")
     private String id;
+    @NotBlank(message = "用户账号不能为空")
+    @Length(min = 4,max = 20,message = "用户账号长度不能小于4且不能大于20")
     @Schema(description = "用户账号")
     private String account;
+    @NotBlank(message = "用户密码不能为空")
+    @Length(min = 4,max = 20,message = "用户密码长度不能小于4且不能大于20")
     @Schema(description = "用户密码")
     private String password;
+    @NotBlank(message = "用户名称不能为空")
+    @Length(min = 2,max = 32,message = "用户名称长度不能小于2且不能大于32")
     @Schema(description = "用户名称")
     private String username;
+    @NotBlank(message = "用户角色不能为空")
     @Schema(description = "用户角色")
     private String role;