| 1 | import { AccountType, ChannelAuthSessionStatus, createZodDto } from '@yikart/common' |
| 2 | import { z } from 'zod' |
| 3 | import { LocaleTextSchema } from '../platforms/platforms.vo' |
| 4 | |
| 5 | export const AuthStartVoSchema = z.object({ |
| 6 | url: z.string().describe('平台授权 URL 或二维码图片 data URL'), |
| 7 | sessionId: z.string().describe('授权 Session ID'), |
| 8 | expiresAt: z.coerce.date().describe('授权 Session 过期时间'), |
| 9 | authInstructions: LocaleTextSchema.optional().describe('授权操作提示语'), |
| 10 | }) |
| 11 | |
| 12 | export class AuthStartVo extends createZodDto(AuthStartVoSchema) {} |
| 13 | |
| 14 | export const AuthConnectedAccountVoSchema = z.object({ |
| 15 | accountId: z.string().describe('本地账号 ID'), |
| 16 | platform: z.enum(AccountType).describe('平台类型'), |
| 17 | platformUid: z.string().describe('平台账号 UID'), |
| 18 | account: z.string().optional().describe('平台账号补充唯一标识'), |
| 19 | displayName: z.string().describe('平台账号展示名'), |
| 20 | avatarUrl: z.string().optional().describe('平台账号头像 URL'), |
| 21 | }) |
| 22 | |
| 23 | export const AuthSelectableAccountVoSchema = z.object({ |
| 24 | platform: z.enum(AccountType).describe('平台类型'), |
| 25 | platformUid: z.string().describe('平台账号 UID'), |
| 26 | account: z.string().optional().describe('平台账号补充唯一标识'), |
| 27 | displayName: z.string().describe('平台账号展示名'), |
| 28 | avatarUrl: z.string().optional().describe('平台账号头像 URL'), |
| 29 | parentPlatformUid: z.string().optional().describe('父级平台账号 UID'), |
| 30 | }) |
| 31 | |
| 32 | export const AuthSessionStatusVoSchema = z.object({ |
| 33 | sessionId: z.string().describe('授权 Session ID'), |
| 34 | status: z.enum(ChannelAuthSessionStatus).describe('授权 Session 状态'), |
| 35 | requiresSelection: z.boolean().describe('是否需要选择二级账号'), |
| 36 | errorCode: z.number().optional().describe('授权失败错误码'), |
| 37 | expiresAt: z.coerce.date().optional().describe('授权 Session 过期时间'), |
| 38 | accountId: z.string().optional().describe('首个本地账号 ID'), |
| 39 | accountIds: z.array(z.string()).optional().describe('本地账号 ID 列表'), |
| 40 | accounts: z.array(AuthConnectedAccountVoSchema).optional().describe('已连接账号列表'), |
| 41 | selectableAccounts: z.array(AuthSelectableAccountVoSchema).optional().describe('可选择的平台账号列表'), |
| 42 | }) |
| 43 | |
| 44 | export class AuthSessionStatusVo extends createZodDto( |
| 45 | AuthSessionStatusVoSchema, |
| 46 | 'AuthSessionStatusVo', |
| 47 | ) {} |
| 48 |