1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/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."
    
    # Ö»ÒªÓÐÊÕµ½Í¬²½£¬¸Ã½ÇÉ«¾Í±ê¼ÇΪÒÑ´¦Àí£¬ÈçÓÐÒì³£ÔÙ½øÐÐÊÖ¶¯²¹³¥
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DeleteTestRebate, 1)
    
    rebateServerID = GameWorld.ToIntDef(gmCmdDict.get('rebateServerID', '0'))
    if rebateServerID > 0:
        GameWorld.Log("ɾµµ²âÊÔ³äÖµ·µÀû·µ»ØÒѾ­ÔÚÆäËû·þÎñÆ÷·µÀû¹ýÁË: rebateServerID=%s" % rebateServerID, curPlayer.GetPlayerID())
        return GMCommon.Def_Success
    
    accountPayTotal = GameWorld.ToNumDef(gmCmdDict.get('accountPayTotal', '0'), 0) # µ¥Î»£¬Ôª£¬Ö§³ÖСÊý
    GameWorld.Log("ɾµµ²âÊÔ³äÖµ×ܶî: %s" % accountPayTotal, curPlayer.GetPlayerID())
    
    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