refactor(dto): group request and response models
Docker Image / Build and Push Docker Image (push) Successful in 2m50s
Docker Image / Build and Push Docker Image (push) Successful in 2m50s
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* 支付套餐列表响应 DTO
|
||||
*/
|
||||
import {
|
||||
PaymentPlansResponseSchema,
|
||||
type FirstRechargeOfferData,
|
||||
type PaymentPlansResponseData,
|
||||
type PaymentPlansResponseInput,
|
||||
} from "@/data/schemas/payment/payment_plans_response";
|
||||
|
||||
import { PaymentPlan } from "../payment_plan";
|
||||
|
||||
export class PaymentPlansResponse {
|
||||
declare readonly isFirstRecharge: boolean;
|
||||
declare readonly firstRechargeOffer: FirstRechargeOfferData | null;
|
||||
declare readonly plans: PaymentPlan[];
|
||||
|
||||
private constructor(input: PaymentPlansResponseInput) {
|
||||
const data = PaymentPlansResponseSchema.parse(input);
|
||||
Object.assign(this, {
|
||||
isFirstRecharge: data.isFirstRecharge,
|
||||
firstRechargeOffer: data.firstRechargeOffer,
|
||||
plans: data.plans.map((plan) => PaymentPlan.from(plan)),
|
||||
});
|
||||
Object.freeze(this);
|
||||
}
|
||||
|
||||
static from(input: PaymentPlansResponseInput): PaymentPlansResponse {
|
||||
return new PaymentPlansResponse(input);
|
||||
}
|
||||
|
||||
static fromJson(json: unknown): PaymentPlansResponse {
|
||||
return PaymentPlansResponse.from(json as PaymentPlansResponseInput);
|
||||
}
|
||||
|
||||
toJson(): PaymentPlansResponseData {
|
||||
return {
|
||||
isFirstRecharge: this.isFirstRecharge,
|
||||
firstRechargeOffer: this.firstRechargeOffer,
|
||||
plans: this.plans.map((plan) => plan.toJson()),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export type FirstRechargeOffer = FirstRechargeOfferData;
|
||||
Reference in New Issue
Block a user