package com.tcm.training.admin.app.auth.controller; import com.tcm.training.admin.app.auth.dto.AppSmsCodeSendRequest; import com.tcm.training.admin.app.auth.dto.AppAppleLoginRequest; import com.tcm.training.admin.app.auth.dto.AppPasswordLoginRequest; import com.tcm.training.admin.app.auth.dto.AppPasswordResetRequest; import com.tcm.training.admin.app.auth.dto.AppPasswordResetVerifyRequest; import com.tcm.training.admin.app.auth.dto.AppSmsLoginRequest; import com.tcm.training.admin.app.auth.dto.AppWechatLoginRequest; import com.tcm.training.admin.app.auth.service.AppAuthService; import com.tcm.training.admin.app.auth.vo.AppLoginResponse; import com.tcm.training.admin.app.auth.vo.AppPasswordResetVerifyResponse; import com.tcm.training.admin.app.auth.vo.AppSmsCodeSendResponse; import com.tcm.training.admin.common.ApiResponse; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; /** * APP 登录认证接口。 */ @Validated @RestController @RequestMapping({"/api/app/auth", "/api/v1/app/auth"}) public class AppAuthController { private final AppAuthService appAuthService; /** * 注入 APP 登录服务。 */ public AppAuthController(AppAuthService appAuthService) { this.appAuthService = appAuthService; } /** * 发送 APP 登录短信验证码。 */ @PostMapping("/sms-code") public ApiResponse sendSmsCode(@Valid @RequestBody AppSmsCodeSendRequest request) { return ApiResponse.ok(appAuthService.sendLoginCode(request)); } /** * 使用短信验证码完成 APP 登录。 */ @PostMapping("/sms-login") public ApiResponse smsLogin(@Valid @RequestBody AppSmsLoginRequest request) { return ApiResponse.ok(appAuthService.smsLogin(request)); } /** * 使用手机号密码完成 APP 登录。 */ @PostMapping("/password-login") public ApiResponse passwordLogin(@Valid @RequestBody AppPasswordLoginRequest request) { return ApiResponse.ok(appAuthService.passwordLogin(request)); } /** * 使用微信授权信息完成 APP 登录。 */ @PostMapping("/wechat-login") public ApiResponse wechatLogin(@RequestBody AppWechatLoginRequest request) { return ApiResponse.ok(appAuthService.wechatLogin(request)); } /** * 使用苹果授权信息完成 APP 登录。 */ @PostMapping("/apple-login") public ApiResponse appleLogin(@Valid @RequestBody AppAppleLoginRequest request) { return ApiResponse.ok(appAuthService.appleLogin(request)); } /** * 发送 APP 忘记密码验证码。 */ @PostMapping("/password-reset/code") public ApiResponse sendPasswordResetCode(@Valid @RequestBody AppSmsCodeSendRequest request) { return ApiResponse.ok(appAuthService.sendPasswordResetCode(request)); } /** * 校验 APP 忘记密码验证码并生成一次性重置凭证。 */ @PostMapping("/password-reset/verify") public ApiResponse verifyPasswordResetCode(@Valid @RequestBody AppPasswordResetVerifyRequest request) { return ApiResponse.ok(appAuthService.verifyPasswordResetCode(request)); } /** * 使用重置凭证更新 APP 用户密码。 */ @PostMapping("/password-reset") public ApiResponse resetPassword(@Valid @RequestBody AppPasswordResetRequest request) { appAuthService.resetPassword(request); return ApiResponse.ok(null); } /** * 注销当前 APP 登录态。 */ @PostMapping("/logout") public ApiResponse logout() { appAuthService.logout(); return ApiResponse.ok(null); } /** * 刷新当前 APP 登录态有效期。 */ @PostMapping("/refresh-token") public ApiResponse refreshToken() { return ApiResponse.ok(appAuthService.refreshToken()); } }