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; + } }