Ejemplo n.º 1
0
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,
        }
Ejemplo n.º 2
0
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]
        }
Ejemplo n.º 3
0
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
        }
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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}
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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')  # 关联到客户收获地址
Ejemplo n.º 9
0
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
        }
Ejemplo n.º 10
0
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')  # 关联商品评价
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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}
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
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,
        }
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
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
Ejemplo n.º 18
0
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],
        }
Ejemplo n.º 19
0
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],
        }
Ejemplo n.º 20
0
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],
        }