import { Body, Controller, Get, Query, Put, Delete, Post, BadRequestException } from '@nestjs/common'; import { ApiOperation, ApiTags } from '@nestjs/swagger'; import { Perm, definePermission } from '../auth/decorators/permission.decorator'; import { ApiSecurityAuth } from '~/common/decorators/swagger.decorator'; import { ApiResult } from '~/common/decorators/api-result.decorator'; import { VehicleUsageService } from './vehicle_usage.service'; import { IdParam } from '~/common/decorators/id-param.decorator'; import { VehicleUsageQueryDto, VehicleUsageDto, VehicleUsageUpdateDto } from './vehicle_usage.dto'; import { VehicleUsageEntity } from '../vehicle_usage/vehicle_usage.entity'; export const permissions = definePermission('app:vehicle_usage', { LIST: 'list', CREATE: 'create', READ: 'read', UPDATE: 'update', DELETE: 'delete' } as const); @ApiTags('VehicleUsage - 车辆使用') @ApiSecurityAuth() @Controller('vehicle-usage') export class VehicleUsageController { constructor(private vehicleUsageService: VehicleUsageService) {} @Get() @ApiOperation({ summary: '获取车辆使用列表' }) @ApiResult({ type: [VehicleUsageEntity], isPage: true }) @Perm(permissions.LIST) async list(@Query() dto: VehicleUsageQueryDto) { return this.vehicleUsageService.findAll(dto); } @Get(':id') @ApiOperation({ summary: '获取车辆使用信息' }) @ApiResult({ type: VehicleUsageDto }) @Perm(permissions.READ) async info(@IdParam() id: number) { return this.vehicleUsageService.info(id); } @Post() @ApiOperation({ summary: '新增车辆使用' }) @Perm(permissions.CREATE) async create(@Body() dto: VehicleUsageDto): Promise { await this.vehicleUsageService.create(dto); } @Put(':id') @ApiOperation({ summary: '更新车辆使用' }) @Perm(permissions.UPDATE) async update(@IdParam() id: number, @Body() dto: VehicleUsageUpdateDto): Promise { await this.vehicleUsageService.update(id, dto); } @Delete(':id') @ApiOperation({ summary: '删除车辆使用' }) @Perm(permissions.DELETE) async delete(@IdParam() id: number): Promise { await this.vehicleUsageService.delete(id); } @Put('unlink-attachments/:id') @ApiOperation({ summary: '附件解除关联' }) @Perm(permissions.UPDATE) async unlinkAttachments( @IdParam() id: number, @Body() { fileIds }: VehicleUsageUpdateDto ): Promise { await this.vehicleUsageService.unlinkAttachments(id, fileIds); } }