import { Controller, Post, Body, Get, HttpCode, HttpStatus, ValidationPipe } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; import { WaitlistService } from './waitlist.service'; import { CreateWaitlistDto } from './dto/create-waitlist.dto'; @ApiTags('waitlist') @Controller('waitlist') export class WaitlistController { constructor(private readonly waitlistService: WaitlistService) {} @Post() @HttpCode(HttpStatus.CREATED) @ApiOperation({ summary: '加入等待名单', description: '提交邮箱加入产品等待名单' }) @ApiResponse({ status: 201, description: '成功加入等待名单' }) @ApiResponse({ status: 400, description: '邮箱无效或缺少必填字段' }) @ApiResponse({ status: 409, description: '该邮箱已报名' }) async create(@Body(new ValidationPipe({ transform: true })) createWaitlistDto: CreateWaitlistDto) { const entry = await this.waitlistService.create(createWaitlistDto); return { success: true, message: '已成功加入等待名单', data: { id: entry.id, email: entry.email, createdAt: entry.createdAt, }, }; } @Get() @ApiOperation({ summary: '获取等待名单', description: '获取所有等待名单报名记录(管理员)' }) @ApiResponse({ status: 200, description: '等待名单列表' }) async findAll() { return this.waitlistService.findAll(); } @Get('stats') @ApiOperation({ summary: '获取报名统计', description: '获取等待名单的聚合统计数据' }) @ApiResponse({ status: 200, description: '报名统计数据,包含设备分布和兴趣方向' }) async getStats() { return this.waitlistService.getStats(); } }