#!/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 queryPlayerItemInfo(argvDict):
## 查询玩家物品信息
startDate = argvDict.get("startDate", "")
endDate = argvDict.get("endDate", "")
recordType = argvDict.get("recordType")
if not recordType:
print _(u"需指定查询选项")
return
itemIDList = []
if argvDict.get("itemIDInfo", "") != "":
itemIDList = [CommFunc.toInt(itemIDStr) for itemIDStr in argvDict.get("itemIDInfo", "").split(",")]
# 查询中心备份的
if CommFunc.isQueryCenterbak(argvDict):
queryPlayerItemInfo_CenterBak(startDate, endDate, argvDict, recordType, itemIDList)
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, recordType, itemIDList)
if needQueryCenterbak:
argvDict["queryAccID"] = queryAccID
bakDataList = CommFunc.queryBackupCenterDR(cfg, argvDict)
if bakDataList == None:
return
drList = bakDataList + drList
packTypeNameDict = CommFunc.getCfgKeyNameDict("packType", argvDict)
itemNameDict = CommFunc.getCfgKeyNameDict("item", argvDict)
useNameDict = CommFunc.getCfgKeyNameDict("item_enent_use", argvDict)
giveNameDict = CommFunc.getCfgKeyNameDict("item_enent_give", argvDict)
moneyNameDict = CommFunc.getCfgKeyNameDict("money", argvDict)
drList = sorted(drList, key=lambda dr:dr["time"], reverse=False) # 按time升序排
for drDict in drList:
ItemID = drDict['ItemID']
auctionItemStr = "[%s]" % _(u"拍品") if drDict.get('IsBind') else ""
itemName = itemNameDict.get(str(ItemID), "")
if itemName:
itemName = "%s %s(%s)" % (auctionItemStr, itemName, ItemID)
else:
itemName = "%s %s(%s)" % (auctionItemStr, _(u"未知物品"), ItemID)
drDict['ItemName'] = itemName
eventNameCh = ""
eventName = drDict['eventName']
ItemCount = drDict['ItemCount']
if "-" in ItemCount:
eventNameCh = useNameDict.get(eventName)
elif "+" in ItemCount:
eventNameCh = giveNameDict.get(eventName)
if eventNameCh:
drDict['eventName'] = "%s %s" % (eventNameCh, CommFunc.encode(eventName))
if drDict.get("PayPrice", 0) > 0 or drDict.get("CouponMoney", 0) > 0:
moneyType = drDict.get("MoneyType", 0)
moneyName = moneyNameDict.get(str(moneyType), str(moneyType))
payMoneyInfo = "%s %s:%s" % (_(u"支付"), moneyName, drDict.get("PayPrice", 0))
if drDict.get("CouponMoney", 0) > 0:
payMoneyInfo = "%s %s:%s" % (payMoneyInfo, _(u"抵扣"), drDict.get("CouponMoney", 0))
drDict['eventName'] = "%s %s" % (drDict['eventName'], payMoneyInfo)
reason_name_son = drDict.get("reason_name_son")
if reason_name_son:
itemID = reason_name_son
itemName = itemNameDict.get(str(itemID), "")
if itemName:
drDict['eventName'] = "%s %s(%s)" % (drDict['eventName'], itemName, itemID)
else:
drDict['eventName'] = "%s %s" % (drDict['eventName'], reason_name_son)
packType = drDict.get('PackType', "")
drDict['PackName'] = packTypeNameDict.get(str(packType), packType)
if not playerName and drList:
drDict = drList[-1]
playerID = drDict.get("PlayerID", playerID)
#playerName = CommFunc.encodePych(drDict.get("PlayerName", ""))
printStr = "
%s