返回 AiToEarn
publish-record.dto.ts
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
111 lines TYPESCRIPT