40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
/**
|
|
* 支付套餐 DTO
|
|
*/
|
|
import {
|
|
PaymentPlanSchema,
|
|
type PaymentPlanData,
|
|
type PaymentPlanInput,
|
|
} from "@/data/schemas/payment/payment_plan";
|
|
|
|
export class PaymentPlan {
|
|
declare readonly planId: string;
|
|
declare readonly planName: string;
|
|
declare readonly orderType: string;
|
|
declare readonly vipDays: number | null;
|
|
declare readonly dolAmount: number | null;
|
|
declare readonly creditBalance: number;
|
|
declare readonly amountCents: number;
|
|
declare readonly originalAmountCents: number | null;
|
|
declare readonly dailyPriceCents: number | null;
|
|
declare readonly currency: string;
|
|
|
|
private constructor(input: PaymentPlanInput) {
|
|
const data = PaymentPlanSchema.parse(input);
|
|
Object.assign(this, data);
|
|
Object.freeze(this);
|
|
}
|
|
|
|
static from(input: PaymentPlanInput): PaymentPlan {
|
|
return new PaymentPlan(input);
|
|
}
|
|
|
|
static fromJson(json: unknown): PaymentPlan {
|
|
return PaymentPlan.from(json as PaymentPlanInput);
|
|
}
|
|
|
|
toJson(): PaymentPlanData {
|
|
return PaymentPlanSchema.parse(this);
|
|
}
|
|
}
|