Files
whale-town-end-v2/src/business/invitation/invitation_codes.controller.ts

28 lines
1.2 KiB
TypeScript

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: '邀请码已作废' };
}
}