import { Body, Controller, Get, Param, Post, Query, Req, UseGuards, ValidationPipe, UsePipes } from '@nestjs/common'; import { AdminGuard } from '../admin/admin.guard'; import { GenerateInvitationCodesDto } from './invitation_code.dto'; import { InvitationCodesService } from './invitation_codes.service'; @Controller('admin/invitation-codes') @UseGuards(AdminGuard) export class InvitationCodesController { constructor(private readonly service: InvitationCodesService) {} @Post() @UsePipes(new ValidationPipe({ transform: true })) async generate(@Body() dto: GenerateInvitationCodesDto, @Req() req: any) { return { success: true, data: { codes: await this.service.generate(dto, req.admin?.adminId) }, message: '邀请码生成成功,请立即保存明文' }; } @Get() async list(@Query('limit') limit?: string, @Query('offset') offset?: string) { return { success: true, data: await this.service.list(Number(limit) || 100, Number(offset) || 0), message: '邀请码列表获取成功' }; } @Post(':id/revoke') async revoke(@Param('id') id: string) { await this.service.revoke(id); return { success: true, message: '邀请码已作废' }; } }