| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | using System;using System.Collections.Generic;using System.Linq;using ET;namespace GFGGame{    public class LimitedTimeGiftBoxDataManager : SingletonBase<LimitedTimeGiftBoxDataManager>    {        //每日特惠每次登录没有打开过就给红点        private bool _isOpenMeiRiTeHui = false;        public bool IsOpenMeiRiTeHui => _isOpenMeiRiTeHui;        //圆形样式数据4--等级条件的数据         private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemYxData>();        public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData4 => _ltgGbItemData4;        //圆形样式数据5--时间条件的数据        private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemYxData>();        public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData5 => _ltgGbItemData5;        //圆形样式数据16--时间条件的数据        private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData16 = new List<LimitedTimeGiftBoxItemYxData>();        public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData16 => _ltgGbItemData16;        public void Clear()        {            _ltgGbItemData4.Clear();            _ltgGbItemData5.Clear();            _ltgGbItemData16.Clear();            _isOpenMeiRiTeHui = false;        }        public void SetIsOpenMeiRiTeHui()        {            _isOpenMeiRiTeHui = true;            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);        }        public void UpLtgGbItemData4()        {            _ltgGbItemData4.Clear();            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(                         ActivityType.XSLB2))            {                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())                {                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);                    //判断是否是类型4的数据                    if (activityOpenCfg.type == ActivityType.XSLB2)                    {                        foreach (var shopCfgId in activityOpenCfg.paramsArr)                        {                            FillData(_ltgGbItemData4, shopCfgId, activityInfo.EndTime);                        }                    }                }            }            _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();        }        public void UpLtgGbItemData5()        {            _ltgGbItemData5.Clear();            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(                         ActivityType.XSLB3))            {                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())                {                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);                    //判断是否是类型4的数据                    if (activityOpenCfg.type == ActivityType.XSLB3)                    {                        FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.EndTime);                    }                }            }            _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();        }        public void UpLtgGbItemData16()        {            _ltgGbItemData16.Clear();            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(                         ActivityType.LuckyDiscount))            {                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())                {                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);                    //判断是否是类型16的数据                    if (activityOpenCfg.type == ActivityType.LuckyDiscount)                    {                        FillData(_ltgGbItemData16, activityOpenCfg.paramsArr[0], activityInfo.EndTime);                    }                }            }            _ltgGbItemData16 = _ltgGbItemData16.OrderBy(a => a.ShopCfgId).ToList();        }        private void FillData(List<LimitedTimeGiftBoxItemYxData> listData, int shopCfgId, long endTime)        {            ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);            if (shopCfg == null)            {                Log.Error("shopCfg is null");                return;            }            var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);            if (ltgGbItemData == null)            {                listData.Add(new LimitedTimeGiftBoxItemYxData                {                    EndTime = endTime,                    ShopCfgId = shopCfg.id,                    IndexType = shopCfg.menu2                });            }            else            {                var index = listData.IndexOf(ltgGbItemData);                ltgGbItemData.IndexType = shopCfg.menu2;                ltgGbItemData.EndTime = endTime;                listData[index] = ltgGbItemData;            }        }        //1元礼包是否还可购买        public bool SpecialOfferGiftBoxCanBuy()        {            var activityInfoByTypeList =             ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);            var list = activityInfoByTypeList                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();            if(list.Count == 0)                return false;            bool isSoldOut = true;            foreach (var activityInfo in list)            {                ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);                var paramsArr = activityOpenCfg.paramsArr;                foreach (var shopCfgId in paramsArr)                {                    var shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);                    var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId);                    //只要有一个商品还能购买,就不是售罄                    if (remainBuyNum > 0)                    {                        isSoldOut = false;                        break;                    }                }            }            return !isSoldOut;        }        //获得特惠礼包展示的列表id        public List<int> TryShopCfg()        {            int activityId = 0;            foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(                       ActivityType.XSLB1))            {                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow()) {                     activityId = activityInfo.ActivityId;                    break;                }            }            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityId);            List<int> shopCfgIds = new List<int>();            bool same = false;            int sellShowId = 0;            var paramsArr = activityOpenCfg.paramsArr;            var params2Arr = activityOpenCfg.params2Arr;            for (int j = 0; j < params2Arr.Length; j++)            {                for (int i = 0; i < paramsArr.Length; i++)                {                    if (params2Arr[j] == paramsArr[i])                    {                        var shopCfg = ShopCfgArray.Instance.GetCfg(paramsArr[i]);                        bool isSellOut = shopCfg.maxBuyNum > 0 &&                            shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id) <= 0;                        if (!isSellOut)                            sellShowId = paramsArr[i];                        break;                    }                }                if (sellShowId > 0)                    break;            }            if (sellShowId <= 0)                sellShowId = params2Arr[params2Arr.Length - 1];            shopCfgIds.Add(sellShowId);            for (int i = 0; i < paramsArr.Length; i++)            {                same = false;                for (int j = 0; j < params2Arr.Length; j++)                {                    if (params2Arr[j] == paramsArr[i])                    {                        same = true;                        break;                    }                }                if (!same)                    shopCfgIds.Add(paramsArr[i]);            }            return shopCfgIds;        }    }}
 |