feat(dramas,media): add video resolution fields and fix quote style

1. 为剧集剧集添加width和height字段,支持存储视频分辨率信息
2. 统一将media.controller.ts中的单引号改为双引号,保持代码风格一致
This commit is contained in:
2026-07-01 16:04:49 +08:00
parent ef8c31d3be
commit 5fa8c5e0a9
5 changed files with 40 additions and 18 deletions

View File

@@ -94,6 +94,8 @@ export class DramasService {
videoUrl: dto.videoUrl,
trialDurationSeconds: dto.trialDurationSeconds,
durationSeconds: dto.durationSeconds,
width: dto.width,
height: dto.height,
isPaid: freeType === 'paid',
freeType,
unlockPrice: price,

View File

@@ -82,6 +82,18 @@ export class CreateEpisodeDto {
@Min(1)
durationSeconds: number;
@ApiPropertyOptional()
@IsOptional()
@IsInt()
@Min(1)
width?: number;
@ApiPropertyOptional()
@IsOptional()
@IsInt()
@Min(1)
height?: number;
@ApiPropertyOptional()
@IsOptional()
@IsBoolean()

View File

@@ -38,6 +38,12 @@ export class Episode {
@Column({ type: 'int' })
durationSeconds: number;
@Column({ type: 'int', nullable: true })
width?: number;
@Column({ type: 'int', nullable: true })
height?: number;
@Column({ type: 'boolean', default: false })
isPaid: boolean;

View File

@@ -37,6 +37,8 @@ export interface EpisodeRecord {
videoUrl?: string;
trialDurationSeconds?: number;
durationSeconds: number;
width?: number;
height?: number;
isPaid: boolean;
freeType: 'free' | 'paid';
unlockPrice?: number;

View File

@@ -1,36 +1,36 @@
import { Body, Controller, Get, 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 { CreateCoverDto } from './dto/create-cover.dto';
import { CreateUploadJobDto } from './dto/create-upload-job.dto';
import { MediaService } from './media.service';
import { Body, Controller, Get, 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 { CreateCoverDto } from "./dto/create-cover.dto";
import { CreateUploadJobDto } from "./dto/create-upload-job.dto";
import { MediaService } from "./media.service";
@ApiTags('Media')
@Controller('/api/admin/v1/media')
@ApiTags("Media")
@Controller("/api/admin/v1/media")
@ApiBearerAuth()
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
export class MediaController {
constructor(private readonly mediaService: MediaService) {}
@Post('/covers')
@RequirePermissions('media:create')
@Post("/covers")
@RequirePermissions("media:create")
createCover(@Body() dto: CreateCoverDto) {
return this.mediaService.createCover(dto);
}
@Post('/upload-jobs')
@RequirePermissions('media:create')
@Post("/upload-jobs")
@RequirePermissions("media:create")
createUploadJob(@Body() dto: CreateUploadJobDto) {
return this.mediaService.createUploadJob(dto);
}
@Get('/upload-jobs')
@RequirePermissions('media:read')
@Get("/upload-jobs")
@RequirePermissions("media:read")
listUploadJobs(
@Query('page') page?: string,
@Query('pageSize') pageSize?: string,
@Query("page") page?: string,
@Query("pageSize") pageSize?: string,
) {
return this.mediaService.listUploadJobs({
page: Number(page) || 1,