From bb284affe6541fa85c492ce9af26b4ee35805aab Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 12 三月 2019 14:25:07 +0800 Subject: [PATCH] 6328 【后端】优化代码eval -- 玩家缓存数据提取常用字段 等级和最后一次发送时间 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py | 39 ++++++++++++++++++++++++++------------- 1 files changed, 26 insertions(+), 13 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py index 8f3468d..be9c0d5 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerGeTui.py @@ -86,14 +86,6 @@ # 检查是否可以个推,geTuiType小于0的代表默认可推,无VIP限制 def CheckCanGeTui(playerCache, geTuiType=-1): - if not playerCache.get("GeTuiClientID", ""): - return False - - # 离线超过24小时不再推送,目前极光推送的特点是推送ID同机器不同包都是同一个ID - if not playerCache.get("Time", 0): - return False - if time.time() - playerCache.get("Time", 0) > 24*60*60: - return False if not playerCache.get("VIPLV", 0): if geTuiType < 0: @@ -263,6 +255,16 @@ return True return True +# 个推基础判定 +def CanGeTuiByCache(curCache): + if not curCache.GetGeTuiID(): + return False + + # 离线超过24小时不再推送,目前极光推送的特点是推送ID同机器不同包都是同一个ID + if time.time() - curCache.GetOffTime() > 24*60*60: + return False + return True + def BossAttentionGeTui(bossData, bossID): if bossData.GetMapID() == ChConfig.Def_FBMapID_SealDemon: # 非VIP玩家 封魔坛个推 @@ -281,17 +283,24 @@ curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) if curPlayer and not PlayerControl.GetIsTJG(curPlayer): continue - + + # 离线玩家 + curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID) + if not curCache: + continue + + if not CanGeTuiByCache(curCache): + #无推送资格,减少检索和eval + continue + recordDict = eval(bossAttentionData.RecordData) if recordDict.get(bossID, 0) in [0, 9]: #0-默认未关注, 1-主动关注, 2-自动关注, 9-主动取消关注 continue - curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID) - if not curCache: - continue + cacheDict = eval(curCache.GetPropData()) if not CheckCanGeTui(cacheDict, geTuiType): - # 过滤个推 + # 个推逻辑检查 continue if not CheckBossGeTuiCnt(playerID, bossID, geTuiType, cacheDict): @@ -327,6 +336,10 @@ if not curCache: return + if not CanGeTuiByCache(curCache): + #无推送资格,基础判定 + return + cacheDict = eval(curCache.GetPropData()) if not CheckCanGeTui(cacheDict, Def_Onoff_Chat): # 过滤个推 -- Gitblit v1.8.0