Пример #1
0
def addUserScore(userId, rankId, issueNum, score=0):

    issueNum = str(issueNum)

    userData = dizhu_score_ranking.loadUserData(userId, rankId, issueNum)
    if userData:
        ftlog.info('hotfix.addUserScore', 'userId=', userId, 'rankId=', rankId,
                   'issueNum=', issueNum, 'score=', score, 'userData=',
                   userData.toDict())

        try:
            score = int(score)
        except ValueError, e:
            ftlog.warn('hotfix.addUserScore.valueError', 'userId=', userId,
                       'rankId=', rankId, 'issueNum=', issueNum, 'err=', e)
            return

        userData.score += score
        userData.score = max(0, userData.score)

        ret = dizhu_score_ranking.saveUserData(userData)
        rankingDefine = dizhu_score_ranking.getConf().findRankingDefine(rankId)
        rankLimit = rankingDefine.rankLimit if rankingDefine else 3000
        dizhu_score_ranking.insertRanklist(rankId, issueNum, userData.userId,
                                           userData.score, rankLimit)

        ftlog.info('hotfix.addUserScore.over', 'userId=', userId, 'rankId=',
                   rankId, 'issueNum=', issueNum, 'score=', score, 'userData=',
                   userData.toDict())
Пример #2
0
    def buildNotReceived(cls, rankId, hisotryItems, userId, clientId):
        ret = []
        for item in hisotryItems:
            userData = dizhu_score_ranking.loadUserData(
                userId, rankId, item.issueNum)
            if not userData:
                if ftlog.is_debug():
                    ftlog.debug('buildNotReceived userData is None. userId=',
                                userId, 'rankId=', rankId, 'issueNum=',
                                item.issueNum, 'hisotryItems=', hisotryItems)
                continue

            if userData.rewardState == RewardState.ST_HAS_REWARD:
                rankRewards = dizhu_score_ranking.findRankRewardsByRank(
                    rankId, item.issueNum, clientId, userData.rank)
                if rankRewards:
                    ret.append({
                        'issn': item.issueNum,
                        'rank': userData.rank,
                        'img': rankRewards.get('img', ''),
                        'desc': rankRewards.get('desc', ''),
                        'cash': rankRewards.get('cash', 0)
                    })
            if ftlog.is_debug():
                ftlog.debug('buildNotReceived userId=', userId, 'rankId=',
                            rankId, 'hisotryItems=', hisotryItems, 'clientId=',
                            clientId, 'userData=',
                            userData.toDict() if userData else '')
        return ret
Пример #3
0
def doDelUserScore(self, userId, rankId, issueNum, score):
    """
    :param userId: 玩家userId
    :param rankId: 排行榜类型 '0' 万元争霸赛 '1' 千元擂台赛
    :param issueNum: 排行榜期号 格式:20170807
    :param score: 扣除的积分数量
    :return: 返回处理结果信息 
    """
    ret = 0
    if len(issueNum) != 8:
        return self.makeResponse({
            'del_user_score_gdss issueNum Error. rankId': rankId,
            'issueNum=': issueNum
        })

    issueNum = str(issueNum)

    userData = dizhu_score_ranking.loadUserData(userId, rankId, issueNum)
    if userData:
        ftlog.info('del_user_score_gdss del scoreRanking userData=',
                   userData.toDict())

        score = max(0, score)
        userData.score -= score
        userData.score = max(0, userData.score)

        ret = dizhu_score_ranking.saveUserData(userData)
        rankingDefine = dizhu_score_ranking.getConf().findRankingDefine(rankId)
        rankLimit = rankingDefine.rankLimit if rankingDefine else 3000
        dizhu_score_ranking.insertRanklist(rankId, issueNum, userData.userId,
                                           userData.score, rankLimit)

        ftlog.info(
            'del_user_score_gdss del scoreRanking userData success. userData=',
            userData.toDict())
    else:
        ftlog.info('del_user_score_gdss no userData in rankingList userId=',
                   userId, 'rankId=', rankId, 'issueNum=', issueNum)
        return self.makeResponse({
            'init_user_data_gdss no userData in rankingList userId=':
            userId,
            'rankId':
            rankId,
            'issueNum=':
            issueNum
        })

    return self.makeResponse({
        'del_user_score_gdss del scoreRanking userData success. userData=':
        userData.toDict(),
        'execute over ret=':
        ret
    })
Пример #4
0
 def _loadRankList(self):
     ret = []
     try:
         userScoreList = dizhu_score_ranking.getRanklistWithScore(
             self._rankId, self._issueNum, 0, self._rankLimit - 1)
         for i, (userId, score) in enumerate(userScoreList):
             userData = dizhu_score_ranking.loadUserData(
                 userId, self._rankId, self._issueNum)
             userName = purl = ''
             if userData:
                 userName = userData.name
                 purl = userData.purl
             ret.append((userId, score, i + 1, userName, purl))
     except:
         ftlog.error('_loadRankList', 'rankId=', self._rankId, 'issueNum=',
                     self._issueNum)
     return ret
def fixScoreRankingRank():
    issueNum = '20170717'
    for rankId in ['0', '1']:
        rank = 0
        userInfos = dizhu_score_ranking.getRanklist(rankId, issueNum, 0, -1)
        for userId in userInfos:
            rank += 1
            userData = dizhu_score_ranking.loadUserData(
                userId, rankId, issueNum)
            if userData.rank != rank:
                ftlog.info('hotfxi_score_ranking userId=', userId, 'rankId=',
                           rankId, 'issueNum=', issueNum, 'oldRank=',
                           userData.rank, 'rank=', rank, 'state=',
                           userData.rewardState)
                userData.rank = rank
                dizhu_score_ranking.saveUserData(userData)
            ftlog.info('hotfxi_score_ranking userId=', userId, 'rankId=',
                       rankId, 'issueNum=', issueNum, 'rank=', userData.rank,
                       'state=', userData.rewardState)

    ftlog.info('hotfxi_score_ranking_rank over issueNum=', issueNum)
def punishUser(userIdList, rankId, issueNum):
    for userId in userIdList:
        oldUserData = dizhu_score_ranking.loadUserData(userId, rankId,
                                                       issueNum)
        if oldUserData:
            ftlog.info('punish cheat user in scoreRanking old_user_info=',
                       oldUserData.toDict())

            userData = dizhu_score_ranking.UserData(userId, rankId, issueNum)
            dizhu_score_ranking.saveUserData(userData)
            rankingDefine = dizhu_score_ranking.getConf().findRankingDefine(
                rankId)
            dizhu_score_ranking.insertRanklist(
                rankId, issueNum, userId, userData.score,
                max(rankingDefine.rankLimit, 500))

            ftlog.info('punish cheat user in scoreRanking userId=', userId,
                       'rankId=', rankId, 'issueNum=', issueNum)
        else:
            ftlog.info('punish cheat user in scoreRanking userId=', userId,
                       'rankId=', rankId, 'issueNum=', issueNum,
                       'no ScoreRanking Data')
    ftlog.info('punish cheat user in scoreRanking. over')