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