import { ApiProperty } from '@midwayjs/swagger'; import { Rule, RuleType } from '@midwayjs/validate'; /** * DTO 用于创建产品 */ export class CreateProductDTO { @ApiProperty({ example: 'ZYN 6MG WINTERGREEN', description: '产品名称', required: true, }) @Rule(RuleType.string().required().empty({ message: '产品名称不能为空' })) name: string; @ApiProperty({ example: '产品描述', description: '产品描述' }) @Rule(RuleType.string()) description: string; @ApiProperty({ example: '1', description: '分类 ID' }) @Rule(RuleType.number()) categoryId: number; @ApiProperty() @Rule(RuleType.number()) strengthId: number; @ApiProperty() @Rule(RuleType.number()) flavorsId: number; @ApiProperty() @Rule(RuleType.string()) humidity: string; } /** * DTO 用于更新产品 */ export class UpdateProductDTO extends CreateProductDTO { @ApiProperty({ example: 'ZYN 6MG WINTERGREEN', description: '产品名称' }) @Rule(RuleType.string()) name: string; } /** * DTO 用于分页查询产品 */ export class QueryProductDTO { @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()) categoryId: number; } /** * DTO 用于创建分类 */ export class CreateCategoryDTO { @ApiProperty({ example: 'ZYN', description: '分类名称', required: true }) @Rule(RuleType.string().required().empty({ message: '分类名称不能为空' })) name: string; @Rule(RuleType.string().required().empty({ message: 'key不能为空' })) unique_key: string; } /** * DTO 用于更新分类 */ export class UpdateCategoryDTO { @ApiProperty({ example: 'ZYN', description: '分类名称' }) @Rule(RuleType.string()) name: string; } /** * DTO 用于查询分类(支持分页) */ export class QueryCategoryDTO { @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; // 搜索关键字(支持模糊查询) } export class CreateFlavorsDTO { @ApiProperty({ example: 'ZYN', description: '分类名称', required: true }) @Rule(RuleType.string().required().empty({ message: '分类名称不能为空' })) name: string; @Rule(RuleType.string().required().empty({ message: 'key不能为空' })) unique_key: string; } export class UpdateFlavorsDTO { @ApiProperty({ example: 'ZYN', description: '分类名称' }) @Rule(RuleType.string()) name: string; } export class QueryFlavorsDTO { @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; // 搜索关键字(支持模糊查询) } export class CreateStrengthDTO { @ApiProperty({ example: 'ZYN', description: '分类名称', required: true }) @Rule(RuleType.string().required().empty({ message: '分类名称不能为空' })) name: string; @Rule(RuleType.string().required().empty({ message: 'key不能为空' })) unique_key: string; } export class UpdateStrengthDTO { @ApiProperty({ example: 'ZYN', description: '分类名称' }) @Rule(RuleType.string()) name: string; } export class QueryStrengthDTO { @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; // 搜索关键字(支持模糊查询) } export class SkuItemDTO { @ApiProperty({ description: '产品 ID' }) productId: number; @ApiProperty({ description: 'sku 编码' }) sku: string; } export class BatchSetSkuDTO { @ApiProperty({ description: 'sku 数据列表', type: [SkuItemDTO] }) skus: SkuItemDTO[]; }