예제 #1
0
def getallreminding():
    """
    获取该用户所有关注的主播手机号list,用来给客户端设置jpush的标签
    :uri: /user/remindnums
    :returns: {'list': list}
    """
    user = request.authed_user
    uids = FriendShip.following_ids(user._id)
    user_followings = [{
        "phone": u.phone,
        "user_id": str(u._id)
    } for u in User.get_list(uids)]
    reminding_ids = FriendShip.reminding_ids(user._id)
    map(
        lambda u: u.update({'isreminded': True})
        if u['user_id'] in reminding_ids else u.update({'isreminded': False}),
        user_followings)
    # 前台不需要用户id,所以为了减少数据量,将id删了
    map(lambda u: u.pop('user_id'), user_followings)
    return {'users': user_followings}
예제 #2
0
def reminding():
    """获取用户的提醒 (GET)

    :uri: /users/followings
    :param maxs: 最后时间, 0代表当前时间, 无此参数按page来分页
    :param page: 页码(数据可能有重复, 建议按照maxs分页)
    :param nbr: 每页数量
    :returns: {'users': list}
    """
    user = request.authed_user
    params = request.values
    maxs = params.get('maxs', None)
    maxs = time.time() if maxs is not None and int(
        float(maxs)) == 0 else maxs and float(maxs)
    page = int(params.get('page', 1))
    pagesize = int(params.get('nbr', 10))

    users = list()
    uids = list()
    while len(users) < pagesize:
        uids = FriendShip.following_ids(user._id, page, pagesize, maxs)
        user_followings = [u.format() for u in User.get_list(uids)]
        reminding_ids = FriendShip.reminding_ids(user._id)
        map(
            lambda u: u.update({'isreminded': True})
            if u['user_id'] in reminding_ids else u.update(
                {'isreminded': False}), user_followings)
        users.extend(user_followings)

        # 如果按照maxs分页, 不足pagesize个记录则继续查询
        if maxs is not None:
            obj = FriendShip.get_by_ship(user._id, uids[-1]) if uids else None
            maxs = obj.create_at if obj else 1000
            if len(uids) < pagesize:
                break
        else:
            break
    return {'users': users, 'end_page': len(uids) != pagesize, 'maxs': maxs}