【新增】验证码登录接口

This commit is contained in:
2025-11-25 17:54:25 +08:00
parent 37c0ac035e
commit 4298fcb402
4 changed files with 55 additions and 0 deletions

View File

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

View File

@@ -183,4 +183,13 @@ public class AppUserController {
public Result<String> forgetPassword(@RequestBody ForgetPasswordRequest request) { public Result<String> forgetPassword(@RequestBody ForgetPasswordRequest request) {
return Result.isBool(userService.forgetPassword(request)); return Result.isBool(userService.forgetPassword(request));
} }
/**
* 验证码登录
* @return
*/
@PostMapping("/codeLogin")
public Result<String> codeLogin(CodeLoginRequest codeLoginRequest) {
return Result.isBool(userService.codeLogin(codeLoginRequest));
}
} }

View File

@@ -2,6 +2,7 @@ package com.corewing.app.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; 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.api.ForgetPasswordRequest;
import com.corewing.app.dto.biz.user.BizUserStatusRequest; import com.corewing.app.dto.biz.user.BizUserStatusRequest;
import com.corewing.app.dto.biz.user.ResetPasswordRequest; import com.corewing.app.dto.biz.user.ResetPasswordRequest;
@@ -121,4 +122,11 @@ public interface UserService extends IService<User> {
* @return * @return
*/ */
boolean forgetPassword(ForgetPasswordRequest request); boolean forgetPassword(ForgetPasswordRequest request);
/**
* 验证码登录
* @param codeLoginRequest
* @return
*/
boolean codeLogin(CodeLoginRequest codeLoginRequest);
} }

View File

@@ -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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.corewing.app.common.page.PageContext; 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.api.ForgetPasswordRequest;
import com.corewing.app.dto.biz.user.BizUserStatusRequest; import com.corewing.app.dto.biz.user.BizUserStatusRequest;
import com.corewing.app.dto.biz.user.ResetPasswordRequest; import com.corewing.app.dto.biz.user.ResetPasswordRequest;
@@ -274,4 +275,22 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
user.setPassword(encryptPassword); user.setPassword(encryptPassword);
return updateById(user); 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;
}
} }