From 4d23b57af2be832aa87c51214d2c4c601be9fdc1 Mon Sep 17 00:00:00 2001 From: YuNan <3194726156@qq.com> Date: Tue, 12 Nov 2024 18:27:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=85=A5=E6=8E=A5=E5=8F=A3=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yunan/controller/AuthController.java | 4 +- .../src/main/java/com/yunan/dto/LoginDTO.java | 13 ++- .../main/java/com/yunan/dto/RegisterDTO.java | 3 + .../src/main/java/com/yunan/dto/Users.java | 2 + .../java/com/yunan/service/AuthService.java | 3 + .../yunan/service/impl/AuthServiceImpl.java | 82 +++++++++++++++++++ 6 files changed, 103 insertions(+), 4 deletions(-) diff --git a/YuNan-system-start/src/main/java/com/yunan/controller/AuthController.java b/YuNan-system-start/src/main/java/com/yunan/controller/AuthController.java index ee947f1..cbb0c97 100644 --- a/YuNan-system-start/src/main/java/com/yunan/controller/AuthController.java +++ b/YuNan-system-start/src/main/java/com/yunan/controller/AuthController.java @@ -41,8 +41,8 @@ public class AuthController { */ @PostMapping("/login") @ApiOperation("用户登入") - public void login(@RequestBody LoginDTO loginDTO) { -// authService.login(loginDTO.getUsername(), loginDTO.getPassword()); + public ResponseEntity login(@RequestBody LoginDTO loginDTO) { + return authService.login(loginDTO); } diff --git a/YuNan-system-start/src/main/java/com/yunan/dto/LoginDTO.java b/YuNan-system-start/src/main/java/com/yunan/dto/LoginDTO.java index 235ace7..1e61619 100644 --- a/YuNan-system-start/src/main/java/com/yunan/dto/LoginDTO.java +++ b/YuNan-system-start/src/main/java/com/yunan/dto/LoginDTO.java @@ -12,17 +12,26 @@ import javax.validation.constraints.NotBlank; public class LoginDTO { @NotBlank(message = "用户名不能为空") - @ApiModelProperty(value = "用户名", required = true) + @ApiModelProperty(value = "用户名") private String username; @Email(message = "请输入有效的邮箱") @ApiModelProperty(value = "邮箱") private String email; + @ApiModelProperty(value = "电话号码") + private String phoneNumber; + + @ApiModelProperty(value = "邮箱或者电话号码", required = true) + private String emailOrPhoneNumber; + @NotBlank(message = "密码不能为空") - @ApiModelProperty(value = "密码", required = true) + @ApiModelProperty(value = "密码") private String password; + @ApiModelProperty(value = "验证码") + private String code; + private String token; } diff --git a/YuNan-system-start/src/main/java/com/yunan/dto/RegisterDTO.java b/YuNan-system-start/src/main/java/com/yunan/dto/RegisterDTO.java index 719973f..c60f659 100644 --- a/YuNan-system-start/src/main/java/com/yunan/dto/RegisterDTO.java +++ b/YuNan-system-start/src/main/java/com/yunan/dto/RegisterDTO.java @@ -18,6 +18,9 @@ public class RegisterDTO { @ApiModelProperty(value = "邮箱", required = true) private String email; + @ApiModelProperty(value = "电话号码") + private String phoneNumber; + @NotBlank(message = "密码不能为空") @ApiModelProperty(value = "密码", required = true) private String password; diff --git a/YuNan-system-start/src/main/java/com/yunan/dto/Users.java b/YuNan-system-start/src/main/java/com/yunan/dto/Users.java index 0b55ef4..b93d241 100644 --- a/YuNan-system-start/src/main/java/com/yunan/dto/Users.java +++ b/YuNan-system-start/src/main/java/com/yunan/dto/Users.java @@ -17,6 +17,8 @@ public class Users implements Serializable { private String password; /** 邮箱*/ private String email; + /** 手机号*/ + private String phoneNumber; /** 创建用户信息时间 */ private Date createdTime; /** 修改用户信息时间 */ diff --git a/YuNan-system-start/src/main/java/com/yunan/service/AuthService.java b/YuNan-system-start/src/main/java/com/yunan/service/AuthService.java index 8448ad7..d0f5f71 100644 --- a/YuNan-system-start/src/main/java/com/yunan/service/AuthService.java +++ b/YuNan-system-start/src/main/java/com/yunan/service/AuthService.java @@ -1,6 +1,7 @@ package com.yunan.service; +import com.yunan.dto.LoginDTO; import com.yunan.dto.RegisterDTO; import org.springframework.http.ResponseEntity; @@ -11,4 +12,6 @@ import java.io.UnsupportedEncodingException; public interface AuthService { ResponseEntity register(RegisterDTO registerDTO) throws UnsupportedEncodingException, AddressException, MessagingException; + + ResponseEntity login(LoginDTO loginDTO); } diff --git a/YuNan-system-start/src/main/java/com/yunan/service/impl/AuthServiceImpl.java b/YuNan-system-start/src/main/java/com/yunan/service/impl/AuthServiceImpl.java index f4d9e15..0cd19bb 100644 --- a/YuNan-system-start/src/main/java/com/yunan/service/impl/AuthServiceImpl.java +++ b/YuNan-system-start/src/main/java/com/yunan/service/impl/AuthServiceImpl.java @@ -1,12 +1,14 @@ package com.yunan.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.yunan.dto.LoginDTO; import com.yunan.dto.RegisterDTO; import com.yunan.dto.Users; import com.yunan.mapper.AuthMapper; import com.yunan.response.ErrorResponse; import com.yunan.service.AuthService; import com.yunan.util.RedisUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -18,6 +20,7 @@ import java.util.Date; import java.util.Random; +@Slf4j @Service public class AuthServiceImpl implements AuthService { @Resource @@ -25,6 +28,19 @@ public class AuthServiceImpl implements AuthService { @Autowired RedisUtils redisUtils; + // 手机号正则表达式 + private static final String PHONE_REGEX = "^1[3-9]\\d{9}$"; + // 邮箱正则表达式 + private static final String EMAIL_REGEX = + "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$"; + + public static boolean isValidPhone(String phone) { + return phone != null && phone.matches(PHONE_REGEX); + } + + public static boolean isValidEmail(String input) { + return input != null && input.matches(EMAIL_REGEX); + } @Override public ResponseEntity register(RegisterDTO registerDTO) { @@ -52,6 +68,11 @@ public class AuthServiceImpl implements AuthService { //状态设置 " 1 " 正常账号 user.setState(1); boolean isSaved = authMapper.insert(user) > 0; + //测试 +// boolean isSaved = false; +// boolean isSaved = true; + + if (isSaved) { return ResponseEntity .status(HttpStatus.OK) @@ -69,6 +90,67 @@ public class AuthServiceImpl implements AuthService { } } + + @Override + public ResponseEntity login(LoginDTO loginDTO) { + log.info("emai: {}", isValidEmail(loginDTO.getEmailOrPhoneNumber())); + log.info("phone: {}", isValidPhone(loginDTO.getEmailOrPhoneNumber())); + if(isValidPhone(loginDTO.getEmailOrPhoneNumber())) { + loginDTO.setPhoneNumber(loginDTO.getEmailOrPhoneNumber()); + }else if(isValidEmail(loginDTO.getEmailOrPhoneNumber())) { + loginDTO.setEmail(loginDTO.getEmailOrPhoneNumber()); + }else{ + ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body("账号校验失败"); + } + if(loginDTO.getEmail() != null){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Users::getEmail, loginDTO.getEmail()); + Users users = authMapper.selectOne(queryWrapper); + if(users == null){ + return ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body(new ErrorResponse("邮箱用户不存在!!!")); + } + String rightPassword = users.getPassword(); + if(rightPassword.equals(loginDTO.getPassword())){ + return ResponseEntity + .status(HttpStatus.OK) + .body("登入成功!!!"); + }else { + return ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body("邮箱或密码错误!!!"); + } + + }else if(loginDTO.getPhoneNumber() != null){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Users::getPhoneNumber, loginDTO.getPhoneNumber()); + Users users = authMapper.selectOne(queryWrapper); + if(users == null){ + return ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body(new ErrorResponse("手机号用户不存在!!")); + } + String rightPassword = users.getPassword(); + if(rightPassword.equals(loginDTO.getPassword())){ + return ResponseEntity + .status(HttpStatus.OK) + .body("登入成功!!!"); + }else { + return ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body("手机号或密码错误!!!"); + } + + }else{ + return ResponseEntity + .status(HttpStatus.BAD_REQUEST) + .body(new ErrorResponse("其他错误待管理员处理!!!")); + } + } + //随机生成用户名算法 public String createUserName() { // 字符集,包括小写字母和数字