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 getInviteLanding(@RequestParam(value = "inviteCode", required = false) String inviteCode) { return ApiResponse.ok(appShareService.getInviteLanding(inviteCode)); } /** * 生成下载页继续注册使用的一次性绑定票据。 */ @PostMapping("/bind-ticket") public ApiResponse createBindTicket(@Valid @RequestBody AppInviteBindTicketCreateRequest request) { return ApiResponse.ok(appShareService.createBindTicket(request.getInviteCode())); } /** * 校验绑定票据是否仍可用于注册绑定。 */ @GetMapping("/bind-ticket/validate") public ApiResponse validateBindTicket(@RequestParam("bindTicket") String bindTicket) { return ApiResponse.ok(appShareService.validateBindTicket(bindTicket)); } }