yyl
2025-06-09 b9751b2f076ee050fe5b685e91ae4fc4469b1015
Main/System/Mail/MailInfoWin.cs
@@ -1,133 +1,124 @@
using UnityEngine;
namespace vnxbqy.UI
public class MailInfoWin : UIBase
{
    public class MailInfoWin : UIBase
    [SerializeField] TextEx txtDate;
    [SerializeField] TextEx txtTitle;
    [SerializeField] Transform transNoAward;
    [SerializeField] RichText txtNoAwardInfo;
    [SerializeField] Transform transAward;
    [SerializeField] RichText txtAwardInfo;
    [SerializeField] ScrollerController scrAwardItem;
    [SerializeField] TextEx txtExpiryDate;
    [SerializeField] ButtonEx btnHave;
    [SerializeField] ButtonEx btnDelete;
    MailData nowMailData;
    bool isHasAward = false;
    MailManager model { get { return MailManager.Instance; } }
    protected override void InitComponent()
    {
        [SerializeField] TextEx txtDate;
        [SerializeField] TextEx txtTitle;
        [SerializeField] Transform transNoAward;
        [SerializeField] RichText txtNoAwardInfo;
        [SerializeField] Transform transAward;
        [SerializeField] RichText txtAwardInfo;
        [SerializeField] ScrollerController scrAwardItem;
        [SerializeField] TextEx txtExpiryDate;
        [SerializeField] ButtonEx btnHave;
        [SerializeField] ButtonEx btnDelete;
        MailData nowMailData;
        bool isHasAward = false;
        MailManager model { get { return MailManager.Instance; } }
        base.InitComponent();
        btnHave.SetListener(OnClickHaveButton);
        btnDelete.SetListener(OnClickDeleteButton);
    }
        protected override void InitComponent()
    protected override void OnPreOpen()
    {
        scrAwardItem.OnRefreshCell += OnRefreshLowRewardCell;
        model.OnUpdateMailListEvent += OnUpdateMailListEvent;
        model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent;
    }
    protected override void OnOpen()
    {
        UpdateDataInfo();
        Display();
        CreateScrAward();
    }
    protected override void OnPreClose()
    {
        scrAwardItem.OnRefreshCell -= OnRefreshLowRewardCell;
        model.OnUpdateMailListEvent -= OnUpdateMailListEvent;
        model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent;
    }
    private void OnClickHaveButton()
    {
        if (model.nowUuid == null || model.nowUuid == string.Empty)
        {
            base.InitComponent();
            btnHave.SetListener(OnClickHaveButton);
            btnDelete.SetListener(OnClickDeleteButton);
            Debug.Log("当前查看的邮件没有UUID");
            return;
        }
        protected override void OnPreOpen()
        model.ClaimMail(model.nowUuid);
    }
    private void OnClickDeleteButton()
    {
        if (model.nowUuid == null || model.nowUuid == string.Empty)
        {
            scrAwardItem.OnRefreshCell += OnRefreshLowRewardCell;
            model.OnUpdateMailListEvent += OnUpdateMailListEvent;
            model.OnUpdateMailStateChangeEvent += OnUpdateMailStateChangeEvent;
            Debug.Log("当前查看的邮件没有UUID");
            return;
        }
        model.DeleteMail(model.nowUuid);
        UIManager.Instance.CloseWindow<MailInfoWin>();
        //邮件删除成功
        SysNotifyMgr.Instance.ShowTip("Mail01");
    }
        protected override void OnOpen()
        {
            UpdateDataInfo();
            Display();
            CreateScrAward();
        }
    private void OnUpdateMailStateChangeEvent()
    {
        UpdateDataInfo();
        Display();
        CreateScrAward();
    }
        protected override void OnPreClose()
        {
            scrAwardItem.OnRefreshCell -= OnRefreshLowRewardCell;
            model.OnUpdateMailListEvent -= OnUpdateMailListEvent;
            model.OnUpdateMailStateChangeEvent -= OnUpdateMailStateChangeEvent;
        }
    private void OnUpdateMailListEvent()
    {
        UpdateDataInfo();
        Display();
        CreateScrAward();
    }
        private void OnClickHaveButton()
    private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<MailInfoAwardItemCell>();
        _cell?.Display(cell.index, cell);
    }
    private void CreateScrAward()
    {
        scrAwardItem.Refresh();
        if (isHasAward)
        {
            if (model.nowUuid == null || model.nowUuid == string.Empty)
            for (int i = 0; i < nowMailData.Items.Count; i++)
            {
                Debug.Log("当前查看的邮件没有UUID");
                return;
                CellInfo cellInfo = new CellInfo();
                cellInfo.infoInt1 = nowMailData.MailState;
                scrAwardItem.AddCell(ScrollerDataType.Header, i);
            }
            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");
        }
        scrAwardItem.Restart();
    }
        private void OnUpdateMailStateChangeEvent()
        {
            UpdateDataInfo();
            Display();
            CreateScrAward();
        }
        private void OnUpdateMailListEvent()
        {
            UpdateDataInfo();
            Display();
            CreateScrAward();
        }
        private void OnRefreshLowRewardCell(ScrollerDataType type, CellView cell)
        {
            var _cell = cell.GetComponent<MailInfoAwardItemCell>();
            _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)
                return;
            transNoAward.SetActive(!isHasAward);
            transAward.SetActive(isHasAward);
            txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime);
    private void Display()
    {
        if (nowMailData == null)
            return;
        transNoAward.SetActive(!isHasAward);
        transAward.SetActive(isHasAward);
        txtDate.text = model.FormatCreateMailTime(nowMailData.CreateDateTime);
            
            if (nowMailData.IsTemplateMail())
        if (nowMailData.IsTemplateMail())
        {
            string key = nowMailData.GetTemplateKey();
            if (MailConfig.HasKey(key))
            {
                string key = nowMailData.GetTemplateKey();
                if (MailConfig.HasKey(key))
                {
                    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;
                }
                else
                {
                    txtTitle.text = nowMailData.Title;
                    txtNoAwardInfo.text = nowMailData.Text;
                    txtAwardInfo.text = nowMailData.Text;
                }
                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;
            }
            else
            {
@@ -135,20 +126,26 @@
                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()
        else
        {
            if (!model.TryGetMailData(model.nowUuid, out nowMailData))
            {
                UIManager.Instance.CloseWindow<MailInfoWin>();
            }
            isHasAward = nowMailData != null && nowMailData.Items != null;
            txtTitle.text = nowMailData.Title;
            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))
        {
            UIManager.Instance.CloseWindow<MailInfoWin>();
        }
        isHasAward = nowMailData != null && nowMailData.Items != null;
    }
}