返回 AiToEarn
volcengine.controller.ts
根目录 / project / aitoearn-backend / apps / aitoearn-ai / src / core / ai / video / volcengine / volcengine.controller.ts
1 import { Body, Controller, Get, Param, Post } from '@nestjs/common'
2 import { ApiTags } from '@nestjs/swagger'
3 import { GetToken, TokenInfo } from '@yikart/aitoearn-auth'
4 import { ApiDoc, ParseObjectIdPipe, UserType } from '@yikart/common'
5 import { VolcengineGenerationRequestDto } from './volcengine.dto'
6 import { VolcengineVideoService } from './volcengine.service'
7 import { VolcengineTaskStatusResponseVo, VolcengineVideoGenerationResponseVo } from './volcengine.vo'
8
9 @ApiTags('Me/Ai/Video/Volcengine')
10 @Controller('ai/volcengine')
11 export class VolcengineVideoController {
12 constructor(private readonly volcengineVideoService: VolcengineVideoService) {}
13
14 @ApiDoc({
15 summary: 'Generate Volcengine Video',
16 body: VolcengineGenerationRequestDto.schema,
17 response: VolcengineVideoGenerationResponseVo,
18 })
19 @Post('/video')
20 async videoGeneration(
21 @GetToken() token: TokenInfo,
22 @Body() body: VolcengineGenerationRequestDto,
23 ): Promise<VolcengineVideoGenerationResponseVo> {
24 const response = await this.volcengineVideoService.create({
25 ...body,
26 userId: token.id,
27 userType: UserType.User,
28 })
29 return VolcengineVideoGenerationResponseVo.create(response)
30 }
31
32 @ApiDoc({
33 summary: 'Get Volcengine Video Task Status',
34 response: VolcengineTaskStatusResponseVo,
35 })
36 @Get('/video/:taskId')
37 async videoTaskStatus(
38 @GetToken() token: TokenInfo,
39 @Param('taskId', ParseObjectIdPipe) taskId: string,
40 ): Promise<VolcengineTaskStatusResponseVo> {
41 const response = await this.volcengineVideoService.getTask(token.id, UserType.User, taskId)
42 return VolcengineTaskStatusResponseVo.create(response)
43 }
44 }
45
45 lines TYPESCRIPT