#!/usr/bin/python
# -*- coding: utf-8 -*-
# @todo: 个人邮件查询
import CommFunc
import ConfigParser
import DBOperate
import logging
import mylog
cfg = ConfigParser.ConfigParser()
cfg.read("../../InterfaceConfig.php")
ServerPath = cfg.get("ServerInfo", "ServerPath")
def queryPlayerMailDRInfo(argvDict):
## 查询玩家邮件信息
startDate = argvDict.get("startDate", "")
endDate = argvDict.get("endDate", "")
queryTempInfo = argvDict.get("queryTempInfo", "")
queryTempList = queryTempInfo.split(",") if queryTempInfo != "" else []
filterInfo = argvDict.get("filterInfo", "")
filterList = filterInfo.split(",") if filterInfo != "" else []
# 查询中心备份的
if CommFunc.isQueryCenterbak(argvDict):
# 备份数据默认不看拍卖相关邮件
if "Paimai" not in filterList:
filterList.append("Paimai")
queryPlayerMailDRInfo_Centerbak(startDate, endDate, argvDict, queryTempList, filterList)
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 not findDBRet or findDBRet.count() == 0:
print _(u"找不到该玩家") + "!
%s
" % playerFind
return
dbPlayer = findDBRet[0]
playerID = CommFunc.encode(dbPlayer["PlayerID"])
queryAccID = CommFunc.encode(dbPlayer["AccID"])
playerName = CommFunc.encode(dbPlayer["PlayerName"])
drList = []
giveSuccessDict = {}
delGUIDDict = {}
needQueryCenterbak = CommFunc.loopMainServerDR(cfg, startDate, endDate, argvDict, checkDrFileNeedParseFunc_MailSend,
parseLineFunc_MailSend, drList, playerID, queryTempList, filterList, drNameList=["CompensationPersonal", "CompensationEntire"])
# 领取的不限制结束日期
CommFunc.loopMainServerDR(cfg, startDate, "", argvDict, checkDrFileNeedParseFunc_MailGiveSuccess,
parseLineFunc_MailGiveSuccess, giveSuccessDict, playerID, drNameList=["CompensationGiveSuccess"])
CommFunc.loopMainServerDR(cfg, startDate, "", argvDict, checkDrFileNeedParseFunc_MailDel,
parseLineFunc_MailDel, delGUIDDict, playerID, drNameList=["CompensationPersonalDel"])
if needQueryCenterbak:
argvDict["playerID"] = playerID
bakDataList = CommFunc.queryBackupCenterDR(cfg, argvDict)
if bakDataList == None:
return
drList = bakDataList[0] + drList
giveSuccessDict.update(bakDataList[1])
delGUIDDict.update(bakDataList[2])
# 更新邮件标题、领取时间
tempTitleDict = CommFunc.getCfgKeyNameDict("mail", argvDict)
itemNameDict = CommFunc.getCfgKeyNameDict("item", argvDict)
for mailInfo in drList:
tempType = mailInfo["Title"]
mailInfo["Title"] = tempTitleDict.get(tempType, tempType)
# 全服邮件
if "PlayerIDList" not in mailInfo:
mailInfo["Title"] = "%s%s" % (CommFunc.encode(mailInfo["Title"]), "[" + _(u"全服") + "]")
itemInfoStr = ""
for itemInfo in mailInfo["ItemList"]:
if itemInfoStr:
itemInfoStr += "
"
itemID = itemInfo["ItemID"]
count = itemInfo["Count"]
itemName = itemNameDict.get(str(itemID), "")
if itemName:
itemInfoStr += "%s(%s) x%s%s" % (itemName, itemID, count, _(u"个"))
else:
itemInfoStr += "%s(%s) x%s个" % (_(u"未知物品ID"), itemID, count)
if itemInfo.get("IsAuctionItem"):
itemInfoStr += "(%s)" % _(u"拍品")
mailInfo["ItemInfo"] = itemInfoStr
GUID = mailInfo["GUID"]
if GUID in giveSuccessDict:
mailInfo["giveTime"] = giveSuccessDict[GUID]
elif GUID in delGUIDDict:
delTime, delEventName = delGUIDDict[GUID]
delTime, delEventName = str(delTime), str(delEventName)
if delEventName == "GMT":
delEventName = _(u"后台")
elif delEventName == "MaxCountLimiit":
delEventName = _(u"邮件上限")
elif delEventName == "Timeout":
delEventName = _(u"过期")
elif delEventName == "ClientDel":
delEventName = _(u"玩家删除")
mailInfo["giveTime"] = "%s
%s: %s" % (delTime, _(u"被删除"), delEventName)
printStr = "
%s