diff --git a/src/main/java/co/jp/app/common/ApiResponse.java b/src/main/java/co/jp/app/common/ApiResponse.java index fece8ec..359a688 100644 --- a/src/main/java/co/jp/app/common/ApiResponse.java +++ b/src/main/java/co/jp/app/common/ApiResponse.java @@ -2,15 +2,15 @@ package co.jp.app.common; public class ApiResponse { + //成功状况判定 private boolean success; + //状态码 private int code; + //状态信息 private String message; + //数据 private T data; - //空构造函数 - private ApiResponse() { - } - private ApiResponse(ResultCode resultCode, T data) { this.code = resultCode.getCode(); this.message = resultCode.getMessage(); @@ -18,12 +18,13 @@ public class ApiResponse { this.data = data; } - public static ApiResponse success(T data) { - return new ApiResponse<>(ResultCode.SUCCESS, data); + private ApiResponse() { } - public static ApiResponse success() { - return success(null); + public static ApiResponse fail() {return success(null);} + + public static ApiResponse success(T data) { + return new ApiResponse<>(ResultCode.SUCCESS, data); } public static ApiResponse fail(ResultCode resultCode) { diff --git a/src/main/java/co/jp/app/common/ResultCode.java b/src/main/java/co/jp/app/common/ResultCode.java index 4c2dcf3..fdaf672 100644 --- a/src/main/java/co/jp/app/common/ResultCode.java +++ b/src/main/java/co/jp/app/common/ResultCode.java @@ -28,7 +28,11 @@ public enum ResultCode { // 注册相关 // USER_REGISTRATION_SUCCESS(3000, "用户注册成功"), USER_EMAIL_ALREADY_EXISTS(3001, "Email already exists"), + USER_USERNAME_ALREADY_EXISTS(3002, "Username"), + + USER_EMAIL_NOT_VALID(3006, "Email is not valid"), + USER_PASSWORD_TOO_SHORT(3003, "password too short"), USER_PASSWORD_TOO_WEAK(3004, "password too weak"), USER_REGISTRATION_FAILED(3005, "User registration failed"), diff --git a/src/main/java/co/jp/app/controller/UserController.java b/src/main/java/co/jp/app/controller/UserController.java index a36d3ad..667cef1 100644 --- a/src/main/java/co/jp/app/controller/UserController.java +++ b/src/main/java/co/jp/app/controller/UserController.java @@ -24,7 +24,6 @@ import co.jp.app.service.UserService; import jakarta.validation.Valid; @RestController - public class UserController { private final UserService userService; diff --git a/src/main/java/co/jp/app/dto/LoginDto.java b/src/main/java/co/jp/app/dto/LoginDto.java index d288aa1..43c2cf1 100644 --- a/src/main/java/co/jp/app/dto/LoginDto.java +++ b/src/main/java/co/jp/app/dto/LoginDto.java @@ -1,9 +1,17 @@ package co.jp.app.dto; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; + public class LoginDto { + @NotBlank(message = "邮箱不能为空") + @Email(message = "邮箱格式不正确,请输入有效的邮箱地址") private String email; + @NotBlank(message = "密码不能为空") + @Size(min = 6, max = 30, message = "密码长度必须在6到30位之间") private String password; public String getEmail() { diff --git a/src/main/java/co/jp/app/dto/RegistrationDto.java b/src/main/java/co/jp/app/dto/RegistrationDto.java index e93533f..9a68d28 100644 --- a/src/main/java/co/jp/app/dto/RegistrationDto.java +++ b/src/main/java/co/jp/app/dto/RegistrationDto.java @@ -1,11 +1,26 @@ package co.jp.app.dto; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; // 或 javax.validation.constraints.NotBlank +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; + public class RegistrationDto { + //注:username可以为空 + @Size(min = 2, max = 20, message = "用户名长度必须在2到20个字符之间") + @Pattern( + regexp = "^[a-zA-Z\\p{script=Han}]+$", + message = "用户名只能包含大小写英文字母和汉字,不能使用数字和标点符号" + ) private String name; + @NotBlank(message = "邮箱不能为空") + @Email(message = "邮箱格式不正确,请输入有效的邮箱地址") private String email; + @NotBlank(message = "密码不能为空") + @Size(min = 6, max = 30, message = "密码长度必须在6到30位之间") private String password; public String getName() { diff --git a/src/main/java/co/jp/app/service/UserService.java b/src/main/java/co/jp/app/service/UserService.java index e3ad20f..737a09c 100644 --- a/src/main/java/co/jp/app/service/UserService.java +++ b/src/main/java/co/jp/app/service/UserService.java @@ -34,7 +34,7 @@ public class UserService implements UserDetailsService { public UserEntity registerNewUser(@NotNull RegistrationDto registrationDto) throws BusinessException { - if (userRepository.existsByName(registrationDto.getName())) { + if (userRepository.existsByEmail(registrationDto.getEmail())) { throw new BusinessException(ResultCode.USER_USERNAME_ALREADY_EXISTS,"error: Name" + registrationDto.getName() + " had been used"); } @@ -55,15 +55,15 @@ public class UserService implements UserDetailsService { @Override @Transactional(readOnly = true) - public UserDetails loadUserByUsername(String name) throws UsernameNotFoundException { - UserEntity userEntity = userRepository.findByName(name) - .orElseThrow(() -> new UsernameNotFoundException(name + " not found")); + public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { + UserEntity userEntity = userRepository.findByEmail(email) + .orElseThrow(() -> new UsernameNotFoundException(email + " not found")); Collection authorities = Collections .singletonList(new SimpleGrantedAuthority("ROLE_USER")); return new User( - userEntity.getName(), + userEntity.getEmail(), userEntity.getPassword(), true, // enabled true, // accountNonExpired