#!/usr/bin/python
# -*- coding: utf-8 -*-
# @todo: 玩家货币查询
import CommFunc
import ConfigParser
import DBOperate
import mylog
import logging
cfg = ConfigParser.ConfigParser()
cfg.read("../../InterfaceConfig.php")
ServerPath = cfg.get("ServerInfo", "ServerPath")
def queryPlayerMoneyInfo(argvDict):
## 查询玩家货币信息
startDate = argvDict.get("startDate", "")
endDate = argvDict.get("endDate", "")
moneyType = CommFunc.toInt(argvDict.get("moneyType"))
recordType = argvDict.get("recordType")
if not moneyType or not recordType:
print _(u"需指定查询货币类型及选项")
return
# 查询中心备份的
if CommFunc.isQueryCenterbak(argvDict):
queryPlayerMoneyInfo_CenterBak(startDate, endDate, argvDict, moneyType, recordType)
return
playerFind = argvDict.get("playerFind", "")
if not playerFind:
print _(u"需要指定要查询的玩家")
return
queryType = argvDict.get("queryType", "")
dboper = DBOperate.DBOper(ServerPath)
if queryType == "playerName":
findDBRet = dboper.findPlayerInfoByName([playerFind])
else:
findDBRet = dboper.findPlayerInfoByAccID([playerFind])
dboper.close()
if findDBRet and findDBRet.count():
dbPlayer = findDBRet[0]
playerID = CommFunc.encode(dbPlayer["PlayerID"])
queryAccID = CommFunc.encode(dbPlayer["AccID"])
playerName = CommFunc.encode(dbPlayer["PlayerName"])
elif queryType == "accID":
queryAccID = playerFind
playerID = 0
playerName = ""
else:
print "%s!
%s
" % (_(u"找不到该玩家"), playerFind)
return
drList = []
needQueryCenterbak = CommFunc.loopMainServerDR(cfg, startDate, endDate, argvDict, checkDrFileNeedParseFunc,
parseLineFunc, drList, queryAccID, moneyType, recordType)
if needQueryCenterbak:
argvDict["queryAccID"] = queryAccID
bakDataList = CommFunc.queryBackupCenterDR(cfg, argvDict)
if bakDataList == None:
return
drList = bakDataList + drList
itemNameDict = CommFunc.getCfgKeyNameDict("item", argvDict)
useNameDict = CommFunc.getCfgKeyNameDict("money_enent_use", argvDict)
giveNameDict = CommFunc.getCfgKeyNameDict("money_enent_give", argvDict)
giveItemNameDict = CommFunc.getCfgKeyNameDict("item_enent_give", argvDict)
needMoney2 = False
totalGive, totalUse = 0, 0
bossTypeNameDict = {0:_(u"世界Boss"), 1:_(u"Boss之家"), 2:_(u"跨服Boss")}
prayTypeNameDict = {13:_(u"金币"), 14:_(u"经验")}
drList = sorted(drList, key=lambda dr:(dr["time"], dr['PlayerMoneyCount']), reverse=False) # 按time升序排
for drDict in drList:
if not needMoney2 and "PlayerMoneyCount2" in drDict:
needMoney2 = True
MoneyCount = drDict['MoneyCount']
eventName = drDict['eventName']
reason_name_son = drDict.get("reason_name_son")
if reason_name_son:
if eventName in ["UseItem", "BuyStoreItem", "TransformItem"]:
itemID = reason_name_son
itemName = itemNameDict.get(str(itemID), "")
if itemName:
drDict["reason_name_son"] = "%s(%s)" % (itemName, itemID)
# 物品转换的,补上物品来源
if eventName == "TransformItem" and "GiveItemEvent" in drDict:
giveItemEventName = drDict["GiveItemEvent"]
giveItemNameCh = giveItemNameDict.get(giveItemEventName, giveItemEventName)
drDict["reason_name_son"] = "%s %s:%s" % (drDict["reason_name_son"], _(u"物品来源"), str(giveItemNameCh))
# 抵扣
if drDict.get("CouponMoney", 0) > 0:
drDict["reason_name_son"] = "%s %s:%s %s:%s" % (drDict["reason_name_son"], _(u"原价"), drDict.get("ItemPrice", 0), _(u"抵扣"), drDict["CouponMoney"])
elif eventName == "BuyKillBossCnt":
drDict["reason_name_son"] = bossTypeNameDict.get(reason_name_son, reason_name_son)
elif eventName == "Pray":
drDict["reason_name_son"] = prayTypeNameDict.get(reason_name_son, reason_name_son)
eventNameCh = ""
if "-" in MoneyCount:
eventNameCh = useNameDict.get(eventName)
totalUse += CommFunc.toInt(MoneyCount.replace("-", "").replace(" ", ""))
elif "+" in MoneyCount:
eventNameCh = giveNameDict.get(eventName)
totalGive += CommFunc.toInt(MoneyCount.replace("+", "").replace(" ", ""))
if eventNameCh:
drDict['eventName'] = "%s %s" % (eventNameCh, CommFunc.encode(eventName))
if not playerName and drList:
drDict = drList[-1]
playerID = drDict.get("PlayerID", playerID)
playerName = CommFunc.encodePych(drDict.get("PlayerName", ""))
moneyNameDict = CommFunc.getCfgKeyNameDict("money", argvDict)
moneyName = moneyNameDict.get(str(moneyType), str(moneyType))
printStr = "
%s%s