yyl
1 天以前 6bcbcf0494eceb60e2754c966d66bd531c5be2a9
Main/System/Mail/MailInfoWin.cs
@@ -1,4 +1,5 @@
using UnityEngine;
using System;
using UnityEngine;
public class MailInfoWin : UIBase
{
    [SerializeField] TextEx txtDate;
@@ -7,8 +8,9 @@
    [SerializeField] RichText txtNoAwardInfo;
    [SerializeField] Transform transAward;
    [SerializeField] RichText txtAwardInfo;
    [SerializeField] ScrollerController scrAwardItem;
    [SerializeField] ScrollerController scrAward;
    [SerializeField] TextEx txtExpiryDate;
    [SerializeField] ImageEx imgHasAward;
    [SerializeField] ButtonEx btnHave;
    [SerializeField] ButtonEx btnDelete;
    MailData nowMailData;
@@ -24,23 +26,28 @@
    protected override void OnPreOpen()
    {
        scrAwardItem.OnRefreshCell += OnRefreshLowRewardCell;
        base.OnPreOpen();
        scrAward.OnRefreshCell += OnRefreshLowRewardCell;
        model.OnUpdateMailListEvent += OnUpdateMailListEvent;
        model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent;
    }
    protected override void OnOpen()
    {
        UpdateDataInfo();
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        Display();
        CreateScrAward();
    }
    protected override void OnPreClose()
    {
        scrAwardItem.OnRefreshCell -= OnRefreshLowRewardCell;
        base.OnPreClose();
        scrAward.OnRefreshCell -= OnRefreshLowRewardCell;
        model.OnUpdateMailListEvent -= OnUpdateMailListEvent;
        model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent;
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
    }
    private void OnSecondEvent()
    {
        txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime);
        txtExpiryDate.text = model.FormatMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays);
        txtExpiryDate.color = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays) >= 0 ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.Red);
    }
    private void OnClickHaveButton()
@@ -67,64 +74,66 @@
    private void OnUpdateMailStateChangeEvent()
    {
        UpdateDataInfo();
        Display();
        CreateScrAward();
    }
    private void OnUpdateMailListEvent()
    {
        UpdateDataInfo();
        Display();
        CreateScrAward();
    }
    private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<MailInfoAwardItemCell>();
        var _cell = cell.GetComponent<MailInfoAwardCell>();
        _cell?.Display(cell.index, cell);
    }
    private void CreateScrAward()
    {
        scrAwardItem.Refresh();
        if (isHasAward)
        {
            for (int i = 0; i < nowMailData.Items.Count; i++)
            {
                CellInfo cellInfo = new CellInfo();
                cellInfo.infoInt1 = nowMailData.MailState;
                scrAwardItem.AddCell(ScrollerDataType.Header, i);
            }
        }
        scrAwardItem.Restart();
    }
    private void Display()
    {
        if (nowMailData == null)
        if (!model.TryGetMailData(model.nowUuid, out nowMailData))
        {
            UIManager.Instance.CloseWindow<MailInfoWin>();
            return;
        }
        isHasAward = nowMailData != null && nowMailData.HasAward();
        transNoAward.SetActive(!isHasAward);
        transAward.SetActive(isHasAward);
        btnHave.SetActive(isHasAward && nowMailData.MailState != 3);
        imgHasAward.SetActive(nowMailData.MailState != 3 && nowMailData.HasAward());
        txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime);
        if (nowMailData.IsTemplateMail())
        string key = nowMailData.GetTemplateKey();
        if (nowMailData.IsTemplateMail() && MailConfig.HasKey(key))
        {
            string key = nowMailData.GetTemplateKey();
            if (MailConfig.HasKey(key))
            MailConfig config = MailConfig.Get(key);
            var templateParams = nowMailData.GetTemplateParams();
            // 打印出即将用于格式化的所有信息
            //         Debug.Log($"[邮件调试] GUID: {nowMailData.GUID}");
            // Debug.Log($"[邮件调试] 原始参数JSON (nowMailData.Text): '{nowMailData.Text}'");
            // Debug.Log($"[邮件调试] 解析后的参数数量: {templateParams.Count}");
            // if (templateParams.Count > 0)
            // {
            //     for(int i = 0; i < templateParams.Count; i++)
            //     {
            //         Debug.Log($"[邮件调试] 参数[{i}]: {templateParams[i]}");
            //     }
            // }
            try
            {
                MailConfig config = MailConfig.Get(key);
                var templateParams = nowMailData.GetTemplateParams();
                string content = string.Format(config.Content, templateParams.ToArray());
                txtTitle.text = config.Title;
                txtNoAwardInfo.text = content;
                txtAwardInfo.text = content;
                txtTitle.text = config.Title;
            }
            else
            catch (System.Exception ex)
            {
                txtTitle.text = nowMailData.Title;
                txtNoAwardInfo.text = nowMailData.Text;
                txtAwardInfo.text = nowMailData.Text;
                Debug.LogError($"MailInfoWin 解析邮件参数失败! GUID: {nowMailData.GUID}, " +
                                 $"原始参数JSON: '{nowMailData.Text}', 错误: {ex.Message}");
            }
        }
        else
@@ -133,19 +142,20 @@
            txtNoAwardInfo.text = nowMailData.Text;
            txtAwardInfo.text = nowMailData.Text;
        }
        int expiryDays = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays);
        txtExpiryDate.text = expiryDays > 0 ? Language.Get("Mail07", expiryDays) : string.Empty;
    }
    private void UpdateDataInfo()
    {
        if (!model.TryGetMailData(model.nowUuid, out nowMailData))
        txtExpiryDate.text = model.FormatMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays);
        txtExpiryDate.color = model.GetMailExpiryDays(nowMailData.CreateDateTime, nowMailData.LimitDays) >= 0 ? UIHelper.GetUIColor(TextColType.DarkGreen) : UIHelper.GetUIColor(TextColType.Red);
        scrAward.Refresh();
        if (isHasAward)
        {
            UIManager.Instance.CloseWindow<MailInfoWin>();
            for (int i = 0; i < nowMailData.Items.Count; i++)
            {
                CellInfo cellInfo = new CellInfo();
                cellInfo.infoStr1 = nowMailData.GUID;
                scrAward.AddCell(ScrollerDataType.Header, i, cellInfo);
            }
        }
        isHasAward = nowMailData != null && nowMailData.Items != null;
        scrAward.Restart();
    }
}