using System; using System.Collections.Generic; using System.Linq; using ET; namespace GFGGame { public class LimitedTimeGiftBoxDataManager : SingletonBase { //每日特惠每次登录没有打开过就给红点 private bool _isOpenMeiRiTeHui = false; public bool IsOpenMeiRiTeHui => _isOpenMeiRiTeHui; //圆形样式数据4--等级条件的数据 private List _ltgGbItemData4 = new List(); public List LtgGbItemData4 => _ltgGbItemData4; //圆形样式数据5--时间条件的数据 private List _ltgGbItemData5 = new List(); public List LtgGbItemData5 => _ltgGbItemData5; //圆形样式数据16--时间条件的数据 private List _ltgGbItemData16 = new List(); public List 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 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 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 shopCfgIds = new List(); 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; } } }