LimitedTimeGiftBoxDataManager.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using ET;
  5. namespace GFGGame
  6. {
  7. public class LimitedTimeGiftBoxDataManager : SingletonBase<LimitedTimeGiftBoxDataManager>
  8. {
  9. //每日特惠每次登录没有打开过就给红点
  10. private bool _isOpenMeiRiTeHui = false;
  11. public bool IsOpenMeiRiTeHui => _isOpenMeiRiTeHui;
  12. //圆形样式数据4--等级条件的数据
  13. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemYxData>();
  14. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData4 => _ltgGbItemData4;
  15. //圆形样式数据5--时间条件的数据
  16. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemYxData>();
  17. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData5 => _ltgGbItemData5;
  18. public void Clear()
  19. {
  20. _ltgGbItemData4.Clear();
  21. _ltgGbItemData5.Clear();
  22. _isOpenMeiRiTeHui = false;
  23. }
  24. public void SetIsOpenMeiRiTeHui()
  25. {
  26. _isOpenMeiRiTeHui = true;
  27. EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
  28. }
  29. public void UpLtgGbItemData4()
  30. {
  31. _ltgGbItemData4.Clear();
  32. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  33. ActivityType.XSLB2))
  34. {
  35. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  36. {
  37. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  38. //判断是否是类型4的数据
  39. if (activityOpenCfg.type == ActivityType.XSLB2)
  40. {
  41. foreach (var shopCfgId in activityOpenCfg.paramsArr)
  42. {
  43. FillData(_ltgGbItemData4, shopCfgId, activityInfo.EndTime);
  44. }
  45. }
  46. }
  47. }
  48. _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();
  49. }
  50. public void UpLtgGbItemData5()
  51. {
  52. _ltgGbItemData5.Clear();
  53. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  54. ActivityType.XSLB3))
  55. {
  56. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
  57. {
  58. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  59. //判断是否是类型4的数据
  60. if (activityOpenCfg.type == ActivityType.XSLB3)
  61. {
  62. FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.EndTime);
  63. }
  64. }
  65. }
  66. _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();
  67. }
  68. private void FillData(List<LimitedTimeGiftBoxItemYxData> listData, int shopCfgId, long endTime)
  69. {
  70. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  71. if (shopCfg == null)
  72. {
  73. Log.Error("shopCfg is null");
  74. return;
  75. }
  76. var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);
  77. if (ltgGbItemData == null)
  78. {
  79. listData.Add(new LimitedTimeGiftBoxItemYxData
  80. {
  81. EndTime = endTime,
  82. ShopCfgId = shopCfg.id,
  83. IndexType = shopCfg.menu2
  84. });
  85. }
  86. else
  87. {
  88. var index = listData.IndexOf(ltgGbItemData);
  89. ltgGbItemData.IndexType = shopCfg.menu2;
  90. ltgGbItemData.EndTime = endTime;
  91. listData[index] = ltgGbItemData;
  92. }
  93. }
  94. //1元礼包是否还可购买
  95. public bool SpecialOfferGiftBoxCanBuy()
  96. {
  97. var activityInfoByTypeList =
  98. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);
  99. var list = activityInfoByTypeList
  100. .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  101. if(list.Count == 0)
  102. return false;
  103. bool isSoldOut = true;
  104. foreach (var activityInfo in list)
  105. {
  106. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
  107. var paramsArr = activityOpenCfg.paramsArr;
  108. foreach (var shopCfgId in paramsArr)
  109. {
  110. var shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  111. var remainBuyNum = shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfgId);
  112. //只要有一个商品还能购买,就不是售罄
  113. if (remainBuyNum > 0)
  114. {
  115. isSoldOut = false;
  116. break;
  117. }
  118. }
  119. }
  120. return !isSoldOut;
  121. }
  122. //获得特惠礼包展示的列表id
  123. public List<int> TryShopCfg()
  124. {
  125. int activityId = 0;
  126. foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
  127. ActivityType.XSLB1))
  128. {
  129. if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow()) {
  130. activityId = activityInfo.ActivityId;
  131. break;
  132. }
  133. }
  134. ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityId);
  135. List<int> shopCfgIds = new List<int>();
  136. bool same = false;
  137. int sellShowId = 0;
  138. var paramsArr = activityOpenCfg.paramsArr;
  139. var params2Arr = activityOpenCfg.params2Arr;
  140. for (int j = 0; j < params2Arr.Length; j++)
  141. {
  142. for (int i = 0; i < paramsArr.Length; i++)
  143. {
  144. if (params2Arr[j] == paramsArr[i])
  145. {
  146. var shopCfg = ShopCfgArray.Instance.GetCfg(paramsArr[i]);
  147. bool isSellOut = shopCfg.maxBuyNum > 0 &&
  148. shopCfg.maxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.id) <= 0;
  149. if (!isSellOut)
  150. sellShowId = paramsArr[i];
  151. break;
  152. }
  153. }
  154. if (sellShowId > 0)
  155. break;
  156. }
  157. if (sellShowId <= 0)
  158. sellShowId = params2Arr[params2Arr.Length - 1];
  159. shopCfgIds.Add(sellShowId);
  160. for (int i = 0; i < paramsArr.Length; i++)
  161. {
  162. same = false;
  163. for (int j = 0; j < params2Arr.Length; j++)
  164. {
  165. if (params2Arr[j] == paramsArr[i])
  166. {
  167. same = true;
  168. break;
  169. }
  170. }
  171. if (!same)
  172. shopCfgIds.Add(paramsArr[i]);
  173. }
  174. return shopCfgIds;
  175. }
  176. }
  177. }