Ejemplo n.º 1
0
def new_house():
    data = {}
    for key in request.form:
        if key != 'facility':
            data[key] = request.form.get(key)

    user = User.query.filter(User.id == session['user_id']).first()
    user_id = user.id
    data['user_id'] = user_id
    facilities = Facility.query.filter(
        Facility.id.in_(request.form.getlist('facility'))).all()
    data['facilities'] = facilities
    index_image_url = request.form.get('index_image_url')
    house = House(**data)
    if index_image_url:
        house.index_image_url = index_image_url
    house.add_update()
    return jsonify({'code': OK, 'house_id': house.id})
Ejemplo n.º 2
0
def save_house_info():
    """保存房屋的基本信息
    前端发送过来的json数据
    {
        "title":"",
        "price":"",
        "area_id":"",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    """
    # 获取数据
    user_id = g.user_id
    house_data = request.get_json()
    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    # 校验参数完整性
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")

    # 校验金额
    try:
        price = int(100 * float(price))
        deposit = int(100 * float(deposit))
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    # 校验城区ID
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    if not area:
        return jsonify(errno=RET.NODATA, errmsg='城区信息有误')

    # 其余参数校验

    # 保存房屋基本信息
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 处理房屋设施信息
    facility_ids = house_data.get('facility')

    if facility_ids:
        # 过滤设施编号
        try:
            facilities = Facility.query.filter(
                Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="数据库异常")

        # 保存设施数据到房屋设施中
        if facilities:
            house.facilities = facilities

    # 将基本信息和设施信息处理完毕后,在最后再进行操作数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据失败")

    return jsonify(errno=RET.OK, errmsg="保存成功", data={'house_id': house.id})
