/// <summary> /// 累计充值活动 /// </summary> private static void TriggerFestivalPack(UserRecharge userRecharge, int GameCoins) { FestivalInfo fest = FestivalHelper.GetInfo(FestivalType.PayCount); if (fest == null) { return; } if (userRecharge.FestivalDate == null || userRecharge.FestivalDate < fest.StartDate) { userRecharge.FestivalDate = fest.StartDate; userRecharge.FestivalCount = GameCoins; } else { userRecharge.FestivalCount += GameCoins; } }
/// <summary> /// 处理礼包 /// </summary> /// <param name="userID"></param> /// <param name="order"></param> private static void DoGiff(string userID, OrderInfo order) { int packType = 0; List<PackageReceive> packageReceivess = new List<PackageReceive>(); UserRechargeLog rechargeLog = new UserRechargeLog { LogID = Guid.NewGuid().ToString(), UserID = userID, OrderNo = order.OrderNO, ChargeAmount = order.Amount, PayGold = order.GameCoins, ReargeDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(rechargeLog); UserRecharge recharge = new GameDataCacheSet<UserRecharge>().FindKey(userID); if (recharge == null) { recharge = new UserRecharge() { UserID = userID }; } //处理充值活动 recharge.LastNum = order.GameCoins; TriggerFestivalPack(recharge, order.GameCoins); if (IsCurrentWeek(recharge.ChargeDate)) { recharge.WeekNum = MathUtils.Addition(recharge.WeekNum, order.GameCoins, int.MaxValue); } else { recharge.WeekNum = order.GameCoins; } if (recharge.ChargeDate.Month == DateTime.Now.Month) { recharge.MonthNum = MathUtils.Addition(recharge.MonthNum, order.GameCoins, int.MaxValue); } else { recharge.MonthNum = order.GameCoins; } recharge.TotalGoldNum = MathUtils.Addition(recharge.TotalGoldNum, order.GameCoins, int.MaxValue); recharge.ChargeDate = DateTime.Now; var rechargeCacheSet = new GameDataCacheSet<UserRecharge>(); if (rechargeCacheSet.FindKey(userID) == null) { packType = 1; recharge.FirstNum = order.GameCoins; TriggerReceivePack(userID, packType, recharge.FirstNum); rechargeCacheSet.Add(recharge, GameEnvironment.CacheUserPeriod); FestivalHelper.GetFirstReward(userID, FestivalType.FirstReward); GameUser userInfo = new GameDataCacheSet<GameUser>().FindKey(userID); if (userInfo != null) { FestivalHelper.GetPayReward(userInfo, order.GameCoins, FestivalType.FirstPayDoubleSpar); } } //触发总累计充值礼包 packType = 2; TriggerReceivePack(userID, packType, recharge.TotalGoldNum); List<RechargePacks> rechargePackseArray = new ConfigCacheSet<RechargePacks>().FindAll(m => m.PacksType == packType); foreach (RechargePacks rechargePackse in rechargePackseArray) { RemoveCharge(userID, rechargePackse.PacksID); } TriggerWeekPack(userID, recharge.WeekNum); //每周礼包 TriggerMonthPack(userID, recharge.MonthNum); //每月礼包 }