- NestJS + TypeScript 后端 API - 用户认证 (auth) - 用户管理 (users) - 学习路径与课程 (learning) - AI 分析与对话 (ai) - 用户反馈 (feedback) - 等待名单 (waitlist) - 知识库 (knowledge) - Swagger API 文档(中文、访问控制) - Basic Auth 保护生产环境文档
43 lines
1.7 KiB
TypeScript
43 lines
1.7 KiB
TypeScript
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();
|
|
}
|
|
} |