175 lines
4.5 KiB
TypeScript
175 lines
4.5 KiB
TypeScript
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[];
|
|
}
|