using System; 
 | 
using UnityEngine; 
 | 
public class MailInfoWin : UIBase 
 | 
{ 
 | 
    [SerializeField] TextEx txtDate; 
 | 
    [SerializeField] TextEx txtTitle; 
 | 
    [SerializeField] Transform transNoAward; 
 | 
    [SerializeField] RichText txtNoAwardInfo; 
 | 
    [SerializeField] Transform transAward; 
 | 
    [SerializeField] RichText txtAwardInfo; 
 | 
    [SerializeField] ScrollerController scrAward; 
 | 
    [SerializeField] TextEx txtExpiryDate; 
 | 
    [SerializeField] ImageEx imgHasAward; 
 | 
    [SerializeField] ButtonEx btnHave; 
 | 
    [SerializeField] ButtonEx btnDelete; 
 | 
    MailData nowMailData; 
 | 
    bool isHasAward = false; 
 | 
    MailManager model { get { return MailManager.Instance; } } 
 | 
  
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        base.InitComponent(); 
 | 
        btnHave.SetListener(OnClickHaveButton); 
 | 
        btnDelete.SetListener(OnClickDeleteButton); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreOpen() 
 | 
    { 
 | 
        base.OnPreOpen(); 
 | 
        scrAward.OnRefreshCell += OnRefreshLowRewardCell; 
 | 
        model.OnUpdateMailListEvent += OnUpdateMailListEvent; 
 | 
        model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent; 
 | 
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; 
 | 
        Display(); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreClose() 
 | 
    { 
 | 
        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() 
 | 
    { 
 | 
        if (model.nowUuid == null || model.nowUuid == string.Empty) 
 | 
        { 
 | 
            Debug.Log("当前查看的邮件没有UUID"); 
 | 
            return; 
 | 
        } 
 | 
        model.ClaimMail(model.nowUuid); 
 | 
    } 
 | 
    private void OnClickDeleteButton() 
 | 
    { 
 | 
        if (model.nowUuid == null || model.nowUuid == string.Empty) 
 | 
        { 
 | 
            Debug.Log("当前查看的邮件没有UUID"); 
 | 
            return; 
 | 
        } 
 | 
        model.DeleteMail(model.nowUuid); 
 | 
        UIManager.Instance.CloseWindow<MailInfoWin>(); 
 | 
        //邮件删除成功 
 | 
        SysNotifyMgr.Instance.ShowTip("Mail01"); 
 | 
    } 
 | 
  
 | 
    private void OnUpdateMailStateChangeEvent() 
 | 
    { 
 | 
        Display(); 
 | 
    } 
 | 
  
 | 
    private void OnUpdateMailListEvent() 
 | 
    { 
 | 
        Display(); 
 | 
    } 
 | 
  
 | 
    private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell) 
 | 
    { 
 | 
        var _cell = cell.GetComponent<MailInfoAwardCell>(); 
 | 
        _cell?.Display(cell.index, cell); 
 | 
    } 
 | 
  
 | 
  
 | 
    private void Display() 
 | 
    { 
 | 
        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); 
 | 
  
 | 
        string key = nowMailData.GetTemplateKey(); 
 | 
        if (nowMailData.IsTemplateMail() && 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 
 | 
            { 
 | 
                string content = string.Format(config.Content, templateParams.ToArray()); 
 | 
                txtNoAwardInfo.text = content; 
 | 
                txtAwardInfo.text = content; 
 | 
                txtTitle.text = config.Title; 
 | 
            } 
 | 
            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 
 | 
        { 
 | 
            txtTitle.text = nowMailData.Title; 
 | 
            txtNoAwardInfo.text = nowMailData.Text; 
 | 
            txtAwardInfo.text = nowMailData.Text; 
 | 
        } 
 | 
        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) 
 | 
        { 
 | 
            for (int i = 0; i < nowMailData.Items.Count; i++) 
 | 
            { 
 | 
                CellInfo cellInfo = new CellInfo(); 
 | 
                cellInfo.infoStr1 = nowMailData.GUID; 
 | 
                scrAward.AddCell(ScrollerDataType.Header, i, cellInfo); 
 | 
            } 
 | 
        } 
 | 
        scrAward.Restart(); 
 | 
    } 
 | 
  
 | 
} 
 |