示例#1
0
        /// <summary>
        /// 累计消费送礼
        /// </summary>
        public static void PayAccumulation(string userID, int consumeNum)
        {
            FestivalInfo fest = GetInfo(FestivalType.PayAccumulation);

            if (fest == null)
            {
                return;
            }
            var         cacheSet    = new PersonalCacheStruct <UserConsume>();
            UserConsume userConsume = cacheSet.FindKey(userID);

            if (userConsume == null)
            {
                userConsume           = new UserConsume();
                userConsume.UserID    = userID;
                userConsume.GameCoin  = 0;
                userConsume.GoldNum   = 0;
                userConsume.EnergyNum = 0;
                cacheSet.Add(userConsume);
                cacheSet.Update();
                userConsume = new PersonalCacheStruct <UserConsume>().FindKey(userID);
            }
            if (userConsume.GoldDate < fest.StartDate)
            {
                userConsume.GoldDate = fest.StartDate;
                userConsume.GoldNum  = consumeNum;
            }
            else
            {
                userConsume.GoldNum = MathUtils.Addition(userConsume.GoldNum, consumeNum);
            }
            var cacheSetRestrain = new PersonalCacheStruct <FestivalRestrain>();
            var festivalList     = new ShareCacheStruct <FestivalInfo>().FindAll(s => s.FestivalType == FestivalType.PayAccumulation);

            foreach (var info in festivalList)
            {
                if (!info.IsStop)
                {
                    continue;
                }
                if (info.StartDate > DateTime.Now)
                {
                    continue;
                }
                if (info.EndDate < DateTime.Now)
                {
                    continue;
                }
                if (info.FestivalType == FestivalType.PayAccumulation)
                {
                    FestivalRestrain fRest = cacheSetRestrain.FindKey(userID, info.FestivalID);
                    if (fRest != null && userConsume.GoldNum >= info.RestrainNum)
                    {
                        AppendFestivalRestrain(userID, fest.FestivalID, fest.RestrainNum);
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 累计消费活动
        /// </summary>
        public static void TriggerFestivalConsume(string userID, int consumeNum, FestivalType festivalType)
        {
            FestivalInfo fest = GetInfo(festivalType);

            if (fest == null)
            {
                return;
            }
            var         cacheSet    = new PersonalCacheStruct <UserConsume>();
            UserConsume userConsume = cacheSet.FindKey(userID);

            if (userConsume == null)
            {
                userConsume           = new UserConsume();
                userConsume.UserID    = userID;
                userConsume.GameCoin  = 0;
                userConsume.GoldNum   = 0;
                userConsume.EnergyNum = 0;
                cacheSet.Add(userConsume);
                cacheSet.Update();
                userConsume = new PersonalCacheStruct <UserConsume>().FindKey(userID);
            }
            //晶石
            if (festivalType == FestivalType.SparConsumption)
            {
                if (userConsume.GoldDate < fest.StartDate)
                {
                    userConsume.GoldDate = fest.StartDate;
                    userConsume.GoldNum  = consumeNum;
                }
                else
                {
                    userConsume.GoldNum = MathUtils.Addition(userConsume.GoldNum, consumeNum);
                }
            }

            //金币
            if (festivalType == FestivalType.GameCoin)
            {
                if (userConsume.CoinDate < fest.StartDate)
                {
                    userConsume.CoinDate = fest.StartDate;
                    userConsume.GameCoin = consumeNum;
                }
                else
                {
                    userConsume.GameCoin = MathUtils.Addition(userConsume.GameCoin, consumeNum);
                }
            }

            //精力
            if (festivalType == FestivalType.Energy)
            {
                if (userConsume.EnergyDate < fest.StartDate)
                {
                    userConsume.EnergyDate = fest.StartDate;
                    userConsume.EnergyNum  = consumeNum;
                }
                else
                {
                    userConsume.EnergyNum = MathUtils.Addition(userConsume.EnergyNum, consumeNum);
                }
            }
            FestivalInfo[] festivalInfosArray =
                new ShareCacheStruct <FestivalInfo>().FindAll(m => m.FestivalType == festivalType).ToArray();
            foreach (FestivalInfo festivalInfo in festivalInfosArray)
            {
                FestivalConsumeCount(festivalInfo, userID);
            }
        }