From 6679d99cf9a51f19ccb97b6983dfb35a5a9611cd Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Tue, 25 Nov 2025 16:49:44 +0800 Subject: [PATCH] update pay function --- app.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app.py b/app.py index c1d2c22e..3654c8d0 100755 --- a/app.py +++ b/app.py @@ -795,6 +795,9 @@ class PaymentOrder(db.Model): plan_name = db.Column(db.String(20), nullable=False) billing_cycle = db.Column(db.String(10), nullable=False) amount = db.Column(db.Numeric(10, 2), nullable=False) + original_amount = db.Column(db.Numeric(10, 2), nullable=True) # 原价 + discount_amount = db.Column(db.Numeric(10, 2), nullable=True, default=0) # 折扣金额 + promo_code_id = db.Column(db.Integer, db.ForeignKey('promo_codes.id'), nullable=True) # 优惠码ID wechat_order_id = db.Column(db.String(64), nullable=True) prepay_id = db.Column(db.String(64), nullable=True) qr_code_url = db.Column(db.String(200), nullable=True) @@ -804,11 +807,16 @@ class PaymentOrder(db.Model): expired_at = db.Column(db.DateTime, nullable=True) remark = db.Column(db.String(200), nullable=True) - def __init__(self, user_id, plan_name, billing_cycle, amount): + # 关联优惠码 + promo_code = db.relationship('PromoCode', backref='orders', lazy=True, foreign_keys=[promo_code_id]) + + def __init__(self, user_id, plan_name, billing_cycle, amount, original_amount=None, discount_amount=0): self.user_id = user_id self.plan_name = plan_name self.billing_cycle = billing_cycle self.amount = amount + self.original_amount = original_amount if original_amount is not None else amount + self.discount_amount = discount_amount or 0 import random timestamp = int(beijing_now().timestamp() * 1000000) random_suffix = random.randint(1000, 9999) @@ -837,10 +845,9 @@ class PaymentOrder(db.Model): 'plan_name': self.plan_name, 'billing_cycle': self.billing_cycle, 'amount': float(self.amount) if self.amount else 0, - 'original_amount': float(self.original_amount) if hasattr(self, 'original_amount') and self.original_amount else None, - 'discount_amount': float(self.discount_amount) if hasattr(self, 'discount_amount') and self.discount_amount else 0, - 'promo_code': self.promo_code.code if hasattr(self, 'promo_code') and self.promo_code else None, - 'is_upgrade': self.is_upgrade if hasattr(self, 'is_upgrade') else False, + 'original_amount': float(self.original_amount) if self.original_amount else None, + 'discount_amount': float(self.discount_amount) if self.discount_amount else 0, + 'promo_code': self.promo_code.code if self.promo_code else None, 'qr_code_url': self.qr_code_url, 'status': self.status, 'is_expired': self.is_expired(),