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.GeTuiID:
        return False
    # 离线超过24小时不再推送,目前极光推送的特点是推送ID同机器不同包都是同一个ID
    if time.time() - curCache.OffTime > 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
        recordDict = json.loads(bossAttentionData.RecordData)
        if recordDict.get(str(bossID), 0) in [0, 9]:
            #0-默认未关注, 1-主动关注, 2-自动关注, 9-主动取消关注
            continue
        curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID)
        # 离线玩家
        curCache = PlayerViewCache.FindViewCache(playerID)
        if not curCache:
            continue
        cacheDict = json.loads(curCache.GetPropData())
        if not CanGeTuiByCache(curCache):
            #无推送资格,减少检索和eval
            continue
        recordDict = eval(bossAttentionData.RecordData)
        if recordDict.get(bossID, 0) in [0, 9]:
            #0-默认未关注, 1-主动关注, 2-自动关注, 9-主动取消关注
            continue
        cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
        if not CheckCanGeTui(cacheDict, geTuiType):
            # 过滤个推
            # 个推逻辑检查
            continue
        
        if not CheckBossGeTuiCnt(playerID, bossID, geTuiType, cacheDict):
@@ -302,7 +311,7 @@
        if appID not in appIDDict:
            appIDDict[appID] = []
            
        appIDDict[appID].append([cacheDict.get("GeTuiClientID", ""), cacheDict.get("Name", "")])
        appIDDict[appID].append([curCache.GeTuiID, cacheDict.get("Name", "")])
             
    if not appIDDict:
@@ -323,17 +332,21 @@
# 私聊
def ChatMiGeTui(playerID, playerName, tagPlayerName):
    curCache = PlayerViewCache.ViewCacheMgr.FindCache(playerID)
    curCache = PlayerViewCache.FindViewCache(playerID)
    if not curCache:
        return
    cacheDict = json.loads(curCache.GetPropData())
    if not CanGeTuiByCache(curCache):
        #无推送资格,基础判定
        return
    cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
    if not CheckCanGeTui(cacheDict, Def_Onoff_Chat):
        # 过滤个推
        return
    
    showStr = GameWorld.GbkToCode(IpyGameDataPY.GetFuncCfg("GeTuiOffLine", 3))%(tagPlayerName)    # 文字信息
    GeTuiNotify({cacheDict.get("AppID", ""):[[cacheDict.get("GeTuiClientID", ""), playerName]]}, showStr)
    GeTuiNotify({cacheDict.get("AppID", ""):[[curCache.GeTuiID, playerName]]}, showStr)
    return
# 下线时,低级玩家没有离线时间的玩家提示, 上线清空