hejianhao
2026-09-01 4b4d225c0f8456b8918dc79eec2e093485746d0f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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<AppSmsCodeSendResponse> sendSmsCode(@Valid @RequestBody AppSmsCodeSendRequest request) {
        return ApiResponse.ok(appAuthService.sendLoginCode(request));
    }
 
    /**
     * 使用短信验证码完成 APP 登录。
     */
    @PostMapping("/sms-login")
    public ApiResponse<AppLoginResponse> smsLogin(@Valid @RequestBody AppSmsLoginRequest request) {
        return ApiResponse.ok(appAuthService.smsLogin(request));
    }
 
    /**
     * 使用手机号密码完成 APP 登录。
     */
    @PostMapping("/password-login")
    public ApiResponse<AppLoginResponse> passwordLogin(@Valid @RequestBody AppPasswordLoginRequest request) {
        return ApiResponse.ok(appAuthService.passwordLogin(request));
    }
 
    /**
     * 使用微信授权信息完成 APP 登录。
     */
    @PostMapping("/wechat-login")
    public ApiResponse<AppLoginResponse> wechatLogin(@RequestBody AppWechatLoginRequest request) {
        return ApiResponse.ok(appAuthService.wechatLogin(request));
    }
 
    /**
     * 使用苹果授权信息完成 APP 登录。
     */
    @PostMapping("/apple-login")
    public ApiResponse<AppLoginResponse> appleLogin(@Valid @RequestBody AppAppleLoginRequest request) {
        return ApiResponse.ok(appAuthService.appleLogin(request));
    }
 
    /**
     * 发送 APP 忘记密码验证码。
     */
    @PostMapping("/password-reset/code")
    public ApiResponse<AppSmsCodeSendResponse> sendPasswordResetCode(@Valid @RequestBody AppSmsCodeSendRequest request) {
        return ApiResponse.ok(appAuthService.sendPasswordResetCode(request));
    }
 
    /**
     * 校验 APP 忘记密码验证码并生成一次性重置凭证。
     */
    @PostMapping("/password-reset/verify")
    public ApiResponse<AppPasswordResetVerifyResponse> verifyPasswordResetCode(@Valid @RequestBody AppPasswordResetVerifyRequest request) {
        return ApiResponse.ok(appAuthService.verifyPasswordResetCode(request));
    }
 
    /**
     * 使用重置凭证更新 APP 用户密码。
     */
    @PostMapping("/password-reset")
    public ApiResponse<Void> resetPassword(@Valid @RequestBody AppPasswordResetRequest request) {
        appAuthService.resetPassword(request);
        return ApiResponse.ok(null);
    }
 
    /**
     * 注销当前 APP 登录态。
     */
    @PostMapping("/logout")
    public ApiResponse<Void> logout() {
        appAuthService.logout();
        return ApiResponse.ok(null);
    }
 
    /**
     * 刷新当前 APP 登录态有效期。
     */
    @PostMapping("/refresh-token")
    public ApiResponse<AppLoginResponse> refreshToken() {
        return ApiResponse.ok(appAuthService.refreshToken());
    }
}