LimitedTimeGiftBoxDataManager.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Concurrent;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using ET;
  7. using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
  8. using UI.DressUp;
  9. namespace GFGGame
  10. {
  11. public class LimitedTimeGiftBoxDataManager : SingletonBase<LimitedTimeGiftBoxDataManager>
  12. {
  13. //测试数据定义--等之后搞好活动有效期组件之后,再替换成真实数据 <活动id,活动结束时间戳精确到秒> --假设这个就是我排好序的活动列表
  14. private Dictionary<int, ActivityOpenData> _activityOpenEndTimeDic = new Dictionary<int, ActivityOpenData>();
  15. public Dictionary<int, ActivityOpenData> ActivityOpenEndTimeDic => _activityOpenEndTimeDic;
  16. //列表数据3--等级条件的数据
  17. private List<LimitedTimeGiftBoxItemData> _ltgGbItemData3 = new List<LimitedTimeGiftBoxItemData>();
  18. public List<LimitedTimeGiftBoxItemData> LtgGbItemData3 => _ltgGbItemData3;
  19. //圆形样式数据4--等级条件的数据
  20. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData4 = new List<LimitedTimeGiftBoxItemYxData>();
  21. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData4 => _ltgGbItemData4;
  22. //圆形样式数据5--时间条件的数据
  23. private List<LimitedTimeGiftBoxItemYxData> _ltgGbItemData5 = new List<LimitedTimeGiftBoxItemYxData>();
  24. public List<LimitedTimeGiftBoxItemYxData> LtgGbItemData5 => _ltgGbItemData5;
  25. // public void InitData()
  26. // {
  27. // _activityOpenEndTimeDic.Clear();
  28. // _ltgGbItemData3.Clear();
  29. // _ltgGbItemData4.Clear();
  30. // _ltgGbItemData5.Clear();
  31. // }
  32. public void UpAllData()
  33. {
  34. //UpActivityOpenEndTimeDic(); //等之后搞好活动有效期组件之后,再替换成真实数据的更新
  35. UpLtgGbItemData3();
  36. UpLtgGbItemData4();
  37. UpLtgGbItemData5();
  38. }
  39. public void UpLtgGbItemData3()
  40. {
  41. _ltgGbItemData3.Clear();
  42. foreach (var itemKv in _activityOpenEndTimeDic)
  43. {
  44. if (itemKv.Value.ActivityEndTime >= TimeInfo.Instance.ServerNow())
  45. {
  46. ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData;
  47. //判断是否是类型3的数据
  48. if (activityOpenCfg.type == ConstActivityType.ActLimitGiftShByLevel)
  49. {
  50. var paramsArr = activityOpenCfg.paramsArr;
  51. Array.Sort(paramsArr);
  52. foreach (var shopCfgId in paramsArr)
  53. {
  54. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  55. if (shopCfg == null)
  56. {
  57. Log.Error("shopCfg is null");
  58. continue;
  59. }
  60. LimitedTimeGiftBoxItemData ltgGbItemData =
  61. _ltgGbItemData3.FirstOrDefault(a => a.IndexType == shopCfg.menu2);
  62. if (ltgGbItemData != null)
  63. {
  64. if (ltgGbItemData.ShopCfgIds != null)
  65. {
  66. if (ltgGbItemData.ShopCfgIds.Count < 3)
  67. {
  68. ltgGbItemData.ShopCfgIds.Add(shopCfgId);
  69. }
  70. }
  71. else
  72. {
  73. ltgGbItemData.ShopCfgIds = new List<int> { shopCfgId };
  74. }
  75. ltgGbItemData.EndTime = itemKv.Value.ActivityEndTime;
  76. _ltgGbItemData3.Add(ltgGbItemData);
  77. }
  78. else
  79. {
  80. ltgGbItemData = new LimitedTimeGiftBoxItemData
  81. {
  82. IndexType = shopCfg.menu2,
  83. ShopCfgIds = new List<int> { shopCfgId },
  84. EndTime = itemKv.Value.ActivityEndTime
  85. };
  86. _ltgGbItemData3.Add(ltgGbItemData);
  87. }
  88. }
  89. }
  90. }
  91. }
  92. _ltgGbItemData3 = _ltgGbItemData3.OrderBy(a => a.IndexType).ToList();
  93. }
  94. public void UpLtgGbItemData4()
  95. {
  96. _ltgGbItemData4.Clear();
  97. foreach (var itemKv in _activityOpenEndTimeDic)
  98. {
  99. if (itemKv.Value.ActivityEndTime >= TimeInfo.Instance.ServerNow())
  100. {
  101. ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData;
  102. //判断是否是类型4的数据
  103. if (activityOpenCfg.type == ConstActivityType.ActLimitGiftYxByLevel)
  104. {
  105. foreach (var shopCfgId in activityOpenCfg.paramsArr)
  106. {
  107. FillData(_ltgGbItemData4, shopCfgId, itemKv.Value.ActivityEndTime);
  108. }
  109. }
  110. }
  111. }
  112. _ltgGbItemData4 = _ltgGbItemData4.OrderBy(a => a.ShopCfgId).ToList();
  113. }
  114. public void UpLtgGbItemData5()
  115. {
  116. _ltgGbItemData5.Clear();
  117. foreach (var itemKv in _activityOpenEndTimeDic)
  118. {
  119. if (itemKv.Value.ActivityEndTime >= TimeInfo.Instance.ServerNow())
  120. {
  121. ActivityOpenCfg activityOpenCfg = itemKv.Value.ActivityOpenCfgData;
  122. //判断是否是类型4的数据
  123. if (activityOpenCfg.type == ConstActivityType.ActLimitGiftYxByTime)
  124. {
  125. FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], itemKv.Value.ActivityEndTime);
  126. }
  127. }
  128. }
  129. _ltgGbItemData5 = _ltgGbItemData5.OrderBy(a => a.ShopCfgId).ToList();
  130. }
  131. private void FillData(List<LimitedTimeGiftBoxItemYxData> listData, int shopCfgId, long endTime)
  132. {
  133. ShopCfg shopCfg = ShopCfgArray.Instance.GetCfg(shopCfgId);
  134. if (shopCfg == null)
  135. {
  136. Log.Error("shopCfg is null");
  137. return;
  138. }
  139. var ltgGbItemData = listData.FirstOrDefault(a => a.ShopCfgId == shopCfgId);
  140. if (ltgGbItemData == null)
  141. {
  142. listData.Add(new LimitedTimeGiftBoxItemYxData
  143. {
  144. EndTime = endTime,
  145. ShopCfgId = shopCfg.id,
  146. IndexType = shopCfg.menu2
  147. });
  148. }
  149. else
  150. {
  151. var index = listData.IndexOf(ltgGbItemData);
  152. ltgGbItemData.IndexType = shopCfg.menu2;
  153. ltgGbItemData.EndTime = endTime;
  154. listData[index] = ltgGbItemData;
  155. }
  156. }
  157. }
  158. }