예제 #1
0
        /// <summary>
        /// 触发充值礼包
        /// </summary>
        public static void TriggerReceivePack(string userID, int packType, int gameCoin)
        {
            PackageReceive       receive             = new PackageReceive();
            List <RechargePacks> rechargePackseArray = new ConfigCacheSet <RechargePacks>().FindAll(m => m.PacksType == packType);

            foreach (RechargePacks rechargePackse in rechargePackseArray)
            {
                if (rechargePackse.RechargeNum <= gameCoin)
                {
                    receive.ReceiveID   = Guid.NewGuid().ToString();
                    receive.PacksID     = rechargePackse.PacksID;
                    receive.UserID      = userID;
                    receive.IsReceive   = false;
                    receive.ReceiveDate = DateTime.Now;
                    new GameDataCacheSet <PackageReceive>().Add(receive);
                }
            }
        }
예제 #2
0
        public static void TriggerMonthPack(string userID, int gameCoin)
        {
            int packType = 4;
            List <RechargePacks> rechargePackseArray = new ShareCacheStruct <RechargePacks>().FindAll(m => m.PacksType == packType);

            foreach (RechargePacks rechargePackse in rechargePackseArray)
            {
                if (rechargePackse.RechargeNum <= gameCoin)
                {
                    List <PackageReceive> packageReceivess = new PersonalCacheStruct <PackageReceive>().FindAll(userID, m => m.PacksID == rechargePackse.PacksID);
                    if (packageReceivess.Count == 0)
                    {
                        PackageReceive receive = new PackageReceive();
                        receive.ReceiveID   = Guid.NewGuid().ToString();
                        receive.PacksID     = rechargePackse.PacksID;
                        receive.UserID      = userID;
                        receive.IsReceive   = false;
                        receive.ReceiveDate = DateTime.Now;
                        new PersonalCacheStruct <PackageReceive>().Add(receive);
                    }
                    else if (!IsHaveMonth(packageReceivess))
                    {
                        PackageReceive receive = packageReceivess[0];

                        if (receive.IsReceive)
                        {
                            receive.IsReceive   = false;
                            receive.ReceiveDate = DateTime.Now;
                            //receive.Update();
                        }


                        var cacheSet = new PersonalCacheStruct <PackageReceive>();
                        for (int i = 1; i <= packageReceivess.Count - 1; i++)
                        {
                            cacheSet.Delete(packageReceivess[i]);
                        }
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// 触发充值礼包
        /// </summary>
        public static void TriggerReceivePack(string userID, int packType, int gameCoin)
        {
            List <RechargePacks> rechargePackseArray = new ShareCacheStruct <RechargePacks>().FindAll(m => m.PacksType == packType);

            foreach (RechargePacks rechargePackse in rechargePackseArray)
            {
                List <PackageReceive> packageReceivess = new PersonalCacheStruct <PackageReceive>().FindAll(userID, m => m.PacksID == rechargePackse.PacksID);
                if (packageReceivess.Count == 0)
                {
                    if (rechargePackse.RechargeNum <= gameCoin)
                    {
                        PackageReceive receive = new PackageReceive();
                        receive.ReceiveID   = Guid.NewGuid().ToString();
                        receive.PacksID     = rechargePackse.PacksID;
                        receive.UserID      = userID;
                        receive.IsReceive   = false;
                        receive.ReceiveDate = DateTime.Now;
                        new PersonalCacheStruct <PackageReceive>().Add(receive);
                    }
                }
            }
        }
예제 #4
0
        public static void TriggerWeekPack(string userID, int gameCoin)
        {
            int packType = 3;
            List <RechargePacks> rechargePackseArray = new ConfigCacheSet <RechargePacks>().FindAll(m => m.PacksType == packType);

            foreach (RechargePacks rechargePackse in rechargePackseArray)
            {
                if (rechargePackse.RechargeNum <= gameCoin)
                {
                    var packCacheSet = new GameDataCacheSet <PackageReceive>();
                    List <PackageReceive> packageReceivess = packCacheSet.FindAll(userID, m => m.PacksID == rechargePackse.PacksID);
                    if (packageReceivess.Count == 0)
                    {
                        PackageReceive receive = new PackageReceive();
                        receive.ReceiveID   = Guid.NewGuid().ToString();
                        receive.PacksID     = rechargePackse.PacksID;
                        receive.UserID      = userID;
                        receive.IsReceive   = false;
                        receive.ReceiveDate = DateTime.Now;
                        packCacheSet.Add(receive, GameEnvironment.CacheUserPeriod);
                    }
                    else if (!IsHaveWeek(packageReceivess))
                    {
                        PackageReceive receive = packageReceivess[0];

                        if (receive.IsReceive)
                        {
                            receive.IsReceive   = false;
                            receive.ReceiveDate = DateTime.Now;
                            //receive.Update();
                        }
                        for (int i = 1; i <= packageReceivess.Count - 1; i++)
                        {
                            packCacheSet.Delete(packageReceivess[i]);
                        }
                    }
                }
            }
        }
예제 #5
0
        public override bool TakeAction()
        {
            //判断充值礼包是否开启
            FestivalInfo festivalInfo = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID);

            if (festivalInfo != null && !festivalInfo.IsStop)
            {
                return(false);
            }

            UserRecharge         recharges   = new GameDataCacheSet <UserRecharge>().FindKey(ContextUser.UserID);
            RechargePacks        rePacksInfo = new ConfigCacheSet <RechargePacks>().FindKey(_packsID);
            List <PackageReward> rewardArray = new List <PackageReward>();

            if (rePacksInfo != null)
            {
                rewardArray = rePacksInfo.Reward.ToList();
                var userItemArray = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);
                int subPackNum    = MathUtils.Subtraction(ContextUser.GridNum, userItemArray.Count, 0);
                if (rewardArray.Count > subPackNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                    return(false);
                }
            }
            else
            {
                return(false);
            }
            if (!isRecevies(ContextUser.UserID, _packsID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived;
                return(false);
            }
            List <PackageReceive> receiveArray = new GameDataCacheSet <PackageReceive>().FindAll(ContextUser.UserID, m => m.PacksID == _packsID);

            bool           isRece   = false;
            PackageReceive pReceive = null;

            foreach (PackageReceive receive in receiveArray)
            {
                if (!receive.IsReceive)
                {
                    isRece            = true;
                    receive.IsReceive = true;
                    pReceive          = receive;
                    break;
                }
            }
            if (pReceive == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived;
                return(false);
            }


            pReceive.IsReceive   = true;
            pReceive.ReceiveDate = DateTime.Now;
            //pReceive.Update();


            if (pReceive.PacksType == 1 && recharges != null && isRece)
            {
                int totalPay = (int)(recharges.FirstNum * rePacksInfo.ProportionNum);
                if (totalPay >= 1)
                {
                    ContextUser.ItemGold = MathUtils.Addition(ContextUser.ItemGold, totalPay, int.MaxValue);
                    //ContextUser.Update();
                }
                //ContextUser.PayGold = ContextUser.PayGold.Addition(recharges.FirstNum, int.MaxValue);

                foreach (PackageReward reward in rewardArray)
                {
                    UserItemHelper.AddUserItem(ContextUser.UserID, reward.Num, 1);
                }
            }
            else if (recharges != null && isRece)
            {
                foreach (PackageReward reward in rewardArray)
                {
                    if (reward.Type == 2)
                    {
                        ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 3)
                    {
                        ContextUser.ExpNum = MathUtils.Addition(ContextUser.ExpNum, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 4)
                    {
                        ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 5)
                    {
                        ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, reward.Num.ToShort(), short.MaxValue);
                    }
                    else if (reward.Type == 6)
                    {
                        GameUserExtend extend = ContextUser.UserExtend;
                        extend.GainBlessing = MathUtils.Addition(extend.GainBlessing, reward.Num, int.MaxValue);

                        //List<GuildMember> memberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID ==  ContextUser.UserID);
                        //if (memberArray.Length > 0)
                        //{
                        //    memberArray[0].GainBlessing = memberArray[0].GainBlessing.Addition(reward.Num, int.MaxValue);
                        //    memberArray[0].Update();
                        //}
                    }
                    //ContextUser.Update();
                }
            }

            PackageReceiveLog receiveLog = new PackageReceiveLog()
            {
                LogID       = Guid.NewGuid().ToString(),
                ReceiveID   = receiveArray[0].ReceiveID,
                PacksID     = _packsID,
                UserID      = ContextUser.UserID,
                ReceiveDate = DateTime.Now,
            };
            var sender = DataSyncManager.GetDataSender();

            sender.Send(receiveLog);
            return(true);
        }