using System; using System.Collections.Generic; using System.Linq; using cfg.GfgCfg; 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 = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId); //判断是否是类型4的数据 if (activityOpenCfg.Type == ActivityType.XSLB2) { foreach (var shopCfgId in activityOpenCfg.Params1) { 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 = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId); //判断是否是类型4的数据 if (activityOpenCfg.Type == ActivityType.XSLB3) { FillData(_ltgGbItemData5, activityOpenCfg.Params1[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 = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId); //判断是否是类型16的数据 if (activityOpenCfg.Type == ActivityType.LuckyDiscount) { FillData(_ltgGbItemData16, activityOpenCfg.Params1[0], activityInfo.EndTime); } } } _ltgGbItemData16 = _ltgGbItemData16.OrderBy(a => a.ShopCfgId).ToList(); } private void FillData(List listData, int shopCfgId, long endTime) { ShopCfg shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(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 = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfo.ActivityId); var paramsArr = activityOpenCfg.Params1; foreach (var shopCfgId in paramsArr) { var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(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 = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityId); List shopCfgIds = new List(); bool same = false; int sellShowId = 0; var paramsArr = activityOpenCfg.Params1; var params2Arr = activityOpenCfg.Params2; for (int j = 0; j < params2Arr.Count; j++) { for (int i = 0; i < paramsArr.Count; i++) { if (params2Arr[j] == paramsArr[i]) { var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(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.Count - 1]; shopCfgIds.Add(sellShowId); for (int i = 0; i < paramsArr.Count; i++) { same = false; for (int j = 0; j < params2Arr.Count; j++) { if (params2Arr[j] == paramsArr[i]) { same = true; break; } } if (!same) shopCfgIds.Add(paramsArr[i]); } return shopCfgIds; } } }