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}
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}