Ejemplo n.º 1
0
    def onUpdate(cls):
        ftlog.debug(
            "RankingPriorityLedSender.onUpdate", "cls.currentRankingUser="******"cls.rankingRewardList=",
            cls.rankingRewardList, "cls.ledFormatText=", cls.ledFormatText,
            "ifok=",
            not not (not cls.currentRankingUser or not cls.ledFormatText
                     or not cls.rankingRewardList))

        if not cls.currentRankingUser or not cls.ledFormatText or not cls.rankingRewardList:
            cls.currentRankingUser = None
            cls.oldRankingUser = None
            cls.loopTimerCounter = 0
            if cls.loopTimer:
                cls.loopTimer.cancel()
            return
        ftlog.debug("RankingPriorityLedSender.onUpdate", "userId=",
                    cls.currentRankingUser.userId, "cls.loopTimerCounter",
                    cls.loopTimerCounter)

        helper = RankingRewardHelper(cls.currentRankingUser.userId,
                                     cls.rankingRewardList)
        reachedlist = helper.getReachedConfList()
        currentconf = {}
        if reachedlist and len(reachedlist) > 0:
            currentconf = reachedlist[-1]
        dictionary = {}
        dictionary['ranking_current_item'] = Tool.dictGet(
            currentconf, 'rewardContent.desc')
        dictionary['newuser_nickname'] = UserInfo.getNickname(
            cls.currentRankingUser.userId)
        dictionary['newuser_ranknumber'] = str(
            DumplingsUtil.getRankingWithUserId(cls.currentRankingUser.userId))
        dictionary['olduser_nickname'] = UserInfo.getNickname(
            cls.oldRankingUser.userId)
        led = strutil.replaceParams(cls.ledFormatText, dictionary)
        Tool.sendLed(led)

        cls.loopTimerCounter += 1
        if cls.loopTimerCounter >= 5:
            ftlog.debug("RankingPriorityLedSender.onUpdate ",
                        "cls.loopTimerCounter>=5:", "userId=",
                        cls.currentRankingUser.userId)
            cls.currentRankingUser = None
            cls.oldRankingUser = None
            cls.loopTimer.cancel()
            cls.loopTimerCounter = 0
Ejemplo n.º 2
0
    def sendLedIfNeed(self, userId, itemconf, count):
        '''
        如果满足情况则,发送LED
        :param itemconf: 红包奖励配置项{"type":"random.fixed", "itemId": "item:2003", "desc":"记牌器", "num":500, "count":1, "led": "led1"}
        :param count: 拆红包真实领取的物品个数
        :return: Bool, 是否发送
        '''
        settingkey = itemconf.get("led", False)
        if not settingkey:
            return False

        ftlog.debug("TYActivityDdzRedEnvelope.sendLedIfNeed: settingkey=",
                    settingkey)
        clientconf = self._clientConf
        settingmap = Tool.dictGet(clientconf, "config.activate.ledSetting")
        if not settingmap:
            return False
        ftlog.debug("TYActivityDdzRedEnvelope.sendLedIfNeed: settingmap=",
                    settingmap)

        setting = settingmap.get(settingkey)
        if not setting:
            return False
        ftlog.debug("TYActivityDdzRedEnvelope.sendLedIfNeed: setting=",
                    setting)

        text = setting.get("text")
        if (not text) or len(text) <= 0:
            return False

        ftlog.debug("TYActivityDdzRedEnvelope.sendLedIfNeed: text=", text,
                    "mincount", setting.get("min", 0))
        mincount = setting.get("min", 0)
        if count >= mincount:
            leddict = {
                "assets": str(itemconf.get('desc')),
                "count": str(count),
                "userId": str(userId),
                "nickname": str(UserInfo.getNickname(userId))
            }
            text = strutil.replaceParams(text, leddict)
            Tool.sendLed(text)
            return True
        return False
Ejemplo n.º 3
0
    def handleRequestGetting(self, model, userId, poolItem):
        '''
        已经投入资本,领取奖励
        :param userId:
        :return:
        '''
        clientconf = strutil.deepcopy(self._clientConf)
        serverconf = self._serverConf
        uniquekey = Utility.buildUniqueKey(serverconf)
        ftlog.debug('WishingWell.handleRequestGetting:start',
                    'userId=', userId,
                    'model=', model.dict())

        ## 判断计时是否完成
        countingSeconds = model.getCountingSeconds()
        if countingSeconds < poolItem.get('duration', 0):  ## 计时未完成
            return Utility.buildError(Tool.dictGet(clientconf, 'config.countingDownError'))

        ## 发送用户奖励
        led = Tool.dictGet(clientconf, 'config.led')
        mail = Tool.dictGet(clientconf, 'config.mail')
        rewardconf = poolItem.get('reward', {})
        rtype = rewardconf.get('type', 'fixed')
        clz = self.rewardHandlerMap[rtype]
        ftlog.debug('WishingWell.handleRequestGetting:send',
                    'userId=', userId,
                    'rewardconf=', rewardconf,
                    'rtype=', rtype,
                    'clz=', clz)
        if not clz:
            return Utility.buildError(None)
        sendcount = clz(rewardconf, mail).sendToUser(userId)

        ## 是否触发LED
        ledTrigger = poolItem.get('ledTrigger', -1)
        if ledTrigger>=0 and ledTrigger<=sendcount:
            nickname = UserInfo.getNickname(userId)
            Tool.sendLed(strutil.replaceParams(led, {'nickname':nickname}))
        ftlog.debug('WishingWell.handleRequestGetting:led',
                    'userId=', userId,
                    'ledTrigger=', ledTrigger,
                    'sendcount=', sendcount,
                    'led-trigger-ok', (ledTrigger>=0 and ledTrigger<=sendcount))

        ftlog.info('WishingWell.handleRequestGetting, ',
                   'userId', userId,
                   'poolstepindex', model.poolStepIndex,
                   'sendcount', sendcount,
                   'model=', model.dict())

        model.isAlreadyPutted = False
        model.poolStepIndex += 1
        model.dumpsToRedis(userId, uniquekey)
        ftlog.debug('WishingWell.handleRequestGetting:end',
                    'userId=', userId,
                    'model=', model.dict())

        response = self.getActivityUserStatus(userId, model)
        gettingSuccess = Tool.dictGet(clientconf, 'config.gettingSuccess')
        rewardDescription = strutil.replaceParams(Tool.dictGet(poolItem, 'reward.desc'), {'count': sendcount})
        if gettingSuccess and len(gettingSuccess) > 0:
            response['message'] = strutil.replaceParams(gettingSuccess, {'assets_reward_desc':rewardDescription})
        response['operate'] = 'getting'
        return response