Example #1
0
def set_avatar_url():
    """
    设置用户头像信息
    1. 获取参数,avatar, user_id,request.filter.get('avatar')
    2. 检验参数存在
    3. 读取图片数据,data= avatar.read()
    4. 调用七牛云接口,上传用户头像
    5. 保存用户头像信息到数据库
    6. 拼接用户头像图片的完整路径,七牛云外链域名+图片文件名
    7. 返回结果
    :return: 
    """
    # 获取参数
    user_id = g.user_id
    avatar = request.files.get('avatar')
    # 校验参数不存在
    if not avatar:
        return jsonify(errno=RET.PARAMERR, errmsg='图片未上传')
    # 读取图片数据
    avatar_data = avatar.read()
    # 调用七牛云接口,上传用户头像
    try:
        image_name = storage(avatar_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg='上传头像失败')
    # 保存用户头像数据
    try:
        # 使用update更新用户信息
        User.query.filter_by(id=user_id).update({'avatar_url': image_name})
        # 提交数据
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        # 提交数据异常,需要进行回滚
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='保存用户头像数据异常')

    # 拼接头像的完整路径
    image_url = constants.QINIU_DOMIN_PREFIX + image_name
    # 返回数据
    return jsonify(errno=RET.OK, errmsg='OK', data={'avatar_url': image_url})
Example #2
0
def save_house_image(house_id):
    """
    保存房屋图片
    1. 获取参数,获取用户上传的房屋图片request.files.get('house_image')
    2. 通过house_id,保存房屋图片,查询数据库确定房屋存在
    3. 校验查询结果
    4. 读取图片数据
    5. 调用七牛云接口,上传房屋图片
    6. 保存房屋图片,house_image = HouseImage()
    7. 保存房屋图片到房屋表,主图片设置判断
    8. 提交数据到数据库,如果发生异常需要进行回滚
    9. 拼接路径,返回前端图片url

    :param house_id:
    :return:
    """
    # 获取参数图片文件
    image = request.files.get('house_image')
    # 校验参数
    if not image:
        return jsonify(errno=RET.PARAMERR,errmsg='图片未上传')
    # 检验房屋存在
    try:
        house = House.query.filter_by(id=house_id).first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DBERR,errmsg='查询房屋数据异常')
    # 校验查询结果
    if not house:
        return jsonify(errno=RET.NODATA,errmsg='房屋不存在')

    # 读取图片数据
    image_data = image.read()
    # 调用七牛云接口
    try:
        image_name = storage(image_data)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.THIRDERR, errmsg='七牛上传图片失败')
    # 存储图片数据到mysql数据库中
    house_image = HouseImage()
    house_image.house_id =house_id
    house_image.url = image_name
    # 把图片数据加入到数据库会话对象中,HouseImage()模型类
    db.session.add(house_image)
    # 判断房屋主图片是否设置,因为首页需要展示房屋幻灯片信息,添加主图片设置
    if not house.index_image_url:
        house.index_image_url = image_name
        # 把图片数据加入到数据库会话对象中,House()模型类
        db.session.add(house)
    # 提交数据到数据库中
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        # 存储数据发生异常,需要进行回滚
        db.session.rollback()
        return jsonify(errno=RET.DBERR, errmsg='存储房屋图片异常')
    # 拼接图片的绝对路径,返回前端
    image_url = constants.QINIU_DOMIN_PREFIX + image_name
    return jsonify(errno=RET.OK, errmsg='OK', data={'url':image_url})