class User(BaseModel,db.Model): __tablename__ = "ihome_user" id = db.Column(db.INTEGER,primary_key=True) phone = db.Column(db.String(11),unique=True) pwd_hash = db.Column(db.String(200)) # 密码 name = db.Column(db.String(30),unique=True) avatar = db.Column(db.String(100)) # 头像 id_name = db.Column(db.String(30)) # 实名认证的姓名 id_card = db.Column(db.String(18),unique=True) houses = db.relationship('House',backref="user") orders = db.relationship('Order',backref="user") @property def password(self): return '' # 阻止访问密码 @password.setter def password(self,pwd): # 设置密码 self.pwd_hash = generate_password_hash(pwd) # 对密码进行加密 # 校验密码 def check_pwd(self,pwd): return check_password_hash(self.pwd_hash,pwd) def to_basic_dict(self): # 将当前的self对象序列化 return { 'id':self.id, 'avatar':self.avatar if self.avatar else '', 'name':self.name, 'phone':self.phone, }
class House(BaseModel,db.Model): # 房屋信息 __tablename__ = "ihome_house" id = db.Column(db.Integer,primary_key=True) # 房屋编号 # 房屋主人的用户编号 user_id = db.Column(db.Integer,db.ForeignKey("ihome_user.id"),nullable=False) # 归属地的区域编号 area_id = db.Column(db.Integer,db.ForeignKey("ihome_area.id"),nullable=False) title = db.Column(db.String(64),nullable=False) # 标题 price = db.Column(db.Integer,default=0) # 单价,单位:分 address = db.Column(db.String(512),default="") # 地址 room_count = db.Column(db.Integer,default=1) # 房间数目 acreage = db.Column(db.Integer,default=0) # 房屋面积 unit = db.Column(db.String(32),default="") # 房屋单元,如几室几厅 capacity = db.Column(db.Integer,default=1) # 房屋容纳的人数 beds = db.Column(db.String(64),default="") # 房屋床铺的配置 deposit = db.Column(db.Integer,default=0) # 房屋押金 min_days = db.Column(db.Integer,default=1) # 最少入住天数 max_days = db.Column(db.Integer,default=0) # 最多入住天数,0表示不限制 order_count = db.Column(db.Integer,default=0) # 预定完成的该房屋的订单数 index_image_url = db.Column(db.String(256),default="") # 房屋主图片的路径 # 房屋的设施 facilities = db.relationship("Facility",secondary=ihome_house_facility) images = db.relationship("HouseImage") # 房屋的图片 orders = db.relationship('Order',backref="house") def to_dict(self): return { 'id':self.id, 'title':self.title, 'image':self.index_image_url if self.index_image_url else '', 'area':self.area.name, 'price':self.price, 'create_time':self.create_time.strftime('%Y-%m-%d %H:%M:%S'), 'room':self.room_count, 'order_count':self.order_count, 'address':self.address } def to_full_dict(self): return { 'id': self.id, 'user_avatar':self.user.avatar if self.user.avatar else '', 'user_name':self.user.name, 'title': self.title, 'price': self.price, 'address': self.area.name + self.address, 'room_count': self.room_count, 'acreage':self.acreage, 'unit':self.unit, 'capacity':self.capacity, 'beds':self.beds, 'deposit':self.deposit, 'min_days':self.min_days, 'max_days':self.max_days, 'order_count': self.order_count, 'image': [image.url for image in self.images], 'facilities':[facility.to_dict() for facility in self.facilities] }
class User(BaseModel, db.Model): __tablename__ = 'ihome_user' id = db.Column(db.INTEGER, primary_key=True) phone = db.Column(db.String(11), unique=True) pwd_hash = db.Column(db.String(200)) name = db.Column(db.String(30), unique=True) avatar = db.Column(db.String(100)) # 头像 id_name = db.Column(db.String(30)) # 实名认证的姓名 id_card = db.Column(db.String(18), unique=True) # 实名认证身份证号码 houses = db.relationship('House', backref='user') orders = db.relationship('Order', backref='user') # 读 @property def password(self): return '' # 写 @password.setter def password(self, pwd): self.pwd_hash = generate_password_hash(pwd) # 对比 def check_pwd(self, pwd): return check_password_hash(self.pwd_hash, pwd) def to_basic_dict(self): return { 'id': self.id, 'avatar': self.avatar, 'name': self.name, 'phone': self.phone }
class GoodsComments(BaseModel, db.Model): '''商品评价表''' __tablename__ = "goods_comments" id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) user_id = db.Column(db.Integer, db.ForeignKey("customer.id")) # 客户id # order_status = db.Column(db.String(255), db.ForeignKey("order.status")) # 订单状态 evaluate = db.Column(db.String(255)) # 评价 reply_id = db.Column(db.Integer, nullable=True) # 回复id Order = db.relationship("Order", secondary=goodscomments_goods_order) Goods = db.relationship("Goods", secondary=goodscomments_goods_order)
class GoodsClassification(BaseModel, db.Model): '''商品分类''' __tablename__ = 'good_classification' id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) # id自增 c_title = db.Column(db.String(64), nullable=False) # 标题 parent_id = db.Column(db.INTEGER) # goods = db.relationship('Goods', backref='good_classification') # 关联到商品 goods = db.relationship("Goods", secondary=goods_goodsclassification)
class Area(BaseModel, db.Model): # 区域 __tablename__ = "ihome_area" id = db.Column(db.Integer, primary_key=True) # 区域编号 name = db.Column(db.String(32), nullable=False) # 区域名称 houses = db.relationship("House", backref="area") # 区域的房屋 def to_dict(self): return {'id': self.id, 'name': self.name}
class Server(db.Model): __tablename__ = 'servers' id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True) server_name = db.Column(db.VARCHAR(length=255), nullable=False) server_ip = db.Column(db.VARCHAR(length=255)) database_user = db.Column(db.VARCHAR(length=100), nullable=False) database_pwd = db.Column(db.VARCHAR(length=100), nullable=False) database_port = db.Column(db.Integer, default=3306) domains = db.relationship( "Domain", backref='server') # 第一多关系的对象体现 backref 在关联的对象上注册 server属性 logs = db.relationship('PublishLog', backref='server') publishs = db.relationship('Publish', backref='server') def __repr__(self): return '<Servers %s>' % self.server_name
class Citys(BaseModel, db.Model): '''地区表''' __tablename__ = 'citys' id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) # id自增 province = db.Column(db.String(200)) # 城市 parent_id = db.Column(db.Integer, nullable=True) areas = db.relationship('CustomerShippingAddress', backref='city') # 关联到客户收获地址
class User(BaseModel, db.Model): __tablename__ = 'ihome_user' # 用户的id id = db.Column(db.INTEGER, primary_key=True) # 手机号 phone = db.Column(db.String(11), unique=True) # 加密后的密码 pwd_hash = db.Column(db.String(200)) # 用户的名字 name = db.Column(db.String(30), unique=True) # 头像 avatar = db.Column(db.String(100)) # 实名认证的姓名 id_name = db.Column(db.String(30)) # 实名认证的身份证号 id_card = db.Column(db.String(18), unique=True) # 关联 房子 houses = db.relationship('House', backref='user') # 关联 订单 orders = db.relationship('Order', backref='user') # 访问器 @property def password(self): return '' # 修改器 @password.setter def password(self, pwd): self.pwd_hash = generate_password_hash(pwd) # 检查 密码是否相等 def check_pwd(self, pwd): return check_password_hash(self.pwd_hash, pwd) # 字典 用户id、用户头像、用户姓名、用户手机号 def to_basic_dict(self): return { 'id': self.id, 'avatar': self.avatar if self.avatar else '', 'name': self.name, 'phone': self.phone }
class Customer(BaseModel, db.Model): __tablename__ = 'customer' id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) phone = db.Column(db.String(11), unique=True) # 电话 pwd_hash = db.Column(db.String(200)) # 密码 哈希 name = db.Column(db.String(30), unique=True) # 名字 avatar = db.Column(db.String(100)) # 头像 id_name = db.Column(db.String(30)) # 实名认证的姓名 id_card = db.Column(db.String(18), unique=True) # 实名认证的身份证号码 is_merchant = db.Column(db.Boolean, default=False) # 是否商家 customer_shipping_address = db.relationship('CustomerShippingAddress', backref='user') # 关联到收货地址 goods = db.relationship('Goods', backref='user') # 关联到商品表 orders = db.relationship('Order', backref='user') # 关联到订单表 goods_comments = db.relationship('GoodsComments', backref='user') # 关联商品评价
class Order(BaseModel, db.Model): # 订单 __tablename__ = "order" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey("customer.id"), nullable=False) # 客户id goods_id = db.Column(db.Integer, db.ForeignKey("goods.id"), nullable=False) # 商品id goods_price = db.Column(db.Integer, nullable=False) # 商品价格 amount = db.Column(db.Integer, nullable=False) # 总价格 note = db.Column(db.String(200), nullable=True) # 备注 status = db.Column(db.Enum(*ORDER_ENUM.keys()), default="WAIT_ACCEPT", index=True) comment = db.Column(db.Text) # 评论 Goods = db.relationship("Goods", secondary=goodscomments_goods_order) GoodsComments = db.relationship("GoodsComments", secondary=goodscomments_goods_order)
class Area(BaseModel, db.Model): """城区""" __tablename__ = 'ihome_area' id = db.Column(db.INTEGER, primary_key=True) # 区域编号 name = db.Column(db.String(32), nullable=False) # 区域名字 houses = db.relationship('House', backref='area') # 区域的房屋 def to_dict(self): return {'id': self.id, 'name': self.name}
class Goods(BaseModel, db.Model): '''商品''' __tablename__ = 'goods' id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) # id自增 title = db.Column(db.String(64), nullable=False) # 标题 price = db.Column(db.Integer, default=0) # 单价 introduce = db.Column(db.String(200), nullable=False) # 介绍 details = db.Column(db.Text) # 详情 index_image_url = db.Column(db.String(255), default="") # 商品图片的路径 images = db.relationship('GoodsImage', backref='goods') # 关联到商品的图片 # orders = db.relationship('Order', backref='goods') # 关联到订单 # goods_comments = db.relationship('GoodsComments', backref='goods') # 关联评价 # good_classification_id = db.Column(db.Integer, db.ForeignKey("GoodsClassification.id"), nullable=False) # 关联分类 GoodsClassification = db.relationship("GoodsClassification", secondary=goods_goodsclassification) Order = db.relationship("Order", secondary=goodscomments_goods_order) GoodsComments = db.relationship("GoodsComments", secondary=goodscomments_goods_order)
class Course(db.Model): c_id = db.Column(db.Integer, primary_key=True, autoincrement=True) c_name = db.Column(db.String(10), unique=True) students = db.relationship( 'Student', # 关联模块 secondary=sc, # 中间表名称 backref='cou' # 反向身份引用,学生实例.cou --> 对应的课程信息 ) # 如果不写表名,则自动命名为模块名的小写(不行的!!) __tablename__ = 'course' def __init__(self, name): self.c_name = name
class Area(BaseModel, db.Model): __tablename__ = 'ihome_area' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), nullable=False) houses = db.relationship('House', backref='area') def to_dict(self): return { 'id': self.id, 'name': self.name, }
class Grade(db.Model): # 班级模型 g_id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 班级id 主键 自增 g_name = db.Column(db.String(10), unique=True) # 班级名称 独一无二 g_desc = db.Column(db.String(100), nullable=True) # 班级描述 可以为空 g_create_time = db.Column(db.Date, default=datetime.now) # 创建时间,默认为当前时间 # Student:关联的模型名称 backref -- (关联模型实例.stu --> 对应的Grade实例) # lazy:懒加载 访问时(即 grade.students)才加载两个模型间的关系 students = db.relationship('Student', backref='stu', lazy=True) __tablename__ = "grade" def __init__(self, name, desc): self.g_name = name self.g_desc = desc
class Grade(db.Model): g_id = db.Column(db.Integer, primary_key=True, autoincrement=True) g_name = db.Column(db.String(10), unique=True) g_desc = db.Column(db.String(100), nullable=True) g_time = db.Column(db.Date, default=datetime.now) # backref='stu' 是通过stu来找班级,即student.stu students = db.relationship('Student', backref='stu', lazy=True) __tablename__ = 'grade' def __init__(self, name, desc): self.g_name = name self.g_desc = desc
class House(BaseModel, db.Model): __tablename__ = 'ihome_house' # 房间的id id = db.Column(db.Integer, primary_key=True) # 该房间用户的id,外键关联用户的 id user_id = db.Column(db.Integer, db.ForeignKey('ihome_user.id'), nullable=False) # 该房间所在区域的id, 外键关联房间所在区域的 id area_id = db.Column(db.Integer, db.ForeignKey('ihome_area.id'), nullable=False) # 该房间的标题 title = db.Column(db.String(64), nullable=False) # 该房间的价格 price = db.Column(db.Integer, default=0) # 该房间所在的详细地址 address = db.Column(db.String(512), default="") # 房间的数量 room_count = db.Column(db.Integer, default=1) # 该房间的面积 acreage = db.Column(db.Integer, default=0) # 房间类型.几室几厅 unit = db.Column(db.String(32), default="") # 房间的容量,可以容纳几人 capacity = db.Column(db.Integer, default=1) # 房间的床的信息 beds = db.Column(db.String(64), default="") # 需要交纳的押金 deposit = db.Column(db.Integer, default=0) # 最少入住的天数 min_days = db.Column(db.Integer, default=0) # 最多入住的天数 max_days = db.Column(db.Integer, default=0) order_count = db.Column(db.Integer, default=0) index_image_url = db.Column(db.String(256), default="") # 房间的设施,与设施是多对多关系 facilities = db.relationship('Facility', secondary=ihome_house_facility) # 房间的图片, 与房间是一对多关系 images = db.relationship('HouseImage') # 订单 orders = db.relationship('Order', backref='house') def to_dict(self): return { 'id': self.id, 'title': self.title, 'image': self.index_image_url if self.index_image_url else '', 'area': self.area.name, 'price': self.price, 'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'), 'room': self.room_count, 'order_count': self.order_count, 'address': self.address } def to_full_dict(self): return { 'id': self.id, 'user_avatar': self.user.avatar if self.user.avatar else '', 'user_name': self.user.name, 'title': self.title, 'price': self.price, 'address': self.area.name + self.address, 'room_count': self.room_count, 'acreage': self.acreage, 'unit': self.unit, 'capacity': self.capacity, 'beds': self.beds, 'deposit': self.deposit, 'min_days': self.min_days, 'max_days': self.max_days, 'order_count': self.order_count, 'images': [image.url for image in self.images], 'facilities': [facility.to_dict() for facility in self.facilities], }
class House(BaseModel, db.Model): __tablename__ = 'ihome_house' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('ihome_user.id'), nullable=False) area_id = db.Column(db.Integer, db.ForeignKey('ihome_area.id'), nullable=False) title = db.Column(db.String(64), nullable=False) # 标题 price = db.Column(db.Integer, default=0) # 房间单价 address = db.Column(db.String(512), default='') # 房间地址 room_count = db.Column(db.Integer, default=1) # 房间数目 acreage = db.Column(db.Integer, default=0) # 房屋面积 unit = db.Column(db.String(32), default='') # 房屋套型 几室几厅 capacity = db.Column(db.Integer, default=1) # 房屋容纳人数 beds = db.Column(db.String(64), default='') # 床铺配置 deposit = db.Column(db.Integer, default=0) # 押金 min_days = db.Column(db.Integer, default=1) # 最少入住天数 max_days = db.Column(db.Integer, default=0) # 最多入住天数 0表示不限制 order_count = db.Column(db.Integer, default=0) # 预定完成的房屋数量 index_image_url = db.Column(db.String(256), default='') # 房屋主图片的路径 facilities = db.relationship('Facility', secondary=ihome_house_facility) images = db.relationship('HouseImage') orders = db.relationship('Order', backref='house') def to_dict(self): return { 'id': self.id, 'title': self.title, 'image': self.index_image_url if self.index_image_url else '', 'area': self.area.name, 'price': self.price, 'create_time': self.create_time, 'room': self.room_count, 'order_count': self.order_count, 'address': self.address } def to_fill_dict(self): return { 'id': self.id, 'user_avatar': self.user.avatar if self.user.avatar else '', 'user_name': self.user.name, 'title': self.title, 'price': self.price, 'address': self.area.name + self.address, 'room_count': self.room_count, 'acreage': self.acreage, 'unit': self.unit, 'capacity': self.capacity, 'beds': self.beds, 'deposit': self.deposit, 'min_days': self.min_days, 'max_days': self.max_days, 'order_count': self.order_count, 'images': [image.url for image in self.images], 'facilities': [facility.to_dict() for facility in self.facilities], }
class House(BaseModel, db.Model): """房屋信息""" __tablename__ = 'ihome_house' id = db.Column(db.Integer, primary_key=True) # 房屋编号 # 房主用户id user_id = db.Column(db.Integer, db.ForeignKey('ihome_user.id'), nullable=False) # 归属地的区域编号 area_id = db.Column(db.Integer, db.ForeignKey('ihome_area.id'), nullable=False) title = db.Column(db.String(64), nullable=False) price = db.Column(db.Integer, default=0) address = db.Column(db.String(512), default='') room_count = db.Column(db.Integer, default=1) acreage = db.Column(db.Integer, default=0) # 房屋面积 unit = db.Column(db.String(32), default='') # 户型 capacity = db.Column(db.Integer, default=1) # 可居住人数 beds = db.Column(db.String(64), default='') # 床铺配置 deposit = db.Column(db.Integer, default=0) # 押金 min_days = db.Column(db.Integer, default=1) # 最小入住天数 max_days = db.Column(db.Integer, default=0) # 最大入住天数,0表示不限制 order_count = db.Column(db.Integer, default=0) # 预定完成的该房屋的订单数 index_image_url = db.Column(db.String(256), default='') # 房间主图片的路径 # 房屋的设施 facilities = db.relationship('Facility', secondary=ihome_house_facility) images = db.relationship('HouseImage') # 房屋的图片 orders = db.relationship('Order', backref='house') def to_dict(self): return { 'id': self.id, 'title': self.title, 'image': self.index_image_url if self.index_image_url else '', 'area': self.area.name, 'price': self.price, 'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'), 'room': self.room_count, 'order_count': self.order_count, 'address': self.address } def to_full_dict(self): return { 'id': self.id, 'user_avatar': self.user.avatar if self.user.avatar else '', 'user_name': self.user.name, 'title': self.title, 'image': self.index_image_url if self.index_image_url else '', 'price': self.price, 'create_time': self.create_time.strftime('%Y-%m-%d %H:%M:%S'), 'room_count': self.room_count, 'order_count': self.order_count, 'address': self.area.name + self.address, 'acreage': self.acreage, 'unit': self.unit, 'capacity': self.capacity, 'beds': self.beds, 'deposit': self.deposit, 'min_days': self.min_days, 'max_days': self.max_days, 'images': [image.url for image in self.images], 'facilities': [facility.to_dict() for facility in self.facilities], }