update pay function

This commit is contained in:
2025-11-25 16:49:44 +08:00
parent 2c55a53c3a
commit 6679d99cf9

17
app.py
View File

@@ -795,6 +795,9 @@ class PaymentOrder(db.Model):
plan_name = db.Column(db.String(20), nullable=False) plan_name = db.Column(db.String(20), nullable=False)
billing_cycle = db.Column(db.String(10), nullable=False) billing_cycle = db.Column(db.String(10), nullable=False)
amount = db.Column(db.Numeric(10, 2), 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) wechat_order_id = db.Column(db.String(64), nullable=True)
prepay_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) 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) expired_at = db.Column(db.DateTime, nullable=True)
remark = db.Column(db.String(200), 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.user_id = user_id
self.plan_name = plan_name self.plan_name = plan_name
self.billing_cycle = billing_cycle self.billing_cycle = billing_cycle
self.amount = amount 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 import random
timestamp = int(beijing_now().timestamp() * 1000000) timestamp = int(beijing_now().timestamp() * 1000000)
random_suffix = random.randint(1000, 9999) random_suffix = random.randint(1000, 9999)
@@ -837,10 +845,9 @@ class PaymentOrder(db.Model):
'plan_name': self.plan_name, 'plan_name': self.plan_name,
'billing_cycle': self.billing_cycle, 'billing_cycle': self.billing_cycle,
'amount': float(self.amount) if self.amount else 0, '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, 'original_amount': float(self.original_amount) if self.original_amount else None,
'discount_amount': float(self.discount_amount) if hasattr(self, 'discount_amount') and self.discount_amount else 0, 'discount_amount': float(self.discount_amount) if self.discount_amount else 0,
'promo_code': self.promo_code.code if hasattr(self, 'promo_code') and self.promo_code else None, 'promo_code': self.promo_code.code if self.promo_code else None,
'is_upgrade': self.is_upgrade if hasattr(self, 'is_upgrade') else False,
'qr_code_url': self.qr_code_url, 'qr_code_url': self.qr_code_url,
'status': self.status, 'status': self.status,
'is_expired': self.is_expired(), 'is_expired': self.is_expired(),