feat(dramas,media): add video resolution fields and fix quote style
1. 为剧集剧集添加width和height字段,支持存储视频分辨率信息 2. 统一将media.controller.ts中的单引号改为双引号,保持代码风格一致
This commit is contained in:
@@ -94,6 +94,8 @@ export class DramasService {
|
|||||||
videoUrl: dto.videoUrl,
|
videoUrl: dto.videoUrl,
|
||||||
trialDurationSeconds: dto.trialDurationSeconds,
|
trialDurationSeconds: dto.trialDurationSeconds,
|
||||||
durationSeconds: dto.durationSeconds,
|
durationSeconds: dto.durationSeconds,
|
||||||
|
width: dto.width,
|
||||||
|
height: dto.height,
|
||||||
isPaid: freeType === 'paid',
|
isPaid: freeType === 'paid',
|
||||||
freeType,
|
freeType,
|
||||||
unlockPrice: price,
|
unlockPrice: price,
|
||||||
|
|||||||
@@ -82,6 +82,18 @@ export class CreateEpisodeDto {
|
|||||||
@Min(1)
|
@Min(1)
|
||||||
durationSeconds: number;
|
durationSeconds: number;
|
||||||
|
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
@IsOptional()
|
||||||
|
@IsInt()
|
||||||
|
@Min(1)
|
||||||
|
width?: number;
|
||||||
|
|
||||||
|
@ApiPropertyOptional()
|
||||||
|
@IsOptional()
|
||||||
|
@IsInt()
|
||||||
|
@Min(1)
|
||||||
|
height?: number;
|
||||||
|
|
||||||
@ApiPropertyOptional()
|
@ApiPropertyOptional()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
|
|||||||
@@ -38,6 +38,12 @@ export class Episode {
|
|||||||
@Column({ type: 'int' })
|
@Column({ type: 'int' })
|
||||||
durationSeconds: number;
|
durationSeconds: number;
|
||||||
|
|
||||||
|
@Column({ type: 'int', nullable: true })
|
||||||
|
width?: number;
|
||||||
|
|
||||||
|
@Column({ type: 'int', nullable: true })
|
||||||
|
height?: number;
|
||||||
|
|
||||||
@Column({ type: 'boolean', default: false })
|
@Column({ type: 'boolean', default: false })
|
||||||
isPaid: boolean;
|
isPaid: boolean;
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ export interface EpisodeRecord {
|
|||||||
videoUrl?: string;
|
videoUrl?: string;
|
||||||
trialDurationSeconds?: number;
|
trialDurationSeconds?: number;
|
||||||
durationSeconds: number;
|
durationSeconds: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
isPaid: boolean;
|
isPaid: boolean;
|
||||||
freeType: 'free' | 'paid';
|
freeType: 'free' | 'paid';
|
||||||
unlockPrice?: number;
|
unlockPrice?: number;
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
import { Body, Controller, Get, Post, Query, UseGuards } from '@nestjs/common';
|
import { Body, Controller, Get, Post, Query, UseGuards } from "@nestjs/common";
|
||||||
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
|
import { ApiBearerAuth, ApiTags } from "@nestjs/swagger";
|
||||||
import { RequirePermissions } from '../admin/decorators/require-permissions.decorator';
|
import { RequirePermissions } from "../admin/decorators/require-permissions.decorator";
|
||||||
import { AdminJwtAuthGuard } from '../admin/guards/admin-jwt-auth.guard';
|
import { AdminJwtAuthGuard } from "../admin/guards/admin-jwt-auth.guard";
|
||||||
import { PermissionsGuard } from '../admin/guards/permissions.guard';
|
import { PermissionsGuard } from "../admin/guards/permissions.guard";
|
||||||
import { CreateCoverDto } from './dto/create-cover.dto';
|
import { CreateCoverDto } from "./dto/create-cover.dto";
|
||||||
import { CreateUploadJobDto } from './dto/create-upload-job.dto';
|
import { CreateUploadJobDto } from "./dto/create-upload-job.dto";
|
||||||
import { MediaService } from './media.service';
|
import { MediaService } from "./media.service";
|
||||||
|
|
||||||
@ApiTags('Media')
|
@ApiTags("Media")
|
||||||
@Controller('/api/admin/v1/media')
|
@Controller("/api/admin/v1/media")
|
||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
@UseGuards(AdminJwtAuthGuard, PermissionsGuard)
|
||||||
export class MediaController {
|
export class MediaController {
|
||||||
constructor(private readonly mediaService: MediaService) {}
|
constructor(private readonly mediaService: MediaService) {}
|
||||||
|
|
||||||
@Post('/covers')
|
@Post("/covers")
|
||||||
@RequirePermissions('media:create')
|
@RequirePermissions("media:create")
|
||||||
createCover(@Body() dto: CreateCoverDto) {
|
createCover(@Body() dto: CreateCoverDto) {
|
||||||
return this.mediaService.createCover(dto);
|
return this.mediaService.createCover(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Post('/upload-jobs')
|
@Post("/upload-jobs")
|
||||||
@RequirePermissions('media:create')
|
@RequirePermissions("media:create")
|
||||||
createUploadJob(@Body() dto: CreateUploadJobDto) {
|
createUploadJob(@Body() dto: CreateUploadJobDto) {
|
||||||
return this.mediaService.createUploadJob(dto);
|
return this.mediaService.createUploadJob(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get('/upload-jobs')
|
@Get("/upload-jobs")
|
||||||
@RequirePermissions('media:read')
|
@RequirePermissions("media:read")
|
||||||
listUploadJobs(
|
listUploadJobs(
|
||||||
@Query('page') page?: string,
|
@Query("page") page?: string,
|
||||||
@Query('pageSize') pageSize?: string,
|
@Query("pageSize") pageSize?: string,
|
||||||
) {
|
) {
|
||||||
return this.mediaService.listUploadJobs({
|
return this.mediaService.listUploadJobs({
|
||||||
page: Number(page) || 1,
|
page: Number(page) || 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user