| 1 | /* |
| 2 | * @Author: nevin |
| 3 | * @Date: 2024-08-19 15:58:47 |
| 4 | * @LastEditTime: 2025-03-17 12:41:12 |
| 5 | * @LastEditors: nevin |
| 6 | * @Description: Media media |
| 7 | */ |
| 8 | import { createZodDto, FileUtil, TableDtoSchema } from '@yikart/common' |
| 9 | import { MediaType } from '@yikart/mongodb' |
| 10 | import { z } from 'zod' |
| 11 | |
| 12 | export const MediaIdSchema = z.object({ |
| 13 | id: z.string().describe('ID'), |
| 14 | }) |
| 15 | export class MediaIdDto extends createZodDto(MediaIdSchema) {} |
| 16 | |
| 17 | export const CreateMediaSchema = z.object({ |
| 18 | groupId: z.string().describe('组ID'), |
| 19 | materialId: z.string().optional().describe('素材ID'), |
| 20 | type: z.enum(MediaType).describe('类型'), |
| 21 | url: FileUtil.zodTrimHost().describe('文件链接'), |
| 22 | thumbUrl: FileUtil.zodTrimHost().optional().describe('缩略图'), |
| 23 | title: z.string().optional().describe('标题'), |
| 24 | desc: z.string().optional().describe('描述'), |
| 25 | }) |
| 26 | export class CreateMediaDto extends createZodDto(CreateMediaSchema) {} |
| 27 | |
| 28 | export const MediaFilterSchema = z.object({ |
| 29 | groupId: z.string().optional().describe('组ID'), |
| 30 | materialGroupId: z.string().optional().describe('草稿箱组ID'), |
| 31 | type: z.enum(MediaType).optional().describe('类型'), |
| 32 | useCount: z.coerce.number().optional().describe('use conut (min)'), |
| 33 | }) |
| 34 | export class MediaFilterDto extends createZodDto(MediaFilterSchema, 'MediaFilterDto') {} |
| 35 | |
| 36 | export const MediaListSchema = z.object({ |
| 37 | page: TableDtoSchema, |
| 38 | filter: MediaFilterSchema, |
| 39 | }) |
| 40 | export class MediaListDto extends createZodDto(MediaListSchema) {} |
| 41 | |
| 42 | const addUseCountOfListSchema = z.object({ |
| 43 | ids: z.array(z.string()).min(1).describe('ID列表'), |
| 44 | }) |
| 45 | export class AddUseCountOfListDto extends createZodDto(addUseCountOfListSchema) {} |
| 46 | |
| 47 | const MediaIdsSchema = z.object({ |
| 48 | ids: z.array(z.string()).min(1).describe('ID列表'), |
| 49 | }) |
| 50 | export class MediaIdsDto extends createZodDto(MediaIdsSchema) {} |
| 51 | |
| 52 | const TransferMediaSchema = z.object({ |
| 53 | ids: z.array(z.string()).min(1).describe('媒体资源ID列表'), |
| 54 | targetGroupId: z.string().describe('目标媒体分组ID'), |
| 55 | mode: z.enum(['move', 'copy']).describe('转移模式:move 移动,copy 复制'), |
| 56 | }) |
| 57 | export class TransferMediaDto extends createZodDto(TransferMediaSchema, 'TransferMediaDto') {} |
| 58 |