class OrderModel(BaseModel): """订单表""" # 订单编号 order_code = db.Column(db.String(32), unique=True) shop_pid = db.Column(db.String(16), db.ForeignKey("shop_model.pub_id")) # 买家id信息 user_id = db.Column(db.Integer, db.ForeignKey("buyer_model.id")) # 送货地址 order_address = db.Column(db.String(128)) # 订单金额 order_price = db.Column(db.Float, default=0) # 订单状态 order_status = db.Column(db.Integer, default=0) # 订单产生时间 created_time = db.Column(db.DateTime, onupdate=True) # 第三方交易号 trade_sn = db.Column(db.String(128), default="") user = db.relationship("BuyerModel", backref="orders") shop = db.relationship("ShopModel", backref="orders") def keys(self): return "order_address", "order_code", "order_price" def get_status(self): if self.order_status == 0: return "待付款" else: return "已付款"
class BuyerOrder(BaseModel): # 买家id user_id = db.Column(db.Integer, db.ForeignKey('buyer_user.id')) user = db.relationship("BuyerUser", backref="order") # 店铺id shop_id = db.Column(db.Integer, db.ForeignKey('shell_shop_model.id')) shop = db.relationship("ShellShopModel", backref="order") # 订单地址 order_address = db.Column(db.String(128)) # 订单价钱 order_price = db.Column(db.Float, default=0) # 订单状态 order_status = db.Column(db.Boolean, default=False) # 订单编号 order_code = db.Column(db.String(32), unique=True) # 下单时间 order_tiem = db.Column(db.DateTime, onupdate=True) def keys(self): return "order_address", "order_price", "order_status", "order_code" def get_status(self): if self.order_status: return "已支付" return "待支付"
class SellerModel(BaseModel, UserMixin): # 人名 name = db.Column(db.String(32)) # 账号 accout = db.Column(db.String(32)) # 密码 _password = db.Column('password', db.String(128)) # 权限 0:普通用户, 1:企业, 2:管理员 authority = db.Column(db.Integer) @property def password(self): return self._password @password.setter def password(self, val): self._password = generate_password_hash(val) def check_password(self, data): return check_password_hash(self.password, data) def my_setattr(self, data): for k, v in data.items(): if hasattr(self, k) and k != id: setattr(self, k, v)
class MenuFood(BaseModel): # 对外ID goods_id = db.Column(db.String(16)) # 菜品名称 goods_name = db.Column(db.String(64)) # 菜品评分 rating = db.Column(db.Float, default=5.0) # 归属店铺 shop_id = db.Column(db.Integer, db.ForeignKey('merchant_shop.id')) # 归属分类 category_id = db.Column(db.Integer, db.ForeignKey('menu_category.id')) cates = db.relationship('MenuCategory', backref='foods') # 添加一条关系 # 菜品价格 goods_price = db.Column(db.Float, default=0.0) # db.DECIMAL(6, 2) # 菜品描述 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='') # 菜品图片 goods_img = db.Column(db.String(128), default='') def keys(self): return "goods_name", "shop_id", "goods_price", "description","tips" def __repr__(self): return "<Food: {}-{}>".format(self.goods_name, self.goods_price)
class OrderInfo(BaseModel): # 订单编号 order_code = db.Column(db.String(32), unique=True) shop_pid = db.Column(db.String(16), db.ForeignKey('seller_shop.pub_id')) user_id = db.Column(db.Integer, db.ForeignKey('buyer_user.id')) # 订单送货地址 order_address = db.Column(db.String(128)) # 订单价钱 order_price = db.Column(db.Float, default=0) # 订单状态 order_status = db.Column(db.Integer, default=0) # 订单产生时间 created_time = db.Column(db.DateTime, onupdate=True) # 第三方交易号 trade_sn = db.Column(db.String(128), default='') user = db.relationship('BuyerUser', backref='orders') shop = db.relationship('SellerShop', backref='orders') def keys(self): return 'order_address', 'order_price', 'order_code' def get_status(self): if self.order_status == 0: return "代付款" else: return "以付款"
class User(BaseModel, UserMixin): __table_name__ = 'user' username = db.Column(db.String(16), unique=True, index=True) name = db.Column(db.String(16), unique=True, index=True) _password = db.Column('password', db.String(128), nullable=False) is_super_user = db.Column(db.Boolean, default=False) sex = db.Column(db.String(2), default='男') img = db.Column(db.String(128), default='images/morentouxiang.jpeg') age = db.Column(db.SmallInteger, default=0) @property def password(self): return self._password @password.setter def password(self, val): self._password = generate_password_hash(val) def check_password(self, user_pwd): return check_password_hash(self._password, user_pwd) def __repr__(self): return self.name __table_args__ = { # db.UniqueConstraint('id', 'name', name='uix_id_name'), # db.Index('ix_id_name', 'name', 'email'), # 指定表的引擎和字符编码 'mysql_charset': 'utf8', 'mysql_engine': 'InnoDB', }
class AdminUser(BaseModel): username = db.Column(db.String(16), unique=True, comment='用户名') password = db.Column(db.String(128), comment='密码') name = db.Column(db.String(8), comment='管理员姓名') tel = db.Column(db.String(12), unique=True, comment='电话号码') email = db.Column(db.String(32), unique=True, comment='邮箱账号')
class SellerUser(BaseModel, UserMixin): username = db.Column(db.String(16), unique=True) _password = db.Column('password', db.String(128)) @property def password(self): return self._password @password.setter def password(self, pwd_value): self._password = generate_password_hash(pwd_value) def check_password(self, val): return check_password_hash(self.password, val)
class Auth(BaseModel, UserMixin): username = db.Column(db.String(16), unique=True, index=True) _password = db.Column('password', db.String(128), nullable=False) @property def password(self): return self._password @password.setter def password(self, val): self._password = generate_password_hash(val) def check_password(self, user_pwd): return check_password_hash(self._password, user_pwd)
class OrderInfo(BaseModel): order_code = db.Column(db.String(32), unique=True) shop_id = db.Column(db.Integer, db.ForeignKey('seller_shop.pub_id')) user_id = db.Column(db.Integer, db.ForeignKey('buyer_user.id')) # 订单送货地址 order_address = db.Column(db.String(128)) # 订单价钱 order_price = db.Column(db.Float) # 订单状态 order_status = db.Column(db.Integer) # 订单产生时间 created_time = db.Column(db.DateTime, onupdate=True) # 第三方交易号 trade_sn = db.Column(db.String(128))
class OrderGoods(BaseModel): order_id = db.Column(db.Integer, db.ForeignKey('order_info.id')) # 商品ID号 goods_id = db.Column(db.Integer) # 商品名称 goods_name = db.Column(db.String(64)) # 商品图片 goods_image = db.Column(db.String(128), default='') # 商品价钱 goods_price = db.Column(db.Float) # 商品数量 amount = db.Column(db.Integer) order = db.relationship('OrderInfo', backref='order_goods')
class ShellModel(BaseModel, UserMixin): username = db.Column(db.String(32)) _password = db.Column('password', db.String(128)) @property def password(self): return self._password @password.setter def password(self, data): self._password = generate_password_hash(data) def check_password(self, data): return check_password_hash(self.password, data)
class Photo(BaseModel): title = db.Column(db.String(32), unique=True, index=True) img = db.Column(db.String(128)) content = db.Column(db.Text()) album_id = db.Column(db.ForeignKey('album.id')) album = db.relationship('Album', backref='photo') label_name = db.Column(db.ForeignKey('label.name')) label = db.relationship('Label', backref='photo_of_label') created_time = db.Column(db.DateTime, default=datetime.now) def __repr__(self): return self.img
class UserModel(BaseModel, UserMixin): """创建用户模型表""" username = db.Column(db.String(32), unique=True, nullable=True, index=True) _password = db.Column("password", db.String(128), nullable=True) @property def password(self): return self._password @password.setter def password(self, value): self._password = generate_password_hash(value) def check_password(self, user_password): return check_password_hash(self._password, user_password)
class DishesInfoModel(BaseModel): goods_id = db.Column(db.String(16), index=True) goods_name = db.Column(db.String(32), nullable=False) goods_price = db.Column(db.Float, nullable=False) goods_img = db.Column(db.String(64)) month_sales = db.Column(db.Integer, default=0) rating = db.Column(db.Float, default=5.0) tips = db.Column(db.String(64), default="") description = db.Column(db.String(64), default="") cate_id = db.Column(db.Integer, db.ForeignKey(DishesCategoryModel.id)) cate = db.relationship("DishesCategoryModel", backref="info") def keys(self): return "goods_id", "goods_name", "goods_price", "goods_img", "month_sales", "rating", \ "tips", "description",
class User(db.Model, UserMixin): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(20), unique=True) _password = db.Column('password', db.String(256)) nickname = db.Column(db.String(20), nullable=True) email = db.Column(db.String(30), unique=True, nullable=True) telephone = db.Column(db.String(11), nullable=True) created_time = db.Column(db.DateTime, default=datetime.utcnow) is_superuser = db.Column(db.Boolean, default=False) userlogs = db.relationship('UserLog', backref='user', lazy='dynamic') __mapper_args__ = { "order_by": created_time.desc() } def __init__(self, username=None, password=None, is_superuser=False, *args, **kwargs): self.username = username self.password = password self.is_superuser = is_superuser super(User, self).__init__(*args, **kwargs) def __str__(self): return '<User:{0}>'.format(self.username) @property def password(self): return self._password @password.setter def password(self, pw): self._password = generate_password_hash(pw) def check_password(self, pw): return check_password_hash(self._password, pw) @classmethod def is_username_exists(self, username): try: user = self.query.filter_by(username=username).first() if not user: return False except Exception: pass return True
class OrderGoodsModel(BaseModel): order_id = db.Column(db.Integer, db.ForeignKey('buyer_order.id')) # 商品ID号 goods_id = db.Column(db.Integer) # 商品名称 goods_name = db.Column(db.String(64)) # 商品图片 goods_img = db.Column(db.String(128), default='') # 商品价钱 goods_price = db.Column(db.Float) # 商品数量 amount = db.Column(db.Integer) order = db.relationship('BuyerOrder', backref='goods') def keys(self): return "goods_id", "goods_name", "goods_img", "goods_price", "amount"
class Tag(db.Model): __tablename__ = 'tag' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20)) def __str__(self): return self.name
class BuyerUser(BaseModel): # 买家用户名 username = db.Column(db.String(32), unique=True) # 买家密码 _password = db.Column("password", db.String(128)) # 买家电话号码 tel = db.Column(db.String(16), unique=True) @property def password(self): return self._password @password.setter def password(self, value): self._password = generate_password_hash(value) def check_password(self, data): return check_password_hash(self.password, data)
class Category(db.Model): __tablename__ = 'category' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20)) blogs = db.relationship('Blog', backref='category', lazy=True) def __str__(self): return self.name
class OrderGoodsModel(BaseModel): """订单商品表""" # 订单id号 order_id = db.Column(db.Integer, db.ForeignKey("order_model.id")) # 商品id号 goods_id = db.Column(db.Integer) # 商品名称 goods_name = db.Column(db.String(64)) # 上平图片 goods_img = db.Column(db.String(128), default="") # 商品价格 goods_price = db.Column(db.Float) # 商品的数量 amount = db.Column(db.Integer) order = db.relationship(OrderModel, backref="goods") def keys(self): return "goods_id", "amount", "goods_name", "goods_img", "goods_price"
class MenuCategory(BaseModel): # 分类名称 name = db.Column(db.String(32)) # 分类描述 description = db.Column(db.String(128), default='') # 分类编号 type_accumulation = db.Column(db.String(16)) # 是否默认 is_default = db.Column(db.Boolean, default=False) # 归属店铺 shop_pid = db.Column(db.String(16), db.ForeignKey('seller_shop.pub_id')) shop = db.relationship('SellerShop', backref='categories') def keys(self): return "name", "description", "type_accumulation", "is_default" def __repr__(self): return "<MenuCate {}>".format(self.name)
class MerchantUser(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, val): self._password = generate_password_hash(val) def verify_password(self, password): return check_password_hash(self._password, password) def get_id(self): return str(self.id) def __repr__(self): return '<User {}>'.format(self.username)
class SellerLoginModel(BaseModel, UserMixin): seller_phone = db.Column(db.String(11), unique=True, nullable=False) _password = db.Column( "password", db.String(128), ) @property def password(self): return self._password @password.setter def password(self, val): self._password = generate_password_hash(val) def check_password(self, in_password): return check_password_hash(self.password, in_password) def __repr__(self): return "<SellerLoginModel : {}>".format(self.seller_phone)
class BuyerUser(BaseModel): # 买家用户名 username = db.Column(db.String(32), unique=True) # 买家密码 _password = db.Column("password", db.String(128)) # 买家电话号码 tel = db.Column(db.String(16), unique=True) @property def password(self): return self._password @password.setter def password(self, value): self._password = generate_password_hash(value) def check_password(self, raw_pwd): return check_password_hash(self._password, raw_pwd) def __repr__(self): return "<Buyer: {}>".format(self.username)
class SellerShop(BaseModel): # 店铺对外ID pub_id = db.Column(db.String(16), unique=True, index=True) # 店铺名称 shop_name = db.Column(db.String(32), nullable=False, unique=True) # 店铺logo图片 shop_img = db.Column(db.String(128)) # 店铺评分 shop_rating = db.Column(db.Float, default=5.0) # 是否是品牌 brand = db.Column(db.Boolean, default=False) # 是否准时送达 on_time = db.Column(db.Boolean, default=True) # 是否蜂鸟配送 fengniao = db.Column(db.Boolean, default=True) # 是否保险 bao = db.Column(db.Boolean, default=False) # 是否有发票 piao = db.Column(db.Boolean, default=True) # 是否准标识 zhun = db.Column(db.Boolean, default=False) # 起送价格 start_send = 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='') # 店铺和商家的关系 seller_pid = db.Column(db.Integer, db.ForeignKey('seller_login_model.id')) # 建立反向查询关系 seller = db.relationship("SellerLoginModel", backref="shop") def __repr__(self): return "<Shop {}---{}>".format(self.pub_id, self.shop_name) def keys(self): return "shop_name", "shop_img", "brand", "on_time", "fengniao", "bao", \ "piao", "zhun", "start_send", "send_cost", "notice", "discount"
class BuyerAddress(BaseModel): user_id = db.Column(db.Integer, db.ForeignKey("buyer_model.id")) user = db.relationship(BuyerModel, 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" def __repr__(self): return "{}{}{}{} {} {}".format( self.provence, self.city, self.area, self.detail_address, self.name, self.tel, )
class Blog(db.Model): __tablename__ = 'blog' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(256)) author = db.Column(db.String(50)) category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=True) tags = db.relationship('Tag', secondary=tags, lazy='subquery', backref=db.backref('blogs', lazy=True)) content = db.Column(db.Text()) created_time = db.Column(db.DateTime, default=datetime.utcnow) modified_time = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) #utcnow不能加(),否则时间是固定的 __mapper_args__ = {"order_by": created_time.desc()} def __str__(self): return '<Blog:{0}>'.format(self.title)
class User(db.Model, BaseModel): CHOOSEY_TYPE = { (1, '1队'), (2, '2队'), (3, '3队'), } # id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(20), unique=True) mobile = db.Column(db.String(11), unique=True) back_mobile = db.Column(db.String(11), nullable=True) group = db.Column( db.Integer, default=CHOOSEY_TYPE, unique=True, ) # 分组 work = db.Column(db.String(50), nullable=True) # openid = db.Column(db.String(50), unique=True) session_token = '123213dsfw3432' def __repr__(self): return '<User> %s' % self.name @classmethod def set_password(self, password): return generate_password_hash(password) def check_password(self, hash, password): return check_password_hash(hash, password) @classmethod def add(self, user): db.session.add(user) return session_commit() def get_id(self): return self.session_token
class Album(BaseModel): """相册""" title = db.Column(db.String(32), unique=True, index=True) content = db.Column(db.Text()) created_time = db.Column(db.DateTime, default=datetime.now) update_time = db.Column(db.DateTime, onupdate=datetime.now) username = db.Column(db.ForeignKey('user.username')) user = db.relationship('User', backref='album_of_user') category_name = db.Column(db.ForeignKey('category.name')) category = db.relationship('Category', backref='album_of_category') def __repr__(self): return self.title