示例#1
0
 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
示例#2
0
    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