package com.emotion.service; import com.emotion.dto.request.LoginRequest; import com.emotion.dto.request.RegisterRequest; import com.emotion.dto.request.ResetPasswordRequest; import com.emotion.dto.response.ResetPasswordResponse; import com.emotion.dto.response.AuthResponse; import com.emotion.dto.response.CaptchaResponse; import com.emotion.dto.response.SmsCodeResponse; import com.emotion.dto.response.UserInfoResponse; import javax.servlet.http.HttpServletRequest; /** * 认证服务接口 * * @author huazhongmin * @date 2025-07-23 */ public interface AuthService { /** * 用户登录 * * @param request 登录请求 * @return 认证响应 */ AuthResponse login(LoginRequest request); /** * 用户注册 * * @param request 注册请求 * @return 认证响应 */ /** * 重置密码(手机号 + 验证码) * * @param request 重置密码请求 * @return 重置密码响应 */ ResetPasswordResponse resetPassword(ResetPasswordRequest request); AuthResponse register(RegisterRequest request); /** * 获取当前用户信息 * * @param userId 用户ID * @return 用户信息响应 */ UserInfoResponse getCurrentUserInfo(String userId); /** * 生成验证码 * * @return 验证码响应 */ CaptchaResponse generateCaptcha(); /** * 验证验证码 * * @param captchaKey 验证码key * @param captcha 验证码 * @return 是否验证成功 */ boolean validateCaptcha(String captchaKey, String captcha); /** * 用户登出 * * @param userId 用户ID * @param token 访问令牌 * @return 是否登出成功 */ boolean logout(String userId, String token); /** * 用户登出(通过请求) * * @param request HTTP请求 * @return 是否登出成功 */ boolean logoutByToken(HttpServletRequest request); /** * 刷新访问令牌 * * @param refreshToken 刷新令牌 * @return 新的认证响应 */ AuthResponse refreshToken(String refreshToken); /** * 验证访问令牌 * * @param request HTTP请求 * @return 是否有效 */ boolean validateToken(HttpServletRequest request); /** * 验证访问令牌 * * @param token 访问令牌 * @return 是否有效 */ boolean validateToken(String token); /** * 从令牌中获取用户ID * * @param token 访问令牌 * @return 用户ID */ String getUserIdFromToken(String token); /** * 从令牌中获取用户名 * * @param token 访问令牌 * @return 用户名 */ String getUsernameFromToken(String token); /** * 检查账号是否存在 * * @param account 账号 * @return 是否存在 */ boolean existsByAccount(String account); /** * 检查邮箱是否存在 * * @param email 邮箱 * @return 是否存在 */ boolean existsByEmail(String email); /** * 检查手机号是否存在 * * @param phone 手机号 * @return 是否存在 */ boolean existsByPhone(String phone); /** * 发送短信验证码 * * @param phone 手机号 * @return 短信验证码响应 */ SmsCodeResponse sendSmsCode(String phone); /** * 验证短信验证码 * * @param phone 手机号 * @param code 验证码 * @return 是否验证成功 */ boolean validateSmsCode(String phone, String code); }