class MenuFood(BaseModel): # 菜品名称 food_name = db.Column(db.String(64)) # 菜品评分 rating = db.Column(db.Float, default=5.0) # 归属店铺 shop_id = db.Column(db.Integer, db.ForeignKey('seller_shop.id')) # 归属分类 category_id = db.Column(db.Integer, db.ForeignKey('menu_category.id')) cates = db.relationship('MenuCategory', backref='foods') # 添加一条关系 # 菜品价格 food_price = db.Column(db.DECIMAL(6, 2), default=0.0) # 菜品描述 description = db.Column(db.String(128), default='') # 月销售额 month_sales = db.Column(db.Integer, default=0) # 评分数量 rating_count = db.Column(db.Integer, default=0) # 提示信息 tips = db.Column(db.String(128), default='') # 菜品图片 food_img = db.Column(db.String(128), default='') def __repr__(self): return "<Food: {}-{}>".format(self.food_name, self.food_price)
class CartModel(BaseModel): user_id = db.Column(db.Integer, db.ForeignKey('buyer_user_model.id')) # 菜品id foods_id = db.Column(db.Integer, db.ForeignKey('menu_food.id')) # 菜品数量 food_num = db.Column(db.Integer) user = db.relationship('BuyerUserModel', backref='carts')
class MenuCategory(BaseModel): # 分类名称 name = db.Column(db.String(32)) # 分类描述 description = db.Column(db.String(128), default='') # 是否默认 is_default = db.Column(db.Boolean, default=False) # 归属店铺 shop_id = db.Column(db.Integer, db.ForeignKey('seller_shop.id')) shop = db.relationship('SellerShop', backref='categories') def __repr__(self): return "<MenuCate {}>".format(self.name) def keys(self): return "name", "description", "is_default"
class SellerUser(BaseModel, UserMixin): username = db.Column(db.String(32), unique=True, nullable=False) _password = db.Column("password", db.String(128)) @property def password(self): return self._password @password.setter def password(self, arg): self._password = generate_password_hash(arg) # 校验密码 def check_password(self, raw_pwd): return check_password_hash(self.password, raw_pwd) def __repr__(self): return "<User {}>".format(self.username)
class BuyerUserModel(BaseModel): # 买家用户名 username = db.Column(db.String(32), unique=True) # 买家密码 _password = db.Column("password", db.String(128)) # 买家电话号码 tel = db.Column(db.String(16), unique=True) # token token = db.Column(db.String(128)) @property def password(self): return self._password @password.setter def password(self, value): self._password = generate_password_hash(value) def check_pwd(self, raw_pwd): return check_password_hash(self._password, raw_pwd)
class BuyerAddressModel(BaseModel): user_id = db.Column(db.Integer, db.ForeignKey('buyer_user_model.id')) user = db.relationship("BuyerUserModel", backref="addresses") # 省 provence = db.Column(db.String(8)) # 市 city = db.Column(db.String(16)) # 县 area = db.Column(db.String(16)) # 详细地址 detail_address = db.Column(db.String(64)) # 收货人姓名 name = db.Column(db.String(32)) # 收货人电话 tel = db.Column(db.String(16)) def keys(self): return "provence", "city", "area", "detail_address", "name", "tel"
class SellerShop(BaseModel): # 店铺名称 shop_name = db.Column(db.String(32), nullable=False) # 和商家的关联关系 seller_id = db.Column(db.Integer, db.ForeignKey('seller_user.id')) # 建立一个反向关系 seller = db.relationship("SellerUser", backref="shop") # 店铺logo shop_logo = db.Column(db.String(128), default='') # 店铺评分 shop_rating = db.Column(db.Float, default=5.0) # 是否是品牌 is_brand = db.Column(db.Boolean, default=False) # 是否准时送达 is_ontime = db.Column(db.Boolean, default=True) # 是否蜂鸟配送 is_bird = db.Column(db.Boolean, default=True) # 是否保险 is_bao = db.Column(db.Boolean, default=False) # 是否有发票 is_fp = db.Column(db.Boolean, default=True) # 是否准标识 is_zun = db.Column(db.Boolean, default=False) # 起送价格 start_cost = db.Column(db.Float, default=0.0) # 配送费 send_cost = db.Column(db.Float, default=0.0) # 店铺公告 notice = db.Column(db.String(210), default='') # 优惠信息 discount = db.Column(db.String(210), default='') def keys(self): return "shop_name", "is_ontime", "is_ontime", "is_bird", "is_bao", "is_fp", "is_zun", "start_cost", "send_cost", "notice", "discount" def __repr__(self): return '<Shop {} --- {}>'.format(self.shop_name, self.seller)