Ejemplo n.º 3
0
def save_house_info():
    """
    保存发布房屋的信息:
    1. 接收参数并进行参数校验
    2. 创建House对象并保存房屋的基本信息
    3. 将房屋信息存进数据库
    4. 返回应答,发布房屋信息成功
    :return:
    """
    # 1. 接收参数并进行参数校验
    req_dict = request.json

    title = req_dict.get('title')
    price = req_dict.get('price')
    address = req_dict.get('address')
    area_id = req_dict.get('area_id')
    room_count = req_dict.get('room_count')
    acreage = req_dict.get('acreage')
    unit = req_dict.get('unit')
    capacity = req_dict.get('capacity')
    beds = req_dict.get('beds')
    deposit = req_dict.get('deposit')
    min_days = req_dict.get('min_days')
    max_days = req_dict.get('max_days')

    if not all([
            title, price, address, area_id, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不完整')
    try:
        # 数据库中房屋单价和押金 以 分 为单位保存
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    # 2. 创建House对象并保存房屋的基本信息
    house = House()

    house.user_id = g.user_id
    house.area_id = area_id
    house.title = title
    house.price = price
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days

    # 获取房屋的设施信息
    facility = req_dict.get("facility")
    if facility:
        # 获取房屋设施的信息
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="获取房屋设施失败")
        # 设置房屋设施信息
        house.facilities = facilities

    # 3. 将房屋信息存进数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="保存房屋信息失败")
    # 4. 返回应答,发布房屋信息成功
    return jsonify(errno=RET.OK, errmsg="发布房屋信息成功", data=house.to_basic_dict())
Ejemplo n.º 4
0
def save_house_info():
    """
    保存房屋信息
    area_id:""
    title:""
    price:""
    address:""
    room_count:""
    acreage:""
    unit:""
    capacity:""
    beds:""
    deposit:""
    min_days:""
    max_days:""
    :return:
    """
    # 获取房屋基本信息
    house_data = request.get_json()
    user_id = g.get("user_id")
    area_id = house_data.get("area_id")
    title = house_data.get("title")
    price = house_data.get("price")
    address = house_data.get("address")
    room_count = house_data.get("room_count")
    acreage = house_data.get("acreage")
    unit = house_data.get("unit")
    capacity = house_data.get("capacity")
    beds = house_data.get("beds")
    deposit = house_data.get("deposit")
    min_days = house_data.get("min_days")
    max_days = house_data.get("max_days")

    # 数据校验
    if not all([
            user_id, area_id, title, price, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="数据不完整")

    # 地区id校验
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库错误")
    else:
        if not area:
            return jsonify(errno=RET.NODATA, errmsg="地区不存在")

    # 金额检查
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        return jsonify(errno=RET.PARAMERR, errmsg="价格数据错误")

    # 生成房屋对象
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 获取房屋设备信息数据
    facilities_ids = house_data.get("facilities")
    # 对房屋设备信息数据校验
    if facilities_ids:
        # 有房屋设备信息
        try:
            facilities_ids = Facility.query.filter(
                Facility.id.in_(facilities_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="设备信息数据库出错")

        if facilities_ids:
            # 表示有合法的设备信息
            house.facilities = facilities_ids

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据库信息出错")
    # 成功返回
    return jsonify(errno=RET.OK, errmsg="保存成功", data={"house_id": house.id})
Ejemplo n.º 5
0
def save_houses_info():
    '''保存发布的房屋信息'''
    """保存房屋的基本信息
        前端发送过来的json数据
        {
            "title":"",
            "price":"",
            "area_id":"1",
            "address":"",
            "room_count":"",
            "acreage":"",
            "unit":"",
            "capacity":"",
            "beds":"",
            "deposit":"",
            "min_days":"",
            "max_days":"",
            "facility":["7","8"]
        }
        """
    # 1.获取参数
    house_data = request.get_json()
    if house_data is None:
        return jsonify(errno=RET.PARAMERR, errmsg='参数不能为空')

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数
    facility = house_data.get('facility')

    # 2.参数校验
    if not all([
            title, price, area_id, address, unit, capacity, beds, deposit,
            min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不全')

    # 对金额进行转换
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        logging.error(e)
        return jsonify(errno=RET.DBERR, errmsg='金额格式错误')
    # 3.保存数据
    # 3.1获取用户id
    user_id = g.user_id
    # 3.2创建房屋对象
    house_info = House(user_id=user_id,
                       area_id=area_id,
                       title=title,
                       price=price,
                       address=address,
                       room_count=room_count,
                       acreage=acreage,
                       unit=unit,
                       capacity=capacity,
                       beds=beds,
                       deposit=deposit,
                       min_days=min_days,
                       max_days=max_days)

    print facility
    # 3.3处理房屋信息
    if facility:
        # 如果不为空代表提交了数据,进行数据查询,是否存在
        try:
            facility_list = Facility.query.filter(
                Facility.id.in_(facility)).all()
        except Exception as e:
            logging.error(e)
            return jsonify(errno=RET.DBERR, errmsg='查询数据库错误')

        if facility_list is None:
            return jsonify(errno=RET.NODATA, errmsg='数据不存在')

        house_info.facilities = facility_list

    # 3.4.添加到数据库
    try:
        db.session.add(house_info)
        db.session.commit()
    except Exception as e:
        logging.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='数据存储失败')

    # 4.返回数据
    return jsonify(errno=RET.OK, errmsg='成功', data={"house_id": house_info.id})
Ejemplo n.º 6
0
def set_house_info():
    """发布新房源信息"""

    # 获取参数
    user_id = g.user_id
    house_data = request.get_json()
    title = house_data.get("title")
    price = house_data.get("price")
    area_id = house_data.get("area_id")
    address = house_data.get("address")
    room_count = house_data.get("room_count")
    acreage = house_data.get("acreage")
    unit = house_data.get("unit")
    capacity = house_data.get("capacity")
    beds = house_data.get("beds")
    deposit = house_data.get("deposit")
    min_days = house_data.get("min_days")
    max_days = house_data.get("max_days")

    # 校验参数
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, max_days, min_days
    ]):
        return jsonify(error=RET.PARAMERR, errmsg="参数不完整")

    # 判断金额是否正确
    try:
        price = int(float(price) * 100)  # 数据库中的单位是 分
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error=RET.PARAMERR, errmsg="金额设置错误")

    # 判断城区id是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error=RET.DBERR, errmsg="数据库异常")
    if not area:
        return jsonify(error=RET.NODATA, errmsg="城区数据有误")

    # 保存房屋信息
    house = House(user_id=user_id,
                  title=title,
                  price=price,
                  area_id=area_id,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 处理房屋的设施信息
    facility_ids = house_data.get("facility")

    # 先到数据库中验证
    if facility_ids:  # 设施信息不是必填,传过来的数据是列表形式的
        try:
            # 过滤出用户勾选了的设施
            facilities = Facility.query.filter(
                Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(error=RET.DBERR, errmsg="数据库异常")
        if facilities:
            # 表示数据库中有对应设施的数据
            # 保存数据
            house.facilities = facilities  # 会自动将设施、房屋的信息添加到房屋设施表中
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        db.session.rollback()  # 如果出错,之前的房屋信息也要回退,所以统一在这里回退
        current_app.logger.error(e)
        return jsonify(error=RET.DBERR, errmsg="数据库异常")

    # 返回
    return jsonify(error=RET.OK, errmsg="保存数据成功",
                   data={"house_id": house.id})  # 返回房屋id,方便提交图片时使用
Ejemplo n.º 7
0
def save_new_house():
    """
    1. 接收参数并且判空
    2. 将参数的数据保存到新创建house模型
    3. 保存house模型到数据库
    前端发送过来的json数据
    {
        "title":"",
        "price":"",
        "area_id":"1",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    :return:
    """
    # POST请求,获取参数

    title = request.form.get('title')
    price = request.form.get('price')
    area_id = request.form.get('area_id')
    address = request.form.get('address')
    room_count = request.form.get('room_count')
    acreage = request.form.get('acreage')
    unit = request.form.get('unit')
    capacity = request.form.get('capacity')
    beds = request.form.get('beds')
    deposit = request.form.get('deposit')
    min_days = request.form.get('min_days')
    max_days = request.form.get('max_days')
    facility = request.form.get('facility')
    user = g.ih_user_profile
    # 非空判断
    if not all([title, price, area_id, address, room_count, acreage, unit, capacity, beds, deposit, min_days, max_days,
                facility]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不足")

    if not user:
        return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")

    house = House()
    # 标题
    house.title = str(title)
    # 价格
    house.price = str(price)
    house.area_id = int(area_id)
    house.address = str(address)
    house.room_count = int(room_count)
    house.acreage = int(acreage)
    house.unit = str(unit)
    house.capacity = int(capacity)
    house.beds = str(beds)
    house.deposit = str(deposit)
    house.min_days = int(min_days)
    house.max_days = int(max_days)
    house.facility = facility
    house.user_id = g.ih_user_profile.id
    house_id = g.ih_house_info.id

    # 3.2 保存回数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        # 数据库回滚
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errormsg="保存房源对象异常")

    return jsonify(error=RET.OK, errmsg="发布房源成功", data={house_id})
Ejemplo n.º 8
0
def save_house_info():
    """
    发布新房源
    1/确认用户身份id
    2/获取参数,get_json()
    3/判断数据的存在
    4/获取详细的参数信息,指房屋的基本信息,不含配套设施title,price/area_id/address/unit/acreage/cacacity/beds/deposit/min_days/max_days/
    5/检查参数的完整性
    6/对价格参数进行转换,由元转成分
    7/构造模型类对象,准备存储数据
    8/判断配套设施的存在
    9/需要对配套设施进行过滤查询,后端只会保存数据库中已经定义的配套设施信息
    facilites = Facility.query.filter(Facility.id.in_(facility)).all()
    house.facilities = facilities
    10/保存数据到数据库中
    11/返回结果,house.id,让后面上传房屋图片和房屋进行关联
    :return:
    """
    # 获取user_id
    user_id = g.user_id
    # 获取post参数
    house_data = request.get_json()
    # 检验参数的存在
    if not house_data:
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    # 获取详细参数信息
    title = house_data.get("title")  # 房屋标题
    area_id = house_data.get("area_id")  # 房屋城区
    address = house_data.get("address")  # 详细地址
    price = house_data.get("price")  # 房屋价格
    room_count = house_data.get("room_count")  # 房屋数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋户型
    capacity = house_data.get("capacity")  # 适住人数
    beds = house_data.get("beds")  # 卧床配置
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数
    # 检验参数完整性
    if not all([
            title, area_id, address, price, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    # 对价格参数进行转换
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg="价格数据错误")
    # 构造模型类对象
    house = House()
    house.user_id = user_id
    house.area_id = area_id
    house.title = title
    house.address = address
    house.price = price
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days

    # 获取房屋配套设施参数信息
    facility = house_data.get("facility")
    # 判断配套设施的存在
    if facility:
        # 查询数据库,对房屋配套设施进行过滤查询,确保配套设施的编号在数据库中存在
        try:
            facilities = Facility.quert.filter(Facility.id.in_(facility)).all()
            # 保存房屋配套设施信息,配套设施的数据存在第三张表,关系引用在数据库中没有具体字段
            house.facilities = facilities
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="查询配套设施异常")
    # 保存房屋数据到mysql数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存房屋数据失败")
    # 返回结果,house.id是用来后面实现上传房屋图片做准备(前段获取数据)
    return jsonify(errno=RET.OK, errmsg="OK", data={"house_id": house.id})
Ejemplo n.º 9
0
def save_house_info():
    """
    保存要发布的房源的信息
    :param:{
        title
        price
        area_id
        address
        room_count
        acreage
        unit
        capacity
        beds
        deposit
        min_days
        max_days
        facility
    }
    :return:
    """
    house_dict = request.get_json()
    title = house_dict.get("title")  # 名称标题
    price = house_dict.get("price")  # 单价
    area_id = house_dict.get("area_id")  # 所属城区
    address = house_dict.get("address")  # 详细地址
    room_count = house_dict.get("room_count")  # 房间数
    acreage = house_dict.get("acreage")  # 总面积
    unit = house_dict.get("unit")  # 布局
    capacity = house_dict.get("capacity")  # 容纳人数
    beds = house_dict.get("beds")  # 床数量
    deposit = house_dict.get("deposit")  # 押金
    min_days = house_dict.get("min_days")  # 最小入住天数
    max_days = house_dict.get("max_days")  # 最大入住天数
    # facility = house_dict.get("facility")  # 房屋名称标题

    # 校验参数
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    # 判断城区id是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")
    if not area:
        return jsonify(errno=RET.NODATA, errmsg="城区信息有误")

    # 保存房屋信息
    house = House(
        user_id=g.user_id,
        area_id=area_id,
        title=title,
        price=price,
        address=address,
        room_count=room_count,
        acreage=acreage,
        unit=unit,
        capacity=capacity,
        beds=beds,
        deposit=deposit,
        min_days=min_days,
        max_days=max_days,
    )

    # 处理房屋设施信息
    facilities = house_dict.get("facility")
    if facilities:
        try:
            facilities_list = Facility.query.filter(
                Facility.id.in_(facilities)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="查询数据库异常")
        if facilities_list:
            # 保存设施信息
            house.facilities = facilities_list
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据库异常")

    return jsonify(errno=RET.OK, errmsg="保存成功", data={"house_id": house.id})
Ejemplo n.º 10
0
def save_house_info():
    u'''
    参数
    user_id
    area_id
    title
    price
    address
    room_count
    acreage
    unit
    capacity
    beds
    deposit
    min_days
    max_days
    facilities: ['1', '2']
    :return:
    '''
    # 获取数据
    user_id = g.user_id
    req_dict = request.get_json()
    area_id = req_dict.get('area_id')
    title = req_dict.get('title')
    price = req_dict.get('price')
    address = req_dict.get('address')
    room_count = req_dict.get('room_count')
    acreage = req_dict.get('acreage')
    unit = req_dict.get('unit')
    capacity = req_dict.get('capacity')
    beds = req_dict.get('beds')
    deposit = req_dict.get('deposit')
    min_days = req_dict.get('min_days')
    max_days = req_dict.get('max_days')

    # 校验数据
    if not all([area_id, title, price, address, room_count, acreage, unit, capacity, beds, deposit, min_days, max_days]):
        return jsonify(errno=RET.PARAMERR, errmsg=u'参数不完整')

    try:
        price = int(float(price)*100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg=u'参数错误')

    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg=u'数据库错误')

    if area is None:
        return jsonify(errno=RET.NODATA, errmsg=u'城区不存在')

    try:
        room_count = int(room_count)
        acreage = int(acreage)
        capacity = int(capacity)
        min_days = int(min_days)
        max_days = int(max_days)
    except Exception as e:
        return jsonify(errno=RET.PARAMERR, errmsg=u'参数错误')

    if room_count<0 or acreage<0 or capacity<0 or min_days<0 or max_days<0:
        return jsonify(errno=RET.PARAMERR, errmsg=u'参数错误')

    # 业务处理
    house = House()
    house.user_id = user_id,
    house.area_id = area_id,
    house.title = title,
    house.price = price,
    house.address = address,
    house.room_count = room_count,
    house.acreage = acreage,
    house.unit = unit,
    house.capacity = capacity,
    house.beds = beds,
    house.deposit = deposit,
    house.min_days = min_days,
    house.max_days = max_days

    try:
        db.session.add(house)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg=u'数据库异常')

    # 添加设备
    facility_ids = req_dict.get('facility')
    if facility_ids is not None:
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg=u'设备信息存储失败')

        if facilities:
            house.facilities = facilities

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg=u'发布房源失败')

    # 返回响应
    return jsonify(errno=RET.OK, errmsg=u'发布成功', data={'house_id': house.id})
