LimitedTimeGiftBoxDataManager.cs 8.4 KB

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