chore: 初始化TikTok短剧后端项目基础架构
创建了完整的NestJS项目结构,包含配置文件、核心模块、工具类、拦截器、过滤器等基础代码,实现了健康检查、用户认证、管理员RBAC、剧集管理、订单支付、媒体管理等核心功能的基础框架,配置了ESLint、TypeScript、Jest等开发工具链。
This commit is contained in:
87
src/modules/dramas/dramas.controller.ts
Normal file
87
src/modules/dramas/dramas.controller.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
import { Body, Controller, Get, Param, Patch, Post, Query, UseGuards } from '@nestjs/common';
|
||||
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
|
||||
import { RequirePermissions } from '../admin/decorators/require-permissions.decorator';
|
||||
import { AdminJwtAuthGuard } from '../admin/guards/admin-jwt-auth.guard';
|
||||
import { PermissionsGuard } from '../admin/guards/permissions.guard';
|
||||
import { CreateDramaDto } from './dto/create-drama.dto';
|
||||
import { CreateEpisodeDto } from './dto/create-episode.dto';
|
||||
import { DramasService } from './dramas.service';
|
||||
import { PublishStatus } from './drama-status.enum';
|
||||
|
||||
@ApiTags('Dramas')
|
||||
@Controller()
|
||||
export class DramasController {
|
||||
constructor(private readonly dramasService: DramasService) {}
|
||||
|
||||
@Post('/api/admin/v1/dramas')
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
||||
@RequirePermissions('drama:create')
|
||||
createDrama(@Body() dto: CreateDramaDto) {
|
||||
return this.dramasService.createDrama(dto);
|
||||
}
|
||||
|
||||
@Get('/api/admin/v1/dramas')
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
||||
@RequirePermissions('drama:read')
|
||||
listAdminDramas(@Query('page') page?: string, @Query('pageSize') pageSize?: string) {
|
||||
return this.dramasService.listAdminDramas({
|
||||
page: Number(page) || 1,
|
||||
pageSize: Number(pageSize) || 20,
|
||||
});
|
||||
}
|
||||
|
||||
@Post('/api/admin/v1/episodes')
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
||||
@RequirePermissions('episode:create')
|
||||
createEpisode(@Body() dto: CreateEpisodeDto) {
|
||||
return this.dramasService.createEpisode(dto);
|
||||
}
|
||||
|
||||
@Post('/api/admin/v1/dramas/:id/submit-review')
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
||||
@RequirePermissions('drama:update')
|
||||
submitReview(@Param('id') id: string) {
|
||||
return this.dramasService.submitReview(Number(id));
|
||||
}
|
||||
|
||||
@Patch('/api/admin/v1/episodes/:id/publish-status')
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
||||
@RequirePermissions('episode:update')
|
||||
updatePublishStatus(
|
||||
@Param('id') id: string,
|
||||
@Body() dto: { publishStatus: PublishStatus },
|
||||
) {
|
||||
return this.dramasService.updateEpisodePublishStatus(
|
||||
Number(id),
|
||||
dto.publishStatus,
|
||||
);
|
||||
}
|
||||
|
||||
@Get('/api/app/v1/dramas')
|
||||
listPublishedDramas(
|
||||
@Query('page') page?: string,
|
||||
@Query('pageSize') pageSize?: string,
|
||||
) {
|
||||
return this.dramasService.listPublishedDramas({
|
||||
page: Number(page) || 1,
|
||||
pageSize: Number(pageSize) || 20,
|
||||
});
|
||||
}
|
||||
|
||||
@Get('/api/app/v1/dramas/:id/episodes')
|
||||
listPublishedEpisodes(
|
||||
@Param('id') id: string,
|
||||
@Query('page') page?: string,
|
||||
@Query('pageSize') pageSize?: string,
|
||||
) {
|
||||
return this.dramasService.listPublishedEpisodes(Number(id), {
|
||||
page: Number(page) || 1,
|
||||
pageSize: Number(pageSize) || 20,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user