hxp
2025-06-04 71d77df560af421d106484e9276e89297b88e40a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/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}