""" 评价模型 """ from datetime import datetime import json from config.database import db class Review(db.Model): """商品评价模型""" __tablename__ = 'reviews' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) product_id = db.Column(db.Integer, db.ForeignKey('products.id'), nullable=False) order_id = db.Column(db.Integer, db.ForeignKey('orders.id'), nullable=False) rating = db.Column(db.Integer, nullable=False) # 1-5星 content = db.Column(db.Text) images = db.Column(db.Text) # JSON格式存储图片URLs is_anonymous = db.Column(db.Integer, default=0) status = db.Column(db.Integer, default=1) # 0-隐藏 1-显示 created_at = db.Column(db.DateTime, default=datetime.utcnow) # 关联关系 user = db.relationship('User', backref='reviews') product = db.relationship('Product', backref='reviews') order = db.relationship('Order', backref='reviews') def get_images(self): """获取评价图片列表""" if self.images: try: return json.loads(self.images) except: return [] return [] def set_images(self, image_list): """设置评价图片""" if isinstance(image_list, list): self.images = json.dumps(image_list) def get_rating_stars(self): """获取星级显示""" return '★' * self.rating + '☆' * (5 - self.rating) def to_dict(self): """转换为字典""" return { 'id': self.id, 'user_id': self.user_id, 'username': self.user.username if not self.is_anonymous else '匿名用户', 'product_id': self.product_id, 'order_id': self.order_id, 'rating': self.rating, 'rating_stars': self.get_rating_stars(), 'content': self.content, 'images': self.get_images(), 'is_anonymous': self.is_anonymous, 'created_at': self.created_at.isoformat() if self.created_at else None } def __repr__(self): return f''