def getFriends(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params mo = TyContext.Cls_MsgPack() mo.setCmd('getFriends') Friend.getMyFriends(params['appId'], params['userId'], mo) return mo
def getRankList(cls, rpath): isReturn, params = cls.checkAccount(rpath) if isReturn: return params userId = str(params['userId']) mo = TyContext.Cls_MsgPack() mo.setCmd('getRank') rank_type = TyContext.RunHttp.getRequestParam('rank_type') if rank_type is None: mo.setResult('code', 1) mo.setResult('info', 'require rank_type') return mo else: rank_type = rank_type.lower() friends = [] rank_name = TyContext.RunHttp.getRequestParam('rank_name', 'week_score') top_count = TyContext.RunHttp.getRequestParamInt('top_count', 0) if top_count == 0: if rank_type != 'friend': top_count = 50 data = {} self_user = {} rank_users = [] rank_title = u'排行榜' rank_item_prefix = '' rank_item_suffix = '' if rank_type == 'friend': appId = str(params['appId']) rank_titles = TyContext.Configure.get_global_item_json( 'friend.rank.title') rank_item_prefix = '' rank_item_suffix = '' rank_title = u'好友排行榜' try: rank_title_json = rank_titles[appId][rank_name] rank_item_prefix = rank_title_json['item_prefix'] rank_item_suffix = rank_title_json['item_suffix'] rank_title = rank_title_json['title'] except Exception, e: pass # if rank_titles and rank_titles.has_key(appId): # rank_title_list = rank_titles[appId] friends = Friend.getMyFriends(appId, params['userId'], None, True) # TyContext.ftlog.debug('users:', friends) if friends and len(friends) > 0: for user in friends: fuid = str(user['uid']) key = 'rank_scores:' + str( appId) + ":" + rank_name + ':' + str(fuid) score = TyContext.RedisUser.execute( fuid, 'hmget', key, 'score', 'infos') TyContext.ftlog.debug('score', score) if fuid != userId and (score is None or score[0] is None): # 必须玩过游戏 continue if not score or not score[0]: score = [0, ''] user['score'] = int(score[0]) if not score[1]: score[1] = '' user['infos'] = score[1] rank_users.append(user) if fuid == userId: self_user = user # TyContext.ftlog.debug('rank_users:', rank_users) rank_users.sort(key=lambda obj: obj.get('score'), reverse=True) for i in xrange(len(rank_users)): user = rank_users[i] user['rank'] = i + 1 if top_count != 0 and len(rank_users) > top_count: rank_users = rank_users[:top_count] data['all'] = rank_users data['self'] = self_user data['title'] = rank_title data['item_prefix'] = rank_item_prefix data['item_suffix'] = rank_item_suffix