internal bool HaveMail(ulong userGuid) { bool ret = false; DataProcessScheduler dataProcess = LobbyServer.Instance.DataProcessScheduler; UserInfo user = dataProcess.GetUserInfo(userGuid); if (null != user) { List <MailInfo> userMails; if (m_UserMails.TryGetValue(userGuid, out userMails) && userMails.Count > 0) { ret = true; } MailStateInfo mailStateInfo = user.MailStateInfo; int wholeMailCt = m_WholeMails.Count; for (int ix = 0; ix < wholeMailCt; ++ix) { MailInfo mailInfo = m_WholeMails[ix]; if (mailInfo.m_LevelDemand <= user.Level && mailInfo.m_SendTime >= user.CreateTime && mailInfo.m_ExpiryDate >= DateTime.Now && !mailStateInfo.IsAlreadyReceived(mailInfo.m_MailGuid)) { ret = true; break; } } int moduleMailCt = m_ModuleMails.Count; for (int ix = 0; ix < moduleMailCt; ++ix) { ModuleMailInfo mailInfo = m_ModuleMails[ix]; IModuleMailHandler handler = GetModuleMailHandler(mailInfo.m_Module); if (null != handler) { if (handler.HaveMail(mailInfo, user)) { ret = true; break; } } } } return(ret); }