102 lines
1.8 KiB
TypeScript
102 lines
1.8 KiB
TypeScript
import { Type } from 'class-transformer';
|
|
import {
|
|
IsBoolean,
|
|
IsIn,
|
|
IsInt,
|
|
IsNotEmpty,
|
|
IsOptional,
|
|
IsString,
|
|
Matches,
|
|
MaxLength,
|
|
Min,
|
|
ValidateIf,
|
|
} from 'class-validator';
|
|
|
|
export class HqProxyOrderPreviewDto {
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
productId: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
skuId?: string;
|
|
|
|
@Type(() => Number)
|
|
@IsInt()
|
|
@Min(1)
|
|
quantity: number;
|
|
|
|
@IsOptional()
|
|
@IsIn(['ADDRESS', 'ON_SITE_PICKUP'])
|
|
deliveryMode?: 'ADDRESS' | 'ON_SITE_PICKUP';
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
receiverCity?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
receiverDistrict?: string;
|
|
}
|
|
|
|
export class HqProxyOrderCreateDto {
|
|
@IsString()
|
|
@Matches(/^1\d{10}$/, { message: '请输入有效手机号' })
|
|
phone: string;
|
|
|
|
@IsIn(['ADDRESS', 'ON_SITE_PICKUP'])
|
|
deliveryMode: 'ADDRESS' | 'ON_SITE_PICKUP';
|
|
|
|
@ValidateIf((o: HqProxyOrderCreateDto) => o.deliveryMode === 'ADDRESS')
|
|
@IsBoolean()
|
|
autoReceive?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MaxLength(32)
|
|
receiverName?: string;
|
|
|
|
@ValidateIf((o: HqProxyOrderCreateDto) => o.deliveryMode === 'ADDRESS')
|
|
@IsString()
|
|
@MaxLength(32)
|
|
province?: string;
|
|
|
|
@ValidateIf((o: HqProxyOrderCreateDto) => o.deliveryMode === 'ADDRESS')
|
|
@IsString()
|
|
@MaxLength(32)
|
|
city?: string;
|
|
|
|
@ValidateIf((o: HqProxyOrderCreateDto) => o.deliveryMode === 'ADDRESS')
|
|
@IsString()
|
|
@MaxLength(32)
|
|
district?: string;
|
|
|
|
@ValidateIf((o: HqProxyOrderCreateDto) => o.deliveryMode === 'ADDRESS')
|
|
@IsString()
|
|
@MaxLength(256)
|
|
addressDetail?: string;
|
|
|
|
@IsString()
|
|
@IsNotEmpty()
|
|
productId: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
skuId?: string;
|
|
|
|
@Type(() => Number)
|
|
@IsInt()
|
|
@Min(1)
|
|
quantity: number;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
promoCodeId?: string;
|
|
}
|
|
|
|
export class HqProxyOrderPayDto {
|
|
@IsOptional()
|
|
@IsIn(['NATIVE', 'JSAPI'])
|
|
payMethod?: 'NATIVE' | 'JSAPI';
|
|
}
|