import { ApiProperty } from '@midwayjs/swagger'; import { Rule, RuleType } from '@midwayjs/validate'; export class SiteConfig { @ApiProperty({ example: '1', description: '站点 ID' }) @Rule(RuleType.string()) id: string; @ApiProperty({ description: '站点 URL' }) @Rule(RuleType.string()) apiUrl: string; @ApiProperty({ description: '站点 rest key' }) @Rule(RuleType.string()) consumerKey: string; @ApiProperty({ description: '站点 rest 秘钥' }) @Rule(RuleType.string()) consumerSecret: string; @ApiProperty({ description: '站点名' }) @Rule(RuleType.string()) name: string; @ApiProperty({ description: '描述' }) @Rule(RuleType.string().allow('').optional()) description?: string; @ApiProperty({ description: '平台类型', enum: ['woocommerce', 'shopyy'] }) @Rule(RuleType.string().valid('woocommerce', 'shopyy')) type: string; @ApiProperty({ description: 'SKU 前缀' }) @Rule(RuleType.string()) skuPrefix: string; } export class CreateSiteDTO { @ApiProperty({ description: '站点 API URL', required: false }) @Rule(RuleType.string().optional()) apiUrl?: string; @ApiProperty({ description: '站点网站 URL', required: false }) @Rule(RuleType.string().optional()) websiteUrl?: string; @ApiProperty({ description: '站点 REST Key', required: false }) @Rule(RuleType.string().optional()) consumerKey?: string; @ApiProperty({ description: '站点 REST 秘钥', required: false }) @Rule(RuleType.string().optional()) consumerSecret?: string; @ApiProperty({ description: '访问令牌', required: false }) @Rule(RuleType.string().optional()) token?: string; @ApiProperty({ description: '站点名称' }) @Rule(RuleType.string()) name: string; @ApiProperty({ description: '站点描述', required: false }) @Rule(RuleType.string().allow('').optional()) description?: string; @ApiProperty({ description: '平台类型', enum: ['woocommerce', 'shopyy'], required: false }) @Rule(RuleType.string().valid('woocommerce', 'shopyy').optional()) type?: string; @ApiProperty({ description: 'SKU 前缀', required: false }) @Rule(RuleType.string().optional()) skuPrefix?: string; // 区域 @ApiProperty({ description: '区域' }) @Rule(RuleType.array().items(RuleType.string()).optional()) areas?: string[]; // 绑定仓库 @ApiProperty({ description: '绑定仓库ID列表' }) @Rule(RuleType.array().items(RuleType.number()).optional()) stockPointIds?: number[]; } export class UpdateSiteDTO { @ApiProperty({ description: '站点 API URL', required: false }) @Rule(RuleType.string().optional()) apiUrl?: string; @ApiProperty({ description: '站点 REST Key', required: false }) @Rule(RuleType.string().optional()) consumerKey?: string; @ApiProperty({ description: '站点 REST 秘钥', required: false }) @Rule(RuleType.string().optional()) consumerSecret?: string; @ApiProperty({ description: '访问令牌', required: false }) @Rule(RuleType.string().optional()) token?: string; @ApiProperty({ description: '站点名称', required: false }) @Rule(RuleType.string().optional()) name?: string; @ApiProperty({ description: '站点描述', required: false }) @Rule(RuleType.string().allow('').optional()) description?: string; @ApiProperty({ description: '是否禁用', required: false }) @Rule(RuleType.boolean().optional()) isDisabled?: boolean; @ApiProperty({ description: '平台类型', enum: ['woocommerce', 'shopyy'], required: false }) @Rule(RuleType.string().valid('woocommerce', 'shopyy').optional()) type?: string; @ApiProperty({ description: 'SKU 前缀', required: false }) @Rule(RuleType.string().optional()) skuPrefix?: string; // 区域 @ApiProperty({ description: '区域' }) @Rule(RuleType.array().items(RuleType.string()).optional()) areas?: string[]; // 绑定仓库 @ApiProperty({ description: '绑定仓库ID列表' }) @Rule(RuleType.array().items(RuleType.number()).optional()) stockPointIds?: number[]; @ApiProperty({ description: '站点网站URL', required: false }) @Rule(RuleType.string().optional()) websiteUrl?: string; } export class QuerySiteDTO { @ApiProperty({ description: '当前页码', required: false }) @Rule(RuleType.number().optional()) current?: number; @ApiProperty({ description: '每页数量', required: false }) @Rule(RuleType.number().optional()) pageSize?: number; @ApiProperty({ description: '搜索关键词', required: false }) @Rule(RuleType.string().optional()) keyword?: string; @ApiProperty({ description: '是否禁用', required: false }) @Rule(RuleType.boolean().optional()) isDisabled?: boolean; @ApiProperty({ description: '站点ID列表(逗号分隔)', required: false }) @Rule(RuleType.string().optional()) ids?: string; } export class DisableSiteDTO { @ApiProperty({ description: '是否禁用' }) @Rule(RuleType.boolean()) disabled: boolean; }