Ejemplo n.º 11
0
def save_house_info():
    """保存新发布的房源信息, 包括该房源的设备信息"""
    # 1. 获取房源基本信息参数
    user_id = g.user_id
    house_data = request.get_json()

    title = house_data.get('title')
    price = house_data.get('price')
    area_id = house_data.get('area_id')
    address = house_data.get('address')
    room_count = house_data.get('room_count')
    acreage = house_data.get('acreage')
    unit = house_data.get('unit')
    capacity = house_data.get('capacity')
    beds = house_data.get('beds')
    deposit = house_data.get('deposit')
    min_days = house_data.get('min_days')
    max_days = house_data.get('max_days')

    # 2. 校验参数
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不完整')

    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    # 3. 检查区域id是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库异常')

    if area is None:
        return jsonify(errno=RET.NODATA, errmsg='区域信息错误')

    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 4. 校验是否有设备,若有设备,设备id是否存在
    facility_ids = house_data.get('facilities')
    if facility_ids:
        try:
            facilities = Facility.query.filter(
                Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='保存数据异常')

        if facilities:
            house.facilities = facilities

    # 5. 保存房源信息到数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存数据异常')

    return jsonify(errno=RET.OK, errmsg='OK', data={"house_id": house.id})
Ejemplo n.º 12
0
def set_house_info():
    """设置房屋信息
    前端发送来的json数据
    {
        "title":"",
        "price":"",
        "area_id":"1",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    """
    # 获取参数
    house_data = request.get_json()
    if not house_data:
        return jsonify(error_code=RET.PARAMERR, errmsg="参数不完整")

    title = house_data.get("title")
    price = house_data.get("price")
    area_id = house_data.get("area_id")
    address = house_data.get("address")
    room_count = house_data.get("room_count")
    acreage = house_data.get("acreage")
    unit = house_data.get("unit")
    capacity = house_data.get("capacity")
    beds = house_data.get("beds")
    deposit = house_data.get("deposit")
    min_days = house_data.get("min_days")
    max_days = house_data.get("max_days")

    # 参数校验
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(error_code=RET.PARAMERR, err_msg="参数不完整")

    # 判断price 和 deposit
    try:
        price = int(float(price) * 100)
        deposit = int(float(price) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error_code=RET.PARAMERR, errmsg="参数有误")

    # 业务处理
    # 保存房屋信息
    user_id = g.user_id

    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 获取房屋的设施信息
    facility_id_list = house_data.get("facility")
    if facility_id_list:
        # 用户勾选了设施
        # 筛选掉不合理的设施
        try:
            facility_list = Facility.query.filter(
                Facility.id.in_(facility_id_list)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(error_code=RET.DBERR, errmsg="数据库异常")

        if facility_list:
            house.facilities = facility_list

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(error_code=RET.DBERR, errmsg="保存房屋信息失败")

    # 返回值
    return jsonify(error_code=RET.OK,
                   errmsg="保存成功",
                   data={"house_id": house.id})
Ejemplo n.º 13
0
def save_house_info():
    house_data = request.get_json()
    if house_data is None:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不完整')
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)

    except Exception as e:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    user_id = g.user_id
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 处理房屋的设施信息
    facility_id_list = house_data.get('facility')
    if facility_id_list:
        # 表示用户勾选了房屋设施
        # 过滤用户传送的不合理的设施id
        try:
            facility_list = Facility.query.filter(
                Facility.id.in_(facility_id_list)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='数据库异常')
        # !!!为房屋添加设施信息
        if facility_list:
            house.facilities = facility_list

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存数据失败')

    return jsonify(errno=RET.OK, errmsg='保存成功', data={"house_id": house.id})
