第一次提交
This commit is contained in:
68
app/models/order.py
Normal file
68
app/models/order.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from datetime import datetime
|
||||
from app import db
|
||||
|
||||
class Order(db.Model):
|
||||
"""订单模型"""
|
||||
__tablename__ = 'order'
|
||||
|
||||
order_id = db.Column(db.Integer, primary_key=True)
|
||||
order_number = db.Column(db.String(32), unique=True, nullable=False, index=True) # 订单号
|
||||
product_id = db.Column(db.String(32), db.ForeignKey('product.product_id'), nullable=False)
|
||||
package_id = db.Column(db.String(64), nullable=False) # 套餐ID
|
||||
contact_person = db.Column(db.String(64), nullable=False) # 联系人
|
||||
phone = db.Column(db.String(20), nullable=False) # 手机号
|
||||
quantity = db.Column(db.Integer, nullable=False, default=1) # 数量
|
||||
amount = db.Column(db.Float, nullable=False) # 金额
|
||||
status = db.Column(db.Integer, nullable=False, default=0) # 0=待支付, 1=已支付, 2=已取消, 3=已完成
|
||||
payment_method = db.Column(db.String(20), nullable=True) # 支付方式
|
||||
payment_time = db.Column(db.DateTime, nullable=True) # 支付时间
|
||||
create_time = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
update_time = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
# 关联关系
|
||||
product = db.relationship('Product', backref='orders')
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(Order, self).__init__(**kwargs)
|
||||
if not self.order_number:
|
||||
self.order_number = self.generate_order_number()
|
||||
|
||||
@classmethod
|
||||
def generate_order_number(cls):
|
||||
"""生成订单号"""
|
||||
import time
|
||||
import random
|
||||
return f"ORD{int(time.time())}{random.randint(100, 999)}"
|
||||
|
||||
def get_status_name(self):
|
||||
"""获取状态名称"""
|
||||
status_map = {
|
||||
0: '待支付',
|
||||
1: '已支付',
|
||||
2: '已取消',
|
||||
3: '已完成'
|
||||
}
|
||||
return status_map.get(self.status, '未知')
|
||||
|
||||
def to_dict(self):
|
||||
"""转换为字典"""
|
||||
return {
|
||||
'order_id': self.order_id,
|
||||
'order_number': self.order_number,
|
||||
'product_id': self.product_id,
|
||||
'product_name': self.product.product_name if self.product and hasattr(self.product, 'product_name') else None,
|
||||
'package_id': self.package_id,
|
||||
'contact_person': self.contact_person,
|
||||
'phone': self.phone,
|
||||
'quantity': self.quantity,
|
||||
'amount': self.amount,
|
||||
'status': self.status,
|
||||
'status_name': self.get_status_name(),
|
||||
'payment_method': self.payment_method,
|
||||
'payment_time': self.payment_time.strftime('%Y-%m-%d %H:%M:%S') if self.payment_time else None,
|
||||
'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S') if self.create_time else None,
|
||||
'update_time': self.update_time.strftime('%Y-%m-%d %H:%M:%S') if self.update_time else None
|
||||
}
|
||||
|
||||
def __repr__(self):
|
||||
return f'<Order {self.order_number}>'
|
||||
Reference in New Issue
Block a user