hxp
4 天以前 07423ad90ce28a8817671e8266a4aba2ea294935
571 【荣耀战将】删档测试充值返利
3个文件已修改
1个文件已添加
126 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_DeleteTestRebate.py 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3306,6 +3306,7 @@
Def_PDict_ShareGameAwardState = "ShareGameAwardState"  # 每日分享游戏领奖记录
Def_PDict_GoodGameAwardState = "GoodGameAwardState"  # 游戏好评领奖记录
Def_PDict_LikeGameAwardState = "LikeGameAwardState"  # 游戏点赞领奖记录
Def_PDict_DeleteTestRebate = "DeleteTestRebate"  # 删档测试返利状态,0-该角色未触发,1-该角色已处理,仅做处理标记,只会发给该平台账号第一个请求的角色
Def_PDict_RechargeDayAward = "RechargeDayAward"  # 累充每日奖励
Def_PDict_ADCnt = "ADCnt_%s"  # 今日已领取广告奖励次数,参数(广告ID)
Def_PDict_EquipViewCacheState = "EquipViewCacheState"  # 本次上线是否同步过装备缓存
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
@@ -59,17 +59,18 @@
#  @param eventParam 事件参数
#  @param curPlayer 
#  @return None
def EventReport(eventActionID, eventParam, curPlayer=None, OperatorID=""):
def EventReport(eventActionID, eventParam, curPlayer=None, OperatorID="", checkNeed=True):
    # 组成例子 eventParam 的格式必须是 xx=yy&zz=cc
    #  "http://192.168.0.249:12000/event_receiver?EventID=3099&OperatorID=test&PlayerCount=102&Time=2018-02-08 18:30:30&ProductID=snxxz&RegionName=s1"
    
    reportActionIDList = IpyGameDataPY.GetFuncEvalCfg("EventReport", 3)
    if reportActionIDList and eventActionID not in reportActionIDList:
        #GameWorld.DebugLog("非需要汇报的事件ID! %s" % eventActionID)
        return
    if eventActionID in IpyGameDataPY.GetFuncEvalCfg("EventReport", 1):
        #GameWorld.DebugLog("不需要汇报的事件! %s" % eventActionID)
        return
    if checkNeed:
        reportActionIDList = IpyGameDataPY.GetFuncEvalCfg("EventReport", 3)
        if reportActionIDList and eventActionID not in reportActionIDList:
            #GameWorld.DebugLog("非需要汇报的事件ID! %s" % eventActionID)
            return
        if eventActionID in IpyGameDataPY.GetFuncEvalCfg("EventReport", 1):
            #GameWorld.DebugLog("不需要汇报的事件! %s" % eventActionID)
            return
    
    if not curPlayer and not OperatorID:
        return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3311,6 +3311,7 @@
            
        #不需要做升级任务, 设置玩家经验
        SetPlayerTotalExp(curPlayer, curTotalExp) 
        DoDeleteTestRebate(curPlayer)
        return
    
    def __GiveLVMailAward(self, curLV):
@@ -4617,4 +4618,35 @@
        if not curSummon:
            continue
        curSummon.SetSightLevel(sightLevel)
    return
    return
