Example #1
0
 /// <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;
     }
 }
Example #2
0
        /// <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); //每月礼包
        }