localhost_oa_based/src/modules/vehicle_usage/vehicle_usage.controller.ts

81 lines
2.5 KiB
TypeScript

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<void> {
await this.vehicleUsageService.create(dto);
}
@Put(':id')
@ApiOperation({ summary: '更新车辆使用' })
@Perm(permissions.UPDATE)
async update(@IdParam() id: number, @Body() dto: VehicleUsageUpdateDto): Promise<void> {
await this.vehicleUsageService.update(id, dto);
}
@Delete(':id')
@ApiOperation({ summary: '删除车辆使用' })
@Perm(permissions.DELETE)
async delete(@IdParam() id: number): Promise<void> {
await this.vehicleUsageService.delete(id);
}
@Put('unlink-attachments/:id')
@ApiOperation({ summary: '附件解除关联' })
@Perm(permissions.UPDATE)
async unlinkAttachments(
@IdParam() id: number,
@Body() { fileIds }: VehicleUsageUpdateDto
): Promise<void> {
await this.vehicleUsageService.unlinkAttachments(id, fileIds);
}
}