“mitao”
2026-04-27 b82daad16c59c9770f6a0492e1a89514d41e6f71
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
package com.tcm.training.admin.app.share.controller;
 
import com.tcm.training.admin.app.share.dto.AppInviteBindTicketCreateRequest;
import com.tcm.training.admin.app.share.service.AppShareService;
import com.tcm.training.admin.app.share.vo.AppInviteBindTicketVO;
import com.tcm.training.admin.app.share.vo.AppInviteBindTicketValidateVO;
import com.tcm.training.admin.app.share.vo.AppInviteLandingVO;
import com.tcm.training.admin.common.ApiResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.validation.Valid;
 
/**
 * 邀请下载页公开接口。
 */
@Validated
@RestController
@RequestMapping({"/api/open/app-invite", "/api/v1/open/app-invite"})
public class OpenAppInviteController {
 
    private final AppShareService appShareService;
 
    /**
     * 注入邀请分享服务。
     */
    public OpenAppInviteController(AppShareService appShareService) {
        this.appShareService = appShareService;
    }
 
    /**
     * 获取邀请下载页聚合数据。
     */
    @GetMapping("/landing")
    public ApiResponse<AppInviteLandingVO> getInviteLanding(@RequestParam(value = "inviteCode", required = false) String inviteCode) {
        return ApiResponse.ok(appShareService.getInviteLanding(inviteCode));
    }
 
    /**
     * 生成下载页继续注册使用的一次性绑定票据。
     */
    @PostMapping("/bind-ticket")
    public ApiResponse<AppInviteBindTicketVO> createBindTicket(@Valid @RequestBody AppInviteBindTicketCreateRequest request) {
        return ApiResponse.ok(appShareService.createBindTicket(request.getInviteCode()));
    }
 
    /**
     * 校验绑定票据是否仍可用于注册绑定。
     */
    @GetMapping("/bind-ticket/validate")
    public ApiResponse<AppInviteBindTicketValidateVO> validateBindTicket(@RequestParam("bindTicket") String bindTicket) {
        return ApiResponse.ok(appShareService.validateBindTicket(bindTicket));
    }
}