From 4298fcb402fe1b68501a554d0884d139c4d820cc Mon Sep 17 00:00:00 2001 From: MichaelWin Date: Tue, 25 Nov 2025 17:54:25 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/dto/api/CodeLoginRequest.java | 19 +++++++++++++++++++ .../app/modules/app/AppUserController.java | 9 +++++++++ .../com/corewing/app/service/UserService.java | 8 ++++++++ .../app/service/impl/UserServiceImpl.java | 19 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 src/main/java/com/corewing/app/dto/api/CodeLoginRequest.java diff --git a/src/main/java/com/corewing/app/dto/api/CodeLoginRequest.java b/src/main/java/com/corewing/app/dto/api/CodeLoginRequest.java new file mode 100644 index 0000000..9cb89ba --- /dev/null +++ b/src/main/java/com/corewing/app/dto/api/CodeLoginRequest.java @@ -0,0 +1,19 @@ +package com.corewing.app.dto.api; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 验证码登录请求对象 + */ +@Data +public class CodeLoginRequest { + + @NotBlank(message = "手机号或邮箱不能为空") + private String account; + + @NotBlank(message = "验证码不能为空") + private String verificationCode; + +} diff --git a/src/main/java/com/corewing/app/modules/app/AppUserController.java b/src/main/java/com/corewing/app/modules/app/AppUserController.java index 2928c46..900e92e 100644 --- a/src/main/java/com/corewing/app/modules/app/AppUserController.java +++ b/src/main/java/com/corewing/app/modules/app/AppUserController.java @@ -183,4 +183,13 @@ public class AppUserController { public Result forgetPassword(@RequestBody ForgetPasswordRequest request) { return Result.isBool(userService.forgetPassword(request)); } + + /** + * 验证码登录 + * @return + */ + @PostMapping("/codeLogin") + public Result codeLogin(CodeLoginRequest codeLoginRequest) { + return Result.isBool(userService.codeLogin(codeLoginRequest)); + } } diff --git a/src/main/java/com/corewing/app/service/UserService.java b/src/main/java/com/corewing/app/service/UserService.java index f3b47dd..18dff05 100644 --- a/src/main/java/com/corewing/app/service/UserService.java +++ b/src/main/java/com/corewing/app/service/UserService.java @@ -2,6 +2,7 @@ package com.corewing.app.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.corewing.app.dto.api.CodeLoginRequest; import com.corewing.app.dto.api.ForgetPasswordRequest; import com.corewing.app.dto.biz.user.BizUserStatusRequest; import com.corewing.app.dto.biz.user.ResetPasswordRequest; @@ -121,4 +122,11 @@ public interface UserService extends IService { * @return */ boolean forgetPassword(ForgetPasswordRequest request); + + /** + * 验证码登录 + * @param codeLoginRequest + * @return + */ + boolean codeLogin(CodeLoginRequest codeLoginRequest); } diff --git a/src/main/java/com/corewing/app/service/impl/UserServiceImpl.java b/src/main/java/com/corewing/app/service/impl/UserServiceImpl.java index 514d1ea..bc230d7 100644 --- a/src/main/java/com/corewing/app/service/impl/UserServiceImpl.java +++ b/src/main/java/com/corewing/app/service/impl/UserServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.corewing.app.common.page.PageContext; +import com.corewing.app.dto.api.CodeLoginRequest; import com.corewing.app.dto.api.ForgetPasswordRequest; import com.corewing.app.dto.biz.user.BizUserStatusRequest; import com.corewing.app.dto.biz.user.ResetPasswordRequest; @@ -274,4 +275,22 @@ public class UserServiceImpl extends ServiceImpl implements Us user.setPassword(encryptPassword); return updateById(user); } + + @Override + public boolean codeLogin(CodeLoginRequest request) { + + // 校验验证码是否正确 + String codeKey = String.format("verify_code:%s:%s", "login", request.getAccount()); + Object checkCode = redisUtil.get(codeKey); + if(checkCode == null || !request.getVerificationCode().equalsIgnoreCase(checkCode.toString())) { + throw new RuntimeException(I18nUtil.getMessage("error.verify.code.invalid")); + } + + /// 校验账号是否存在 + User user = getByAccount(request.getAccount()); + if(user == null) { + throw new RuntimeException(I18nUtil.getMessage("error.user.not.found")); + } + return true; + } }