Ejemplo n.º 14
0
def set_house_info():
    """
    房源基本信息的发布
    请求参数: json对象
      {
        "title":"",
        "price":"",
        "area_id":"1",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    :return: 正常 json对象+ 房屋id 异常json对象
    """
    # 获取参数
    house_data = request.get_json()
    user_id = g.user_id
    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    # 参数校验
    # 参数完整
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")
    # 价格的格式
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
        min_days = int(min_days)
        max_days = int(max_days)
        capacity = int(capacity)
        acreage = int(float(acreage) * 100)
        room_count = int(room_count)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    # 判断城区id值是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if area is None:
        return jsonify(errno=RET.PARAMERR, errmsg="城区信息异常")

    # 房屋基本信息保存
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 获取房屋设施的配置数据
    facility = house_data.get('facility')
    if facility:
        # 如果数据存就先数据是否存在在表中,查询所有在文佳删除给
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility)).all()
            house.facilities = facilities
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="数据库异常")
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logegr.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="数据保存异常")
    # 保存成功,将house_id 返回给前端的图片上传
    return jsonify(errno=RET.OK, errmsg="Ok", data=house.id)
Ejemplo n.º 15
0
def pub_house():
    # 1.判断登陆状态
    # 2.获取参数 --13个
    # 3.对数据进行校验  --完整性校验 --价钱有效性校验
    # 4.保存数据对象属性
    # 5.提交数据操作
    # 6.响应

    # 2.获取参数 --13个
    json_dict = request.json

    title = json_dict.get('title')  # 标题
    price = json_dict.get('price')  # 价钱--分
    address = json_dict.get('address')
    area_id = json_dict.get('area_id')
    room_count = json_dict.get('room_count')
    acreage = json_dict.get('acreage')  # 房屋面积
    unit = json_dict.get('unit')
    capacity = json_dict.get('capacity')
    beds = json_dict.get('beds')
    deposit = json_dict.get('deposit')  # 房屋押金
    min_days = json_dict.get('min_days')
    max_days = json_dict.get('max_days')
    # 配置物品有可能都不配,所以不放在all()里面判断
    facilities = json_dict.get('facility')  # 配置的物品复选框列表类型传入 【2,4,6】

    # ---数据完整性判断---
    if not all([
            title, price, address, area_id, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg=u'信息填写不完整')

    # ---1.对于价钱这类存在浮点数,或者数字的数据,需要进行校验数据有效性校验,防止传入字符等---
    # ---2.对于浮点数的数据存储,需要将浮点数转化为整数进行存储。如价钱,使用价钱×100.以分为单位,进行整数存储---
    # ---3.浮点数存在精度问题,所以输出存数不使用浮点数存储---

    try:  # 先试转成浮点数,可以转说明不是字符串
        price = int(float(price) * 100)
        acreage = int(float(acreage) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg=u'数据格式不正确')
# 4.保存数据对象属性
    house = House()
    house.user_id = g.user_id
    house.area_id = area_id
    house.title = title
    house.price = price
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days

    # 如果发布时,有选择设备,就把选择的设备添加到house.facilities 属性保存
    if facilities:
        try:
            house.facilities = Facility.query.filter(
                Facility.id.in_(facilities)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg=u'数据查询失败')

    # 4.保存到数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='发布新房源失败')

    # 5.响应结果                              传入house_id 是为了埋在html,给别的接口获取数据
    return jsonify(errno=RET.OK, errmsg='发布新房源成功', data={'house_id': house.id})
Ejemplo n.º 16
0
Archivo: house.py Proyecto: wsxgg/house
def save_house_info():
    """添加房屋基本信息
    前端传递的json信息:
    {
        "title": "",
        "price": "",
        "area_id": "",
        "address": "",
        "room_count": "",       出租房间数
        "acreage: "",       房屋面积
        "unit": "",         户型
        "capacity": "",     适宜住宿人数
        "beds": "",         卧床配置
        "deposit":"",       押金
        "min_day": "",  
        "max_day": "",
        "facility": ["7", "8"]      配套设施
    }
    """

    # 1. 获取参数
    house_data = request.get_json()

    user_id = g.user_id
    house_id = house_data.get("house_id")
    title = house_data.get("title")
    price = house_data.get("price")
    area_id = house_data.get("area_id")  # 城区号
    address = house_data.get("address")
    room_count = house_data.get("room_count")  # 出租房间数
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 户型
    capacity = house_data.get("capacity")  # 适宜居住人数
    beds = house_data.get("beds")  # 卧床配置
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")
    max_days = house_data.get("max_days")

    # 2. 校验参数
    # 2.1 校验参数完整性
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")
    # 2.2 校验价格格式是否正确
    try:
        price = int(float(price) * 100)  # 因为数据库存储的是Integer
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    # 2.3 校验城区是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        login_required.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据异常')
    if area is None:
        return jsonify(errno=RET.NODATA, errmsg='城区信息有误')

    # 3. 业务逻辑
    # 3.1 处理房屋信息
    # 3.1.1 如果是新建房屋
    if not house_id:
        house = House(user_id=user_id,
                      area_id=area_id,
                      title=title,
                      price=price,
                      address=address,
                      room_count=room_count,
                      acreage=acreage,
                      unit=unit,
                      capacity=capacity,
                      beds=beds,
                      deposit=deposit,
                      min_days=min_days,
                      max_days=max_days)
    # 3.1.2 如果是修改房屋信息
    else:
        try:
            house = House.query.get(house_id)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='数据库异常1')

        house.area_id = area_id
        house.title = title
        house.price = price
        house.address = address
        house.room_count = room_count
        house.acreage = acreage
        house.unit = unit
        house.capacity = capacity
        house.beds = beds
        house.deposit = deposit
        house.min_days = min_days
        house.max_days = max_days

        # 获取房屋图片信息
        images = HouseImage.query.filter_by(house_id=house_id).all()
        image_list = []
        for image in images:
            image_url = QINIU_URL_DOMAIN + image.url
            image_list.append(image_url)

    # 3.2 处理房屋设施信息
    # 3.2.1 获取房屋设施列表
    facility_ids = house_data.get("facility")
    # 3.2.2 校验房屋设施(如果有数据,则保存数据)
    if facility_ids:
        try:
            facilities = Facility.query.filter(
                Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='数据库异常2')
        # 判断设施编号是否存在
        if facilities:
            # 如果是合法设施,保存到数据库
            house.facilities = facilities

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存数据失败')

    # 4. 返回应答
    # 4.1 如果是新建按房屋信息
    if not house_id:
        return jsonify(errno=RET.OK,
                       errmsg='创建成功',
                       data={"house_id": house.id})
    # 4.2 如果是修改房屋信息
    else:
        return jsonify(errno=RET.OK,
                       errmsg='创建成功',
                       data={
                           "house_id": house.id,
                           "images": image_list
                       })
