import { ApiProperty } from '@midwayjs/swagger'; import { Rule, RuleType } from '@midwayjs/validate'; // 定义包装类型的联合类型 export type PackagingType = // | PackagingPallet PackagingPackage; // | PackagingCourierPak // | PackagingEnvelope; // 定义包装类型的枚举,用于 API 文档描述 export enum PackagingTypeEnum { Pallet = 'pallet', Package = 'package', CourierPak = 'courier-pak', Envelope = 'envelope', } export class Address { @ApiProperty() @Rule(RuleType.string()) address_line_1: string; @ApiProperty() @Rule(RuleType.string()) city: string; @ApiProperty() @Rule(RuleType.string()) region: string; @ApiProperty() @Rule(RuleType.string()) country: string; @ApiProperty() @Rule(RuleType.string()) postal_code: string; } export class PhoneNumber { @ApiProperty() @Rule(RuleType.string()) number: string; @ApiProperty() @Rule(RuleType.string()) extension: string; } export class Location { @ApiProperty() @Rule(RuleType.string()) name: string; @ApiProperty({ type: Address }) @Rule(RuleType.object
()) address: Address; @ApiProperty({ type: PhoneNumber }) @Rule(RuleType.object()) phone_number: PhoneNumber; @ApiProperty() @Rule(RuleType.array()) email_addresses: string[]; contact_name?: string; } export class Time { @ApiProperty() @Rule(RuleType.string()) hour: string; @ApiProperty() @Rule(RuleType.string()) minute: string; } export enum SignatureRequirementEnum { NOTREQUIRED = 'not-required', REQUIRED = 'required', ADULTREQUIRED = 'adult-required', } export class Destination extends Location { @ApiProperty({ type: Time }) @Rule(RuleType.object