第一次提交
This commit is contained in:
74
app/models/package.py
Normal file
74
app/models/package.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from datetime import datetime
|
||||
from app import db
|
||||
|
||||
class Package(db.Model):
|
||||
"""产品套餐模型"""
|
||||
__tablename__ = 'package'
|
||||
|
||||
package_id = db.Column(db.String(64), primary_key=True) # 套餐ID
|
||||
product_id = db.Column(db.String(32), db.ForeignKey('product.product_id'), nullable=False) # 关联产品ID
|
||||
name = db.Column(db.String(64), nullable=False) # 套餐名称
|
||||
description = db.Column(db.Text, nullable=True) # 套餐描述
|
||||
price = db.Column(db.Float, nullable=False) # 价格
|
||||
duration = db.Column(db.Integer, nullable=False) # 时长(天)
|
||||
max_devices = db.Column(db.Integer, nullable=False, default=1) # 最大设备数
|
||||
stock = db.Column(db.Integer, nullable=False, default=-1) # 库存,-1表示无限
|
||||
status = db.Column(db.Integer, nullable=False, default=1) # 0=禁用, 1=启用
|
||||
sort_order = db.Column(db.Integer, nullable=False, default=0) # 排序
|
||||
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='packages')
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super(Package, self).__init__(**kwargs)
|
||||
if not self.package_id:
|
||||
# 自动生成套餐ID
|
||||
import uuid
|
||||
self.package_id = f"PKG_{uuid.uuid4().hex[:8]}".upper()
|
||||
|
||||
def is_enabled(self):
|
||||
"""套餐是否启用"""
|
||||
return self.status == 1
|
||||
|
||||
def has_stock(self):
|
||||
"""是否有库存"""
|
||||
return self.stock == -1 or self.stock > 0
|
||||
|
||||
def get_duration_type(self):
|
||||
"""获取时长类型"""
|
||||
if self.duration == -1:
|
||||
return '永久卡'
|
||||
elif self.duration == 1:
|
||||
return '天卡'
|
||||
elif self.duration == 30:
|
||||
return '月卡'
|
||||
elif self.duration == 90:
|
||||
return '季卡'
|
||||
elif self.duration == 365:
|
||||
return '年卡'
|
||||
else:
|
||||
return f'{self.duration}天卡'
|
||||
|
||||
def to_dict(self):
|
||||
"""转换为字典"""
|
||||
return {
|
||||
'package_id': self.package_id,
|
||||
'product_id': self.product_id,
|
||||
'name': self.name,
|
||||
'description': self.description,
|
||||
'price': self.price,
|
||||
'duration': self.duration,
|
||||
'duration_text': self.get_duration_type(),
|
||||
'max_devices': self.max_devices,
|
||||
'stock': self.stock,
|
||||
'status': self.status,
|
||||
'status_name': '启用' if self.status == 1 else '禁用',
|
||||
'sort_order': self.sort_order,
|
||||
'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'<Package {self.name}>'
|
||||
Reference in New Issue
Block a user