def DoDeleteTestRebate(curPlayer):
    playerID = curPlayer.GetPlayerID()
    appID = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 1)
    if GameWorld.GetAppIDByAccID(curPlayer.GetAccID()) != appID:
        #GameWorld.DebugLog("非返利渠道AppID! appID=%s" % appID, playerID)
        return
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DeleteTestRebate):
        GameWorld.DebugLog("删档测试返利已经处理过,不再请求!", playerID)
        return
    if curPlayer.GetLV() < IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 2):
        GameWorld.DebugLog("等级不足不处理删档测试返利! lv=%s" % curPlayer.GetLV(), playerID)
        return
    rebateRate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 5)
    if rebateRate <= 0:
        GameWorld.DebugLog("没有返利比例不处理!", playerID)
        return
    curTime = int(time.time())
    testEndDate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 3) # 删档测试结束日期
    testEndTime = GameWorld.ChangeTimeStrToNum("%s235959" % testEndDate, ChConfig.TYPE_Time_Format_YmdHMS)
    if curTime <= testEndTime:
        GameWorld.DebugLog("删档测试期间不处理删档测试返利! testEndDate=%s" % testEndDate, playerID)
        return
    rebateEndDate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 4) # 返利结束日期,由公测日期+有效天数得到
    rebateEndTime = GameWorld.ChangeTimeStrToNum("%s235959" % rebateEndDate, ChConfig.TYPE_Time_Format_YmdHMS)
    if curTime > rebateEndTime:
        GameWorld.DebugLog("返利有效期已结束不处理删档测试返利! rebateEndDate=%s" % rebateEndDate, playerID)
        return
    import EventReport
    EventReport.EventReport("DeleteTestRebate", "testEndDate=%s"%(testEndDate), curPlayer, checkNeed=False)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_DeleteTestRebate.py
New file
@@ -0,0 +1,74 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_DeleteTestRebate
#
# @todo:删档测试返利返回
# @author hxp
# @date 2026-03-18
# @version 1.0
#
# 详细描述: 删档测试返利返回
#
#-------------------------------------------------------------------------------
#"""Version = 2026-03-18 18:00"""
#-------------------------------------------------------------------------------
import GMCommon
import GameWorld
from Player import (PlayerControl)
import IpyGameDataPY
import DataRecordPack
import ShareDefine
import PlayerMail
import ItemCommon
import ChConfig
def OnExec(gmCmdDict):
    errorMsg = ""
    from GMToolLogicProcess import  ProjSpecialProcess
    Result, curPlayer = ProjSpecialProcess.GMCmdPlayerValidation(gmCmdDict)
    if Result != GMCommon.Def_Success:
        return Result, errorMsg
    if not curPlayer:
        return Result, "offline"
    # 玩家在线,可处理
    playerID = curPlayer.GetPlayerID()
    Result = GMCommon.Def_Unknow
    GMT_Name = gmCmdDict.get(GMCommon.Def_GMKey_Type, '')
    appID = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 1)
    playerAppID = GameWorld.GetAppIDByAccID(curPlayer.GetAccID())
    if playerAppID != appID:
        return GMCommon.Def_Unknow, "appID error. playerAppID=%s" % playerAppID
    rebateRate = IpyGameDataPY.GetFuncCfg("DeleteTestRebate", 5)
    if rebateRate <= 0:
        return GMCommon.Def_Unknow, "rebateRate is zero."
    itemID = ItemCommon.GetMoneyItemID(ShareDefine.TYPE_Price_PayCoin)
    if not itemID:
        return GMCommon.Def_Unknow, "payCoin itemID error."
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DeleteTestRebate):
        return GMCommon.Def_Unknow, "already rebate."
    accountPayTotal = GameWorld.ToNumDef(gmCmdDict.get('accountPayTotal', '0'), 0) # 单位,元,支持小数
    GameWorld.Log("删档测试充值总额: %s" % accountPayTotal, curPlayer.GetPlayerID())
    # 只要有收到同步,该角色就标记为已处理,如有异常再进行手动补偿
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DeleteTestRebate, 1)
    if accountPayTotal > 0:
        rebateMoney = int(accountPayTotal * rebateRate / 100.0 * 100) # 除100为百分比,乘100为coin比例
        itemList = [[itemID, rebateMoney]]
        paramList = [accountPayTotal, rebateRate]
        PlayerMail.SendMailByKey("DeleteTestRebate", playerID, itemList, paramList)
        resultDict = {"accountPayTotal":accountPayTotal, "rebateRate":rebateRate, "itemID":itemID, "rebateMoney":rebateMoney}
        DataRecordPack.DR_ToolGMOperate(playerID, curPlayer.GetPlayerName(), curPlayer.GetAccID(), GMT_Name, resultDict)
    return GMCommon.Def_Success