| 1 | import { AccountType, createZodDto } from '@yikart/common' |
| 2 | import { PublishRecordLinkStatus, PublishRecordSource, PublishStatus, PublishType } from '@yikart/mongodb' |
| 3 | import { z } from 'zod' |
| 4 | |
| 5 | /** |
| 6 | * 创建发布记录 |
| 7 | */ |
| 8 | export const publishRecordIdSchema = z.object({ |
| 9 | id: z.string({ message: 'id' }), |
| 10 | }) |
| 11 | export class PublishRecordIdDto extends createZodDto(publishRecordIdSchema) {} |
| 12 | |
| 13 | export const UpdatePublishRecordWorkLinkSchema = z.object({ |
| 14 | id: z.string({ message: '发布记录ID' }).describe('发布记录ID'), |
| 15 | workLink: z.string({ message: '作品链接' }).min(1, { message: '作品链接不能为空' }).optional().describe('作品链接'), |
| 16 | dataId: z.string().min(1).optional().describe('作品数据ID'), |
| 17 | platformWorkId: z.string().min(1).optional().describe('平台作品ID'), |
| 18 | linkStatus: z.enum(PublishRecordLinkStatus).default(PublishRecordLinkStatus.READY).describe('作品链接状态'), |
| 19 | linkError: z.string().optional().describe('作品链接获取错误'), |
| 20 | linkMeta: z.record(z.string(), z.any()).optional().describe('作品链接扩展信息'), |
| 21 | }) |
| 22 | export class UpdatePublishRecordWorkLinkDto extends createZodDto(UpdatePublishRecordWorkLinkSchema) {} |
| 23 | |
| 24 | export enum BilibiliNoReprint { |
| 25 | No = 1, |
| 26 | Yes = 0, |
| 27 | } |
| 28 | export enum Copyright { |
| 29 | Original = 1, // 原创 |
| 30 | Reprint = 2, |
| 31 | } |
| 32 | |
| 33 | /** |
| 34 | * 创建发布记录 |
| 35 | */ |
| 36 | export const CreatePublishRecordSchema = z.object({ |
| 37 | flowId: z.string({ message: '流水ID' }).optional(), |
| 38 | dataId: z.string({ message: '数据ID' }), |
| 39 | userId: z.string({ message: '用户ID' }), |
| 40 | uid: z.string({ message: '频道账户ID' }), |
| 41 | accountId: z.string({ message: '账户ID' }), |
| 42 | accountType: z.enum(AccountType, { message: '平台类型' }), |
| 43 | type: z.enum(PublishType, { message: '类型' }), |
| 44 | status: z.enum(PublishStatus, { message: '状态' }), |
| 45 | title: z.string().optional(), |
| 46 | desc: z.string().optional(), |
| 47 | taskId: z.string({ message: '任务ID' }).optional(), // 任务ID |
| 48 | materialGroupId: z.string({ message: '草稿箱ID' }).optional(), // 草稿箱ID |
| 49 | materialId: z.string({ message: '草稿ID' }).optional(), // 草稿ID (替换原 taskMaterialId) |
| 50 | videoUrl: z.string().optional(), |
| 51 | coverUrl: z.string().optional(), |
| 52 | imgUrlList: z.array(z.string()).optional(), |
| 53 | publishTime: z.coerce.date(), |
| 54 | topics: z.array(z.string()), |
| 55 | workLink: z.string({ message: '作品链接' }).optional(), |
| 56 | option: z.object().optional(), |
| 57 | }) |
| 58 | export class CreatePublishRecordDto extends createZodDto(CreatePublishRecordSchema) {} |
| 59 | |
| 60 | export const PublishRecordListFilterSchema = z.object({ |
| 61 | userId: z.string({ message: '用户ID' }), |
| 62 | accountId: z.string({ message: '账户ID' }).optional(), |
| 63 | uid: z.string({ message: '第三方平台id' }).optional(), |
| 64 | accountType: z.enum(AccountType, { message: '账户类型' }).optional(), |
| 65 | type: z.enum(PublishType, { message: '类型' }).optional(), |
| 66 | status: z.enum(PublishStatus, { message: '状态' }).optional(), |
| 67 | source: z.enum(PublishRecordSource).optional().describe('发布来源'), |
| 68 | time: z.tuple([ |
| 69 | z.coerce.date(), |
| 70 | z.coerce.date(), |
| 71 | ]).optional(), |
| 72 | }) |
| 73 | export class PublishRecordListFilterDto extends createZodDto(PublishRecordListFilterSchema) {} |
| 74 | |
| 75 | export const PublishDayInfoListFiltersSchema = z.object({ |
| 76 | userId: z.string(), |
| 77 | time: z.tuple([ |
| 78 | z.coerce.date(), |
| 79 | z.coerce.date(), |
| 80 | ]).optional(), |
| 81 | }) |
| 82 | export class PublishDayInfoListFiltersDto extends createZodDto(PublishDayInfoListFiltersSchema) {} |
| 83 | |
| 84 | export const PublishDayInfoListSchema = z.object({ |
| 85 | filters: PublishDayInfoListFiltersSchema, |
| 86 | page: z.object({ |
| 87 | pageNo: z.number().min(1, { message: '页码不能小于1' }), |
| 88 | pageSize: z.number().min(1, { message: '页大小不能小于1' }), |
| 89 | }), |
| 90 | }) |
| 91 | export class PublishDayInfoListDto extends createZodDto(PublishDayInfoListSchema) {} |
| 92 | |
| 93 | export const GetPublishRecordDetailSchema = z.object({ |
| 94 | flowId: z.string({ message: 'flowId is required' }), |
| 95 | userId: z.string({ message: 'userId is required' }), |
| 96 | }) |
| 97 | |
| 98 | export class GetPublishRecordDetailDto extends createZodDto(GetPublishRecordDetailSchema) {} |
| 99 | |
| 100 | export const donePublishRecordSchema = z.object({ |
| 101 | filter: z.object({ |
| 102 | dataId: z.string({ message: '数据ID' }), |
| 103 | uid: z.string({ message: '渠道ID' }), |
| 104 | }), |
| 105 | data: z.object({ |
| 106 | workLink: z.string({ message: '作品链接' }).optional(), |
| 107 | dataOption: z.any().optional(), |
| 108 | }), |
| 109 | }) |
| 110 | export class DonePublishRecordDto extends createZodDto(donePublishRecordSchema) {} |
| 111 |