#!/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}