#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_CompensationQuery
|
#
|
# @todo:GM¹¤¾ßÃüÁî - È«·þÓʼþ²éѯ
|
# @author hxp
|
# @date 2025-06-04
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: GM¹¤¾ßÃüÁî - È«·þÓʼþ²éѯ
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2025-06-04 15:00"""
|
#-------------------------------------------------------------------------------
|
|
import GameWorld
|
import DBDataMgr
|
import GMCommon
|
|
## Ö´ÐÐÂß¼
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param gmCmdDict: ÃüÁî×Öµä
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(gmCmdDict):
|
|
fromDate = gmCmdDict.get('FromDate', '')
|
toDate = gmCmdDict.get('ToDate', '')
|
guid = gmCmdDict.get('GUID', '')
|
searchTitle = gmCmdDict.get('SearchTitle', '')
|
searchContent = gmCmdDict.get('SearchContent', '')
|
searchState = GameWorld.ToIntDef(gmCmdDict.get('SearchState')) # 0-È«²¿£»1-ͨ¹ý£»2-δÉó
|
if searchState == 1:
|
searchState = 0
|
elif searchState == 2:
|
searchState = 1
|
else:
|
searchState = None
|
maxCount = GameWorld.ToIntDef(gmCmdDict.get('MaxCount', ''), 5)
|
maxCount = min(50, maxCount)
|
|
mailMgr = DBDataMgr.GetMailMgr()
|
queryRetList = []
|
if guid:
|
mailObj = mailMgr.GetServerMail(guid)
|
queryRetList.append(__getServerMailInfo(mailObj, mailMgr.GetMailItemList(guid)))
|
else:
|
if fromDate:
|
fromDate = "%s 00:00:00" % fromDate
|
if toDate:
|
toDate = "%s 23:59:59" % toDate
|
|
for guid in mailMgr.GetServerMailGuids():
|
mailObj = mailMgr.GetServerMail(guid)
|
if fromDate and mailObj.GetCreateTime() < fromDate:
|
continue
|
|
if toDate and mailObj.GetCreateTime() > toDate:
|
continue
|
|
if searchTitle and searchTitle not in mailObj.GetTitle():
|
continue
|
|
if searchContent and searchContent not in mailObj.GetText():
|
continue
|
|
if searchState != None and searchState != mailObj.GetCheckState():
|
continue
|
|
queryRetList.append(__getServerMailInfo(mailObj, mailMgr.GetMailItemList(guid)))
|
if len(queryRetList) >= maxCount:
|
break
|
|
queryRetList.sort(key=lambda m:(m["CreateTime"]), reverse=True)
|
|
return GMCommon.Def_Success, queryRetList
|
|
def __getServerMailInfo(mailObj, itemList):
|
return {"GUID":mailObj.GetGUID(), "CheckState":mailObj.GetCheckState(), "LimitLVType":mailObj.GetLimitLVType(),
|
"LimitLV":mailObj.GetLimitLV(), "MailType":mailObj.GetType(), "Title":mailObj.GetTitle(), "Content":mailObj.GetText(),
|
"CreateTime":mailObj.GetCreateTime(), "LimitDays":mailObj.GetLimitDays(), "ItemList":itemList}
|
|