Ejemplo n.º 17
0
def save_house_info():
    """
    保存房源信息
    格式: json
    :return:
    """
    # 获取数据
    user_id = g.user_id
    house_data = request.get_json()

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数
    # 校验数据
    if not all(
            [title, price, area_id, address, room_count, acreage, unit, capacity, beds, deposit, min_days, max_days]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")
    # 判断用户输入的房屋单价和押金是否为正确参数,通过存入数据库字段单位分,如果用户输入的值不能转换为float和int类型,说明参数错误
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    # 判断区县id是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")
    if area is None:
        return jsonify(errno=RET.NODATA, errmsg="区县信息有误")
    # 保存信息

    house = House(
        user_id=user_id,
        title=title,
        price=price,
        area_id=area_id,
        address=address,
        room_count=room_count,
        acreage=acreage,
        unit=unit,
        capacity=capacity,
        beds=beds,
        deposit=deposit,
        min_days=min_days,
        max_days=max_days
    )

    # 获取设备
    facility_ids = house_data.get("facility")
    # 对获取设备设施字段的值进行判断,下判断这个值存不存在,当用户勾选设备设施时,举例facility_ids值为[2,4]
    if facility_ids:
        # 通过Facility类中的id值使用in_方法查询其中的id
        # select * from ih_facility_info where id in facility_ids;
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if facilities:
        house.facilities = facilities
        try:
            db.session.add(house)
            db.session.commit()
        except Exception as e:
            current_app.logger.error(e)
            db.session.rollback()
            return jsonify(errno=RET.DBERR, errmsg="保存数据异常")
    # 返回结果
    return jsonify(errno=RET.OK, errmsg="OK", data={"house_id": house.id})
Ejemplo n.º 18
0
def save_house_info():
    """保存房屋基本信息"""
    # 获取数据
    user_id = g.user_id
    houses = request.get_data()
    if not houses:
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
    house_data = json.loads(houses)

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")

    # 判断金额是否正确
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="房屋单价或者押金填写错误")

    # 判断城区id是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="查询城区信息数据库异常")
    if not area:
        return jsonify(errno=RET.PARAMERR, errmsg="城区信息有误")

    # 保存房屋信息
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 处理房屋设施信息
    facility_id_l = house_data.get("facility")
    if facility_id_l:
        try:
            # sql: select * from table_name where fac_id in []
            facilities = Facility.query.filter(
                Facility.fac_id.in_([int(i) for i in facility_id_l])).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="查询设施信息数据库异常")
        if facilities:
            house.facilities = facilities

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存房屋信息失败")

    return jsonify(errno=RET.OK,
                   errmsg="OK",
                   data={"house_id": house.house_id})
Ejemplo n.º 19
0
def save_house_info():
    """保存房屋的基本信息:发布
    前端发送过来的json数据
    {
        "title": "",
        "price": "",
        "area_id": "",
        "address": "",
        "room_count": "",
        "acreage": "",
        "unit": "",
        "capacity": "",
        "beds": "",
        "deposit": "",
        "min_days": "",
        "max_days": "",
        "facility": ["7", "8"]
    }
    """
    # 获取数据
    user_id = g.user_id

    house_data = request.get_json()

    title = house_data.get('title')  # 标题
    price = house_data.get('price')  # 单价
    area_id = house_data.get('area_id')  # 区域的编号
    address = house_data.get('address')  # 地址
    room_count = house_data.get('room_count')  # 房间数
    acreage = house_data.get('acreage')  # 面积
    unit = house_data.get('unit')  # 布局(几厅几室)
    capacity = house_data.get('capacity')  # 可容纳人数
    beds = house_data.get('beds')  # 卧床数目
    deposit = house_data.get('deposit')  # 押金
    min_days = house_data.get('min_days')  # 最小入住天数
    max_days = house_data.get('max_days')  # 最大入住天数

    # 校验必填参数,facility非必填
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不完整')

    # 对单价和押金作出判断,是否是数字,判断方法:可否转换成数字
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    # 判断城区是否存在,防止发布的城区在数据库中没有,进行过滤操作
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据异常')

    # 如果城区在数据库中不存在
    if area is None:
        return jsonify(errno=RET.NODATA, errmsg='城区信息有误')

    # 其他验证,略

    # 保存数据
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  room_count=room_count,
                  address=address,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 处理房屋设施信息
    facility_ids = house_data.get('facility')

    # 如果用户勾选了设施信息,再保存到数据库
    if facility_ids:
        # ["7", "8", ..]
        # 过滤出设施数据在数据库中存在的数据
        try:
            facilities = Facility.query.filter(
                Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='数据库异常')

        if facilities:
            # 表示有合法的设施数据
            # 保存数据库
            house.facilities = facilities
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存数据错误')

    # 保存数据成功
    return jsonify(errno=RET.OK, errmsg='保存数据成功', data={"house_id": house.id})
Ejemplo n.º 20
0
def save_house_info():
    '''保存房屋的基本信息
    前端发送过来的json数据
    {
        "title": "",
        "price": "",
        "area_id": "1",
        "address": "",
        "room_count": "",
        "acreage": "",
        "unit": "",
        "capacity": "",
        "beds": "",
        "deposit": "",
        "min_days": "",
        "max_days": "",
        "facility": ["7", "8"]
    }
    '''
    user_id = g.user_id
    house_data = request.get_json()

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    # 校验参数
    if not all([title, price, area_id, address, room_count, acreage, unit, capacity, beds, deposit, min_days, max_days]):
        return  jsonify(errno=RET.PARAMERR, errmsg='参数不完整')

    # 单价和押金校验
    try:
        price = int(float(price)*100)
        deposit = int(float(deposit)*100)
    except Exception as e:
        current_app.logger.error(e)
        return  jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    # 判断城区是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='数据库异常')

    if area is None:
        return jsonify(errno=RET.NODATA, errmsg='城区信息有误')

    # 参数校验过多,就不校验那么多了
    # 保存房屋信息
    house = House(
        user_id=user_id,
        area_id=area_id,
        title=title,
        price=price,
        address=address,
        room_count=room_count,
        acreage=acreage,
        unit=unit,
        capacity=capacity,
        beds=beds,
        deposit=deposit,
        min_days=min_days,
        max_days=max_days
    )
    # print('the first time add')
    # db.session.add(house)

    # 处理房屋的设施信息
    facility_ids = house_data.get('facility')
    print(facility_ids)

    # print('-'*50)
    # 如果用户勾选了设施信息,保存信息到数据库
    if facility_ids:
        try:
            print('+'*50)
            facilities = Facility.query.filter(Facility.id.in_(facility_ids)).all()
            # print('-'*50)
            print(facilities)
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='保存数据异常')

        # print('-'*50)
        if facilities:
            # 保存有合法设施的数据
            # 保存设施数据
            print('开始执行house.facilities = facilities')
            house.facilities = facilities
            print('结束执行house.facilities = facilities')
            # db.session.add(house)
            # print('the second time add')

    # print('-'*50)
    try:
        print('start add')
        db.session.add(house)
        print('end add')
        print('start commit')
        db.session.commit()
        print('end commit')
    except Exception as e:
        db.session.rollback()
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg='保存数据失败')

    return jsonify(errno=RET.OK, errmsg='OK', data={'house_id':house.id})
Ejemplo n.º 21
0
def save_house_info():
    """
    发布新房源
    1/确认用户身份id
    2/获取参数,get_json()
    3/判断数据的存在
    4/获取详细的参数信息,指房屋的基本信息,不含配套设施title,price/area_id/address/unit/acreage/cacacity/beds/deposit/min_days/max_days/
    5/检查参数的完整性
    6/对价格参数进行转换,由元转成分
    7/构造模型类对象,准备存储数据
    8/判断配套设施的存在
    9/需要对配套设施进行过滤查询,后端只会保存数据库中已经定义的配套设施信息
    facilites = Facility.query.filter(Facility.id.in_(facility)).all()
    house.facilities = facilities
    10/保存数据到数据库中
    11/返回结果,house.id,让后面上传房屋图片和房屋进行关联
    :return:
    """
    # 确认用户身份
    user_id = g.user_id
    # 获取参数post
    house_data = request.get_json()
    # 检查参数的存在
    if not house_data:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    # 获取详细的房屋参数信息(基本信息,除配套设施外)
    title = house_data.get('title')  # 房屋标题
    area_id = house_data.get('area_id')  # 房屋城区
    address = house_data.get('address')  # 详细地址
    price = house_data.get('price')  # 房屋价格
    room_count = house_data.get('room_count')  # 房屋数目
    acreage = house_data.get('acreage')  # 房屋面积
    unit = house_data.get('unit')  # 房屋户型
    capacity = house_data.get('capacity')  # 人数上限
    beds = house_data.get('beds')  # 卧床配置
    deposit = house_data.get('deposit')  # 押金
    min_days = house_data.get('min_days')  # 最小入住天数
    max_days = house_data.get('max_days')  # 最大入住天数
    # 检查参数的完整性
    if not all([
            title, area_id, address, price, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数缺失')
    # 对价格参数进行转换,由元转成分
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg='价格数据错误')
    # 构造模型类对象,准备存储数据
    house = House()
    house.user_id = user_id
    house.area_id = area_id
    house.title = title
    house.address = address
    house.price = price
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days
    # 尝试获取房屋配套设施参数
    facility = house_data.get('facility')
    # 判断配套设施存在
    if facility:
        # 查询数据库,对房屋配套设施进行过滤查询,确保配套设施的编号在数据库中存在
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility)).all()
            # 保存房屋配套设施信息,配套设施的数据存在第三张表,关系引用在数据库中没有具体的字段
            house.facilities = facilities
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='查询配套设施异常')
    # 保存房屋数据到mysql数据库中
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存房屋数据失败')
    # 返回结果,house.id是用来后面实现上传房屋图片做准备
    return jsonify(errno=RET.OK, errmsg='OK', data={'house_id': house.id})
Ejemplo n.º 22
0
def save_house_info():
    """
    发布新房源
    1. 获取参数, g.user_id, 房屋的基本信息, 配套设施
    2. 判断json数据包是否存在
    3. 获取详细参数信息
    4. 判断房屋基本信息的完整性
    5. 价格参数: 前端价格以元为单位, 后端数据以分为单位保存
    6. 构造模型类对象, 保存房屋数据
    7. 判断配套设施参数, 如有保存, 否则不存
    8. 提交数据, 返回结果{房屋id}

    :return:
    """
    # 获取json数据包
    json_data = request.get_json()
    if not json_data:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    # 提取房屋参数信息
    title = json_data.get('title')
    area_id = json_data.get('area_id')
    price = json_data.get('price')
    address = json_data.get('address')
    room_count = json_data.get('room_count')
    acreage = json_data.get('acreage')
    unit = json_data.get('unit')
    capacity = json_data.get('capacity')
    beds = json_data.get('beds')
    deposit = json_data.get('deposit')
    min_days = json_data.get('min_days')
    max_days = json_data.get('max_days')
    if not all([title, price, address, area_id, room_count, acreage, unit, capacity, beds, deposit, min_days, max_days]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数缺失')
    # 对价格参数单位进行转换
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg='金额格式错误')
    # 保存房屋信息
    house = House()
    house.user_id = g.user_id
    house.area_id = area_id
    house.title = title
    house.price = price
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days
    # 尝试获取房屋配套设施参数
    facility = json_data.get('facility')
    if facility:
        # 对胚胎设施进行校验, 该设施在数据库有存储
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility)).all()
            house.facilities = facilities
        except Exception as e:
            current_app.logger.error(e)

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='数据保存异常')
    else:
        return jsonify(errno=RET.OK, errmsg='OK', data={'house_id': house.id})
Ejemplo n.º 23
0
def save_house_info():
    #发布新房源
    #获取user_id
    user_id = g.user_id
    #获取post请求的json数据
    house_data = request.get_json()
    #判断获取结果
    if not house_data:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    #获取详细参数 -- 房屋基本信息
    title = house_data.get('title')  # 房屋标题
    area_id = house_data.get('area_id')  # 房屋城区
    address = house_data.get('address')  # 详细地址
    price = house_data.get('price')  # 房屋价格
    room_count = house_data.get('room_count')  # 房屋数目
    acreage = house_data.get('acreage')  # 房屋面积
    unit = house_data.get('unit')  # 房屋户型
    capacity = house_data.get('capacity')  # 人数上限
    beds = house_data.get('beds')  # 卧床配置
    deposit = house_data.get('deposit')  # 押金
    min_days = house_data.get('min_days')  # 最小入住天数
    max_days = house_data.get('max_days')  # 最大入住天数
    #检验详细参数
    if not all([
            title, area_id, address, price, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数缺失')
    #把价格和押金的单位由元转成分
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg='价格数据错误')
    #构建模型类,准备存储房屋信息
    house = House()
    house.user_id = user_id
    house.area_id = area_id
    house.title = title
    house.address = address
    house.price = price
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days
    #尝试获取配套设施参数
    facility = house_data.get('facility')
    #判断配套设施存在
    if facility:
        #查询数据库,过滤出数据库设置的配套设施并且添加到模型类
        try:
            facilities = Facility.query.filter(Facility.id.in_(facility)).all()
            house.facilities = facilities
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='查询配套设施异常')
    #保存数据到数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, ermsg='保存房屋信息失败')
    #返回结果
    return jsonify(errno=RET.OK, errmsg='OK', data={'house_id': house.id})
Ejemplo n.º 24
0
def pub_house():
    """发布房源:
    0.登录校验  @login_required
    1.g中获取user_id,前端获取房屋信息并校验数据
    2.保存数据到数据库
    3.返回响应
    """
    # 1.前端获取房屋信息并校验数据
    json_dict = request.json

    area_id = json_dict.get('area_id')
    capacity = json_dict.get('capacity')
    title = json_dict.get('title')
    price = json_dict.get('price')
    facilities = json_dict.get('facility')
    acreage = json_dict.get('acreage')
    beds = json_dict.get('beds')
    room_count = json_dict.get('room_count')
    max_days = json_dict.get('max_days')
    deposit = json_dict.get('deposit')
    address = json_dict.get('address')
    min_days = json_dict.get('min_days')
    unit = json_dict.get('unit')
    if not all(
            [unit, min_days, max_days, address, deposit, room_count, beds, acreage, facilities, price, title, capacity,
             area_id]):
        return jsonify(re_code=RET.PARAMERR, msg='参数不完整')

    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.debug(e)
        return jsonify(re_code=RET.PARAMERR, msg='数据格式错误')

    # 2.保存数据到数据库
    house = House()
    house.area_id = area_id
    house.user_id = g.user_id
    house.title = title
    house.price = price
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days
    house.facilities = Facility.query.filter(Facility.id.in_(facilities)).all()

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.debug(e)
        db.session.rollback()
        return jsonify(re_code=RET.DBERR, msg='新增房屋失败')
    # 3.返回响应house_id
    return jsonify(re_code=RET.OK, msg='发布房源成功', data={'house_id': house.id})
Ejemplo n.º 25
0
def send_house_basic_info():
    title = request.json.get("title")
    price = request.json.get("price")
    area_id = request.json.get("area_id")
    address = request.json.get("address")
    room_count = request.json.get("room_count")
    acreage = request.json.get("acreage")
    unit = request.json.get("unit")
    capacity = request.json.get("capacity")
    beds = request.json.get("beds")
    deposit = request.json.get("deposit")
    min_days = request.json.get("min_days")
    max_days = request.json.get("max_days")
    facilities = request.json.get("facility")  # 格式:[1,

    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")

    house = House()
    house.title = title
    price = request.json.get("price")
    area_id = request.json.get("area_id")
    address = request.json.get("address")
    room_count = request.json.get("room_count")
    acreage = request.json.get("acreage")
    unit = request.json.get("unit")
    capacity = request.json.get("capacity")
    beds = request.json.get("beds")
    deposit = request.json.get("deposit")
    min_days = request.json.get("min_days")
    max_days = request.json.get("max_days")
    facilities = request.json.get("facility")  # 格式:[1,2,3,4]

    # 2.校验参数,基本信息校验
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")

    # 3.创建房屋对象
    house = House()

    # 4.设置房屋对象的数据
    house.title = title
    house.price = price
    house.area_id = area_id
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days
    facility_list = Facility.query.filter(Facility.id in (facilities)).all()
    house.facilities = facility_list
    house.user_id = g.user_id
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="保存异常")

        # 7.返回
    return jsonify(errno=RET.OK, errmsg="发布成功", data={"house_id": house.id})
Ejemplo n.º 26
0
def save_house_info():
    '''保存房屋的基本信息
    前端发送过来的json数据
    {
        "title": "",
        "price": "",
        "area_id": "1",
        "address": "",
        "room_count": "",
        "acreage": "",
        "unit": "",
        "capacity": "",
        "beds": "",
        "deposit": "",
        "min_days": "",
        "max_days": "",
        "facility": ["7", "8"]
    }
    '''
    # 获取参数
    house_data = request.get_json()
    if house_data is None:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')

    title = house_data.get('title')  # 房屋名称标题
    price = house_data.get('price')  # 房屋价格
    area_id = house_data.get('area_id')  # 房屋所在区域的编号
    address = house_data.get('address')  # 房屋地址
    room_count = house_data.get('room_count')  # 房屋包含房间数目
    acreage = house_data.get('acreage')  # 房屋面积
    unit = house_data.get('unit')  # 房屋布局(几室几厅)
    capacity = house_data.get('capacity')  # 房屋容纳人数
    beds = house_data.get('beds')  # 房屋卧床数目
    deposit = house_data.get('deposit')  # 押金
    min_days = house_data.get('min_days')  # 最小入住天数
    max_days = house_data.get('max_days')  # 最大入住天数

    # 校验参数
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数不完整')

    # 判断单价和押金格式是否正确
    # 前端传送过来的金额参数是以元为单位的,浮点数,数据库中保存是以分为单位,整数
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        return jsonify(errno=RET.DATAERR, errmsg='参数有误')

    # 保存用户信息
    user_id = g.user_id
    house = House(
        user_id=user_id,
        area_id=area_id,
        title=title,
        price=price,
        address=address,
        room_count=room_count,
        acreage=acreage,
        unit=unit,
        capacity=capacity,
        beds=beds,
        deposit=deposit,
        min_days=min_days,
        max_days=max_days,
    )
    # 处理房屋的设施信息
    facility_id_list = house_data.get('facility')
    if facility_id_list:
        # 表示用户勾选的房屋设施,过滤用户传送的不合理的设施id
        # select * from facility where id in (facility_id_list)
        try:
            facility_list = Facility.query.filter(
                Facility.id.in_(facility_id_list)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg='数据库异常')

        # 为房屋添加设施信息
        if facility_list:
            house.facilities = facility_list

        try:
            db.session.add(house)
            db.session.commit()

            print('step1')
        except Exception as e:
            current_app.logger.error(e)
            db.session.rollback()
            return jsonify(errno=RET.DBERR, errmsg='保存数据失败')

        # 返回
        return jsonify(errno=RET.OK,
                       errmsg='保存成功',
                       data={'house_id': house.id})
Ejemplo n.º 27
0
def pub_house():
    """发布新房源
    0.判断用户是否登录 @login_required
    1.接受所有参数,并判断是否缺少
    2.校验参数:price / deposit, 需要用户传入数字
    3.实例化房屋模型对象,并给属性赋值
    4.保存到数据库
    5.响应结果
    """

    # 1.接受所有参数,并判断是否缺少
    json_dict = request.json

    title = json_dict.get('title')
    price = json_dict.get('price')
    address = json_dict.get('address')
    area_id = json_dict.get('area_id')
    room_count = json_dict.get('room_count')
    acreage = json_dict.get('acreage')
    unit = json_dict.get('unit')
    capacity = json_dict.get('capacity')
    beds = json_dict.get('beds')
    deposit = json_dict.get('deposit')
    min_days = json_dict.get('min_days')
    max_days = json_dict.get('max_days')

    if not all([
            title, price, address, area_id, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数缺失')

    # 2.校验参数:price / deposit, 需要用户传入数字
    # 提示:在开发中,对于像价格这样的浮点数,不要直接保存浮点数,因为有精度的问题,一般以分为单位
    try:
        price = int(float(price) * 100)  # 0.1元 ==> 10分
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg='参数格式错误')

    # 3.实例化房屋模型对象,并给属性赋值
    house = House()
    house.user_id = g.user_id
    house.area_id = area_id
    house.title = title
    house.price = price
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.beds = beds
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days

    # 处理房屋的设施 facilities = [2,4,6]
    facilities = json_dict.get('facility')
    # 查询出被选中的设施模型对象
    house.facilities = Facility.query.filter(Facility.id.in_(facilities)).all()

    # 4.保存到数据库
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='发布新房源失败')

    # 5.响应结果
    return jsonify(errno=RET.OK, errmsg='发布新房源成功', data={'house_id': house.id})
Ejemplo n.º 28
0
def save_house_info():
    """保存房屋的基本信息
    前端发送过来的json数据
    {
        "title":"",
        "price":"",
        "area_id":"1",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    """
    # 获取参数
    house_data = request.get_json()
    if house_data is None:
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    # 校验参数
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")

    # 判断单价和押金格式是否正确
    # 前端传送过来的金额参数是以元为单位,浮点数,数据库中保存的是以分为单位,整数
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        return jsonify(errno=RET.DATAERR, errmsg="参数有误")

    # 保存信息
    user_id = g.user_id
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)
    # 处理房屋的设施信息
    facility_id_list = house_data.get("facility")
    if facility_id_list:
        # 表示用户勾选了房屋设施
        # 过滤用户传送的不合理的设施id
        # select * from facility where id in (facility_id_list)
        try:
            facility_list = Facility.query.filter(
                Facility.id.in_(facility_id_list)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="数据库异常")

        # 为房屋添加设施信息
        if facility_list:
            house.facilities = facility_list

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据失败")

    # 返回
    return jsonify(errno=RET.OK, errmsg="保存成功", data={"house_id": house.id})
Ejemplo n.º 29
0
def save_house_info():
    '''
    保存房屋信息
    1 获取参数 user_id = g.user_id 房屋所属用户
    2 获取参数 post请求的房屋信息 get_json()
    3 校验参数存在
    4 获取详细的参数信息
    5 校验参数完整性
    6 对价格信息进行处理
    7 保存房屋基本信息 house = House() house,title = title
    8 尝试获取配套设施信息,如果存在 判断设施编号和数据源中存储的一致
    9 保存房屋设施数据
    10 提交数据到数据库
    11 返回结果 data:{'house_id':house.id}
    '''
    # 获取用户id
    user_id = g.user_id
    # 获取post请求的房屋基本信息
    house_data = request.get_json()
    # 校验参数
    if not house_data:
        return jsonify(errno=RET.PARAMERR, errmsg='参数错误')
    # 获取纤细参数
    title = house_data.get('title')  # 房屋标题
    price = house_data.get('price')  # 房屋价格
    area_id = house_data.get('area_id')  # 房屋区域
    address = house_data.get('address')  # 房屋地址
    room_count = house_data.get('room_count')  # 房屋数目
    acreage = house_data.get('acreage')  # 房屋面积
    unit = house_data.get('unit')  # 房屋户型
    capacity = house_data.get('capacity')  # 适住人数
    beds = house_data.get('beds')  # 床位设施
    deposit = house_data.get('deposit')  # 房屋押金
    min_days = house_data.get('min_days')  # 最少入住天数
    max_days = house_data.get('max_days')  # 最多入住天数
    # 校验参数完整性
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg='参数缺失')
    # 对价格信息进行转换
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg="房屋价格信息异常")
    # 构造模型对象 存储数据
    house = House()
    house.user_id = user_id
    house.area_id = area_id
    house.title = title
    house.price = price
    house.address = address
    house.room_count = room_count
    house.acreage = acreage
    house.unit = unit
    house.capacity = capacity
    house.deposit = deposit
    house.min_days = min_days
    house.max_days = max_days
    # 尝试获取房屋配套设施信息
    facility = house_data.get('facility')
    # 配套设施如果存在 需要过滤配套设施对应到数据库中真实存在
    if facility:
        try:
            # 过滤房屋设施编号 如果该房屋设施编号不存在 需要过滤操作
            facilities = Facility.query.filter(Facility.id.in_(facility).all())
            # 保存查询结果
            house.facilities = facilities
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="查询房屋配套设施异常")
    # 保存房屋数据,提交数据到数据库中
    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        # 存储房屋数据发生异常,需要进行回滚操作
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存房屋信息失败")
    # 返回结果
    return jsonify(errno=RET.OK, errmsg="OK", data={"house_id": house.id})
Ejemplo n.º 30
0
def save_house_info():
    """保存房屋的基本信息
    前端发送过来的json数据
    {
        "title":"",
        "price":"",
        "area_id":"1",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    """
    # 获取数据
    user_id = g.user_id
    house_data = request.get_json()

    title = house_data.get("title")  # 房屋名称标题
    price = house_data.get("price")  # 房屋单价
    area_id = house_data.get("area_id")  # 房屋所属城区的编号
    address = house_data.get("address")  # 房屋地址
    room_count = house_data.get("room_count")  # 房屋包含的房间数目
    acreage = house_data.get("acreage")  # 房屋面积
    unit = house_data.get("unit")  # 房屋布局(几室几厅)
    capacity = house_data.get("capacity")  # 房屋容纳人数
    beds = house_data.get("beds")  # 房屋卧床数目
    deposit = house_data.get("deposit")  # 押金
    min_days = house_data.get("min_days")  # 最小入住天数
    max_days = house_data.get("max_days")  # 最大入住天数

    # 校验参数
    if not all([
            title, price, area_id, address, room_count, acreage, unit,
            capacity, beds, deposit, min_days, max_days
    ]):
        return jsonify(errno=RET.PARAMERR, errmsg="参数不完整")

    # 判断金额是否正确
    try:
        price = int(float(price) * 100)
        deposit = int(float(deposit) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.PARAMERR, errmsg="参数错误")

    # 判断城区id是否存在
    try:
        area = Area.query.get(area_id)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR, errmsg="数据库异常")

    if area is None:
        return jsonify(errno=RET.NODATA, errmsg="城区信息有误")

    # 保存房屋信息
    house = House(user_id=user_id,
                  area_id=area_id,
                  title=title,
                  price=price,
                  address=address,
                  room_count=room_count,
                  acreage=acreage,
                  unit=unit,
                  capacity=capacity,
                  beds=beds,
                  deposit=deposit,
                  min_days=min_days,
                  max_days=max_days)

    # 处理房屋的设施信息
    facility_ids = house_data.get("facility")

    # 如果用户勾选了设施信息,再保存数据库
    if facility_ids:
        # ["7","8"]
        try:
            # select  * from ih_facility_info where id in []
            facilities = Facility.query.filter(
                Facility.id.in_(facility_ids)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DBERR, errmsg="数据库异常")

        if facilities:
            # 表示有合法的设施数据
            # 保存设施数据
            house.facilities = facilities

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg="保存数据失败")

    # 保存数据成功
    return jsonify(errno=RET.OK, errmsg="OK", data={"house_id": house.id})
Ejemplo n.º 31
0
def set_house_info():
    """设置房屋信息
    前端发送来的json数据
    {
        "title":"",
        "price":"",
        "area_id":"1",
        "address":"",
        "room_count":"",
        "acreage":"",
        "unit":"",
        "capacity":"",
        "beds":"",
        "deposit":"",
        "min_days":"",
        "max_days":"",
        "facility":["7","8"]
    }
    """
    # 获取参数
    house_data = request.get_json()
    if not house_data:
        return jsonify(error_code=RET.PARAMERR, errmsg="参数不完整")

    title = house_data.get("title")
    price = house_data.get("price")
    area_id = house_data.get("area_id")
    address = house_data.get("address")
    room_count = house_data.get("room_count")
    acreage = house_data.get("acreage")
    unit = house_data.get("unit")
    capacity = house_data.get("capacity")
    beds = house_data.get("beds")
    deposit = house_data.get("deposit")
    min_days = house_data.get("min_days")
    max_days = house_data.get("max_days")

    # 参数校验
    if not all([title, price, area_id, address, room_count, acreage,
                unit, capacity, beds, deposit, min_days, max_days]):
        return jsonify(error_code=RET.PARAMERR, err_msg="参数不完整")

    # 判断price 和 deposit
    try:
        price = int(float(price) * 100)
        deposit = int(float(price) * 100)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(error_code=RET.PARAMERR, errmsg="参数有误")

    # 业务处理
    # 保存房屋信息
    user_id = g.user_id

    house = House(
        user_id=user_id,
        area_id=area_id,
        title=title,
        price=price,
        address=address,
        room_count=room_count,
        acreage=acreage,
        unit=unit,
        capacity=capacity,
        beds=beds,
        deposit=deposit,
        min_days=min_days,
        max_days=max_days
    )

    # 获取房屋的设施信息
    facility_id_list = house_data.get("facility")
    if facility_id_list:
        # 用户勾选了设施
        # 筛选掉不合理的设施
        try:
            facility_list = Facility.query.filter(Facility.id.in_(facility_id_list)).all()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(error_code=RET.DBERR, errmsg="数据库异常")

        if facility_list:
            house.facilities = facility_list

    try:
        db.session.add(house)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return jsonify(error_code=RET.DBERR, errmsg="保存房屋信息失败")

    # 返回值
    return jsonify(error_code=RET.OK, errmsg="保存成功", data={"house_id": house.id})