/// <summary> /// 服务推送来的邮件 /// </summary> public static void ReceptionPushDataTwo(IMessage msg) { if (msg is SCSendMailPushMsg) { SCSendMailPushMsg dataBox = msg as SCSendMailPushMsg; MailStruct data = dataBox.MailInfoMsg; if (!_pushMailDic.ContainsKey(data.MailID)) { _pushMailDic.Add(data.MailID, data); if (!_mailDic.ContainsKey(data.MailID)) { CSMailStruct cSMailStruct = new CSMailStruct(); cSMailStruct.MailId = data.MailID; cSMailStruct.State = 1; cSMailStruct.Message = data.MailContent; cSMailStruct.Title = data.MailTitle; cSMailStruct.SubheadID = data.SubheadID; cSMailStruct.Addresser = data.Addresser; cSMailStruct.ConfigId = data.ConfigID; cSMailStruct.DisabledTime = data.DisabledTime; cSMailStruct.HaveAccessory = data.PropInfo != null && data.PropInfo.Count > 0; _mailDic.Add(cSMailStruct.MailId, cSMailStruct); if (MailboxController.Instance != null) { RedDotManager.UpdateRedDot(RedDotManager.RedDotKey.Mailbox); } else { _pushAction?.Invoke(); } } else { Debug.Log("推送邮件id跟现有邮件id重复:" + data.MailID); } } else { Debug.Log("推送邮件重复:" + data.MailID); } } else { Debug.Log("推送邮件数据类型出错"); } }
/// <summary> /// 初始化 /// </summary> /// <param name="data"></param> public void Initial(CSMailStruct data) { if (data.ConfigId != 0) { MailDefine mailDefine = StaticData.configExcel.GetMailByMailId(data.ConfigId); if (mailDefine != null) { _mailName = StaticData.GetMultilingual(mailDefine.Title); _mailContent = StaticData.GetMultilingual(mailDefine.Message); _subhead = StaticData.GetMultilingual(mailDefine.Subtitle); } else { _mailName = "获取不到配置数据,邮件id:" + data.MailId; _mailContent = "获取不到配置数据,邮件配置id:" + data.ConfigId; _subhead = "获取不到副标题"; } } else { _mailName = StaticData.GetMultilingual(data.Title); _mailContent = StaticData.GetMultilingual(data.Message); _subhead = StaticData.GetMultilingual(data.SubheadID);; } _mailID = data.MailId; _timestamp = data.DisabledTime; _addressor = data.Addresser; _type = (MailState)data.State; if (data.HaveAccessory == false) { _isHaveAccessory = false; } else { _isHaveAccessory = data.HaveAccessory; } }
/// <summary> /// 获取玩家邮件数据 /// </summary> /// <param name="endAction"></param> public static void GetMailboxData(Action <List <MailData> > endAction) { if (_isGetMaliData) { List <MailData> mailDatas = new List <MailData>(); foreach (var item in _mailDic) { MailData mailData = new MailData(); mailData.Initial(item.Value); mailDatas.Add(mailData); } endAction?.Invoke(mailDatas); return; } else { CSEmptyMail cSEmptyMail = new CSEmptyMail(); List <MailData> mailDatas = new List <MailData>(); ProtocalManager.Instance().SendCSEmptyMail(cSEmptyMail, (data) => { _mailDic.Clear(); if (data != null && data.Mail != null && data.Mail.Count > 0) { for (int i = 0; i < data.Mail.Count; i++) { CSMailStruct cSMailStruct = data.Mail[i]; MailData mailData = new MailData(); mailData.Initial(cSMailStruct); mailDatas.Add(mailData); _mailDic.Add(cSMailStruct.MailId, cSMailStruct); } _isGetMaliData = true; } else { //for (int i = 0; i < 10; i++) //{ // CSMailStruct cSMailStruct = new CSMailStruct(); // cSMailStruct.Addresser = 1; // if (i == 0) // { // cSMailStruct.HaveAccessory = true; // } // else // { // cSMailStruct.HaveAccessory = false; // } // cSMailStruct.Message = "测试数据"; // cSMailStruct.MailId = i; // cSMailStruct.Title = "测试邮件" + i; // cSMailStruct.State = 1; // cSMailStruct.DisabledTime = TimeHelper.ServerTimeStampNow; // MailData mailData = new MailData(); // mailData.Initial(cSMailStruct); // mailDatas.Add(mailData); // _mailDic.Add(i, cSMailStruct); //} //_isGetMaliData = true; Debug.Log("没有邮件!"); } endAction?.Invoke(mailDatas); }, (er) => { Debug.LogError("邮件数据获取失败:" + "Code:" + er.webErrorCode + "Message:" + er.ErrorMessage); _isGetMaliData = false; endAction?.Invoke(mailDatas); }); } }