import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { Permissions } from '../common/permissions.js'; import { AuditLog, RequirePermissions } from '../auth/decorators.js'; import { ChangePlanDto, ConfirmPlanDto, CreatePlanDto } from './dto.js'; import { PlanService } from './plan.service.js'; @Controller('plan') export class PlanController { constructor(private readonly service: PlanService) {} @Post() @RequirePermissions(Permissions.plan.create) @AuditLog('plan', 'create') create(@Body() dto: CreatePlanDto) { return this.service.create(dto); } @Post('change') @RequirePermissions(Permissions.plan.change) @AuditLog('plan', 'change') change(@Body() dto: ChangePlanDto) { return this.service.change(dto); } // 注意:by-elder 必须先于 :id 声明,否则 :id 会吞掉 by-elder。 @Get('by-elder/:elderId') @RequirePermissions(Permissions.plan.detail) byElder(@Param('elderId') elderId: string) { return this.service.byElder(elderId); } @Get(':id') @RequirePermissions(Permissions.plan.detail) detail(@Param('id') id: string) { return this.service.detail(id); } @Post(':id/confirm') @RequirePermissions(Permissions.plan.confirm) @AuditLog('plan', 'confirm') confirm(@Param('id') id: string, @Body() dto: ConfirmPlanDto) { return this.service.confirm(id, dto); } }