LimitedTimeGiftBoxDataManager.cs 8.7 KB

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