import { ApiProperty } from '@midwayjs/swagger'; import { Variation } from '../entity/variation.entity'; import { WpProduct } from '../entity/wp_product.entity'; import { Rule, RuleType } from '@midwayjs/validate'; import { ProductStatus } from '../enums/base.enum'; export class VariationDTO extends Variation {} export class WpProductDTO extends WpProduct { @ApiProperty({ description: '变体列表', type: VariationDTO, isArray: true }) variations?: VariationDTO[]; } export class UpdateVariationDTO { @ApiProperty({ description: '产品名称' }) @Rule(RuleType.string()) name: string; @ApiProperty({ description: 'SKU' }) @Rule(RuleType.string().allow('')) sku: string; @ApiProperty({ description: '常规价格', type: Number }) @Rule(RuleType.number()) regular_price: number; // 常规价格 @ApiProperty({ description: '销售价格', type: Number }) @Rule(RuleType.number()) sale_price: number; // 销售价格 @ApiProperty({ description: '是否促销中', type: Boolean }) @Rule(RuleType.boolean()) on_sale: boolean; // 是否促销中 } export class UpdateWpProductDTO { @ApiProperty({ description: '变体名称' }) @Rule(RuleType.string()) name: string; @ApiProperty({ description: 'SKU' }) @Rule(RuleType.string().allow('')) sku: string; @ApiProperty({ description: '常规价格', type: Number }) @Rule(RuleType.number()) regular_price: number; // 常规价格 @ApiProperty({ description: '销售价格', type: Number }) @Rule(RuleType.number()) sale_price: number; // 销售价格 @ApiProperty({ description: '是否促销中', type: Boolean }) @Rule(RuleType.boolean()) on_sale: boolean; // 是否促销中 } export class QueryWpProductDTO { @ApiProperty({ example: '1', description: '页码' }) @Rule(RuleType.number()) current: number; @ApiProperty({ example: '10', description: '每页大小' }) @Rule(RuleType.number()) pageSize: number; @ApiProperty({ example: 'ZYN', description: '产品名' }) @Rule(RuleType.string()) name?: string; @ApiProperty({ example: '1', description: '站点ID' }) @Rule(RuleType.string()) siteId?: string; @ApiProperty({ description: '产品状态', enum: ProductStatus }) @Rule(RuleType.string().valid(...Object.values(ProductStatus))) status?: ProductStatus; } export class SetConstitutionDTO { @ApiProperty({ type: Boolean }) @Rule(RuleType.boolean()) isProduct: boolean; @ApiProperty({ description: '构成成分', type: 'array', items: { type: 'object', properties: { sku: { type: 'string' }, quantity: { type: 'number' }, }, }, }) @Rule(RuleType.array()) constitution: { sku: string; quantity: number }[] | null; }