Exemplo n.º 1
0
        private bool UpdateWincountRecord(Guid managerId, int leagueId, int starNumber, ref LeagueWincountrecordEntity leagueWincountRecord)
        {
            if (leagueWincountRecord == null)
            {
                leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId);
            }
            leagueWincountRecord.MaxWinCount += starNumber;
            var winConfig   = CacheFactory.LeagueCache.GetLeagueStar(leagueId);
            var prizeStatus = leagueWincountRecord.PrizeStep.Split(',');

            for (int i = 0; i < winConfig.Count; i++)
            {
                if (prizeStatus.Length < i + 1)
                {
                    prizeStatus[i] = "0";
                }
                if (leagueWincountRecord.MaxWinCount >= winConfig[i].StarNumber)
                {
                    if (prizeStatus[i] == "0")
                    {
                        prizeStatus[i] = "1";
                    }
                }
            }
            leagueWincountRecord.PrizeStep  = string.Join(",", prizeStatus);
            leagueWincountRecord.UpdateTime = DateTime.Now;
            return(true);
        }
Exemplo n.º 2
0
        private MessageCode Tran_SaveWincountPrizePrize(DbTransaction transaction, NbManagerEntity manager, LeagueWincountrecordEntity leagueWincountRecord, ItemPackageFrame package, int point, int coin)
        {
            if (point > 0)
            {
                var code = PayCore.Instance.AddBonus(leagueWincountRecord.ManagerId, point,
                                                     EnumChargeSourceType.LeaguePrize, ShareUtil.GenerateComb().ToString(), transaction);
                if (code != MessageCode.Success)
                {
                    return(code);
                }
            }
            else if (coin > 0)
            {
                var code = ManagerCore.Instance.AddCoin(manager, coin, EnumCoinChargeSourceType.LeaguePrize,
                                                        ShareUtil.GenerateComb().ToString(), transaction);
                if (code != MessageCode.Success)
                {
                    return(code);
                }
            }
            else
            {
                if (!package.Save(transaction))
                {
                    return(MessageCode.FailUpdate);
                }
                package.Shadow.Save();
            }

            if (!LeagueWincountrecordMgr.Update(leagueWincountRecord, transaction))
            {
                return(MessageCode.FailUpdate);
            }
            return(MessageCode.Success);
        }
Exemplo n.º 3
0
 private MessageCode SaveMatchConfirm(NbManagerEntity manager, ItemPackageFrame package, LeagueRecordEntity leagueRecordInfo,
                                      LeagueManagerrecordEntity nextManagerRecord, LeagueManagerrecordEntity leagueManagerRecord, int point,
                                      bool isUpdatenextManagerRecord, LaegueManagerinfoEntity leagueManagerInfo, LeagueFightMapFrame fightMap, NbManagerextraEntity managerExtra, LeagueWincountrecordEntity leagueWinCount, DbTransaction trans)
 {
     if (!ManagerUtil.SaveManagerData(manager, managerExtra, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!NbManagerextraMgr.Update(managerExtra, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (package != null)
     {
         if (!package.Save(trans))
         {
             return(MessageCode.NbUpdateFail);
         }
         package.Shadow.Save();
     }
     if (!LeagueRecordMgr.Update(leagueRecordInfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (isUpdatenextManagerRecord)
     {
         if (nextManagerRecord != null)
         {
             if (!LeagueManagerrecordMgr.Update(nextManagerRecord, trans))
             {
                 return(MessageCode.NbUpdateFail);
             }
         }
     }
     if (!LaegueManagerinfoMgr.Update(leagueManagerInfo, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueManagerrecordMgr.Update(leagueManagerRecord, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (point > 0)
     {
         var code = PayCore.Instance.AddBonus(manager.Idx, point, EnumChargeSourceType.LeaguePrize,
                                              ShareUtil.GenerateComb().ToString(), trans);
         return(code);
     }
     if (!fightMap.SaveFIghtMap(trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     if (!LeagueWincountrecordMgr.Update(leagueWinCount, trans))
     {
         return(MessageCode.NbUpdateFail);
     }
     return(MessageCode.Success);
 }
Exemplo n.º 4
0
 /// <summary>
 /// 获取联赛情况
 /// </summary>
 /// <param name="managerId"></param>
 /// <param name="leagueId"></param>
 /// <param name="currectLeague"></param>
 /// <returns></returns>
 public GetLeagueInfoResponse GetLeagueInfo(Guid managerId, int leagueId, LeagueManagerrecordEntity currectLeague)
 {
     try
     {
         if (currectLeague == null)
         {
             currectLeague = LeagueManagerrecordMgr.GetManagerMarkInfo(managerId, leagueId);
         }
         if (currectLeague == null)
         {
             SystemlogMgr.Error("获取联赛信息", "经理联赛记录未找到ManagerId:" + managerId);
             return(ResponseHelper.InvalidParameter <GetLeagueInfoResponse>());
         }
         var leagueRecord = LeagueRecordMgr.GetById(currectLeague.LeagueRecordId);
         //获取胜场
         var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, currectLeague.LaegueId);
         var winConfig            = CacheFactory.LeagueCache.GetLeagueStar(leagueId);
         var winList     = new List <LeagueWinCountInfo>();
         var prizeStatus = leagueWincountRecord.PrizeStep.Split(',');
         foreach (var item in winConfig)
         {
             LeagueWinCountInfo entity = new LeagueWinCountInfo();
             entity.PrizeLevel = item.PrizeLevel;
             if (prizeStatus.Length >= item.PrizeLevel)
             {
                 entity.PrizeStatus = ConvertHelper.ConvertToInt(prizeStatus[item.PrizeLevel - 1]);
             }
             winList.Add(entity);
         }
         //获取排名
         var leagueFightMap = new LeagueFightMapFrame(managerId);
         int myRank         = 0;
         int myScore        = 0;
         var rankList       = leagueFightMap.GetRank(ref myRank, ref myScore);
         var response       = ResponseHelper.CreateSuccess <GetLeagueInfoResponse>();
         response.Data = new LeagueInfoEntity();
         if (leagueRecord.Schedule > currectLeague.MaxWheelNumber)
         {
             response.Data.IsHaveReturnMain = true;
             leagueRecord.Schedule          = currectLeague.MaxWheelNumber;
         }
         response.Data.LeagueInfo           = currectLeague;
         response.Data.MyWinCount           = leagueWincountRecord.MaxWinCount;
         response.Data.LeagueRecord         = leagueRecord;
         response.Data.LeagueWincountRecord = winList;
         response.Data.MyRank            = myRank;
         response.Data.RankList          = rankList;
         response.Data.IsHaveStartLeague = true;
         return(response);
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("联赛-获取联赛信息", ex);
         return(ResponseHelper.InvalidParameter <GetLeagueInfoResponse>());
     }
 }
Exemplo n.º 5
0
        public LeagueWincountrecordResponse GetWincountPrizeInfo(Guid managerId, int leagueId)
        {
            var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId);

            if (leagueWincountRecord == null)
            {
                return(ResponseHelper.InvalidParameter <LeagueWincountrecordResponse>());
            }
            var response = ResponseHelper.CreateSuccess <LeagueWincountrecordResponse>();

            response.Data = leagueWincountRecord;
            return(response);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 重置联赛
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="leagueId"></param>
        /// <returns></returns>
        public MessageCodeResponse ResetLeague(Guid managerId, int leagueId)
        {
            var currectLeague = LeagueManagerrecordMgr.GetManagerMarkInfo(managerId, leagueId);

            if (currectLeague == null)
            {
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
            }

            var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId);

            if (leagueWincountRecord != null)
            {
                //获取所有奖励
                var winPrize = CacheFactory.LeagueCache.GetLeagueStar(leagueId);
                if (winPrize == null || winPrize.Count <= 0)
                {
                    return(ResponseHelper.InvalidParameter <MessageCodeResponse>());
                }
                var prizeStatus = leagueWincountRecord.PrizeStep.Split(',');
                foreach (var item in prizeStatus)
                {
                    if (item == "1")
                    {
                        return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.LeaguePrizeNotGet));
                    }
                }
            }
            int price = 50;

            if (currectLeague.IsPass)
            {
                price = 0;
            }
            int point = PayCore.Instance.GetPoint(managerId);

            if (point < price) //重置联赛消耗点券数
            {
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbPointShortage));
            }
            var code = LeagueProcess.Instance.ResetLeague(managerId, leagueId, price);

            return(ResponseHelper.Create <MessageCodeResponse>(code));
        }
Exemplo n.º 7
0
        /// <summary>
        /// 开启一个新的联赛
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="leagueId"></param>
        /// <param name="leagueManagerRecord"></param>
        /// <returns></returns>
        public MessageCode StartLeague(Guid managerId, int leagueId, ref LeagueManagerrecordEntity leagueManagerRecord)
        {
            var recordList = LeagueManagerrecordMgr.GetManagerAllMark(managerId);

            foreach (var record in recordList)
            {
                if (record.LaegueId == leagueId)
                {
                    leagueManagerRecord = record;
                }
                if (record.IsStart)
                {
                    return(MessageCode.LeagueHasStart);
                }
            }
            if (leagueManagerRecord == null)
            {
                return(MessageCode.NbParameterError);
            }
            if (leagueManagerRecord.IsLock)
            {
                return(MessageCode.LeagueIdMarkNotLock);
            }
            #region 去掉等级限制
            //var openLevel= LeagueCache.Instance.GetLeagueOpenLevel(leagueId);
            //if (openLevel == -1)
            //    return MessageCode.NbParameterError;
            //var manager = ManagerCore.Instance.GetManager(managerId);
            //if(manager==null)
            //    return MessageCode.NbParameterError;
            //if(manager.Level<openLevel)
            //    return MessageCode.LeagueIdMarkNotLock;
            #endregion
            DateTime date           = DateTime.Now;
            var      leagueRecordId = ShareUtil.GenerateComb();
            leagueManagerRecord.LeagueRecordId = leagueRecordId;
            //info.LastPrizeLeagueRecordId = new Guid();
            leagueManagerRecord.IsPass       = false;
            leagueManagerRecord.IsStart      = true;
            leagueManagerRecord.MatchNumber  = 0;
            leagueManagerRecord.Score        = 0;
            leagueManagerRecord.WinNumber    = 0;
            leagueManagerRecord.FlatNumber   = 0;
            leagueManagerRecord.LoseNumber   = 0;
            leagueManagerRecord.GoalsNumber  = 0;
            leagueManagerRecord.FumbleNumber = 0;
            leagueManagerRecord.UpdateTime   = date;

            var npcCount   = CacheFactory.LeagueCache.GetTeamCount(leagueId);
            var templateId = CacheFactory.LeagueCache.GetTemplateId(npcCount + 1);
            leagueManagerRecord.MaxWheelNumber = npcCount * 2;//总轮数
            leagueManagerRecord.FightDicId     = templateId;

            LeagueRecordEntity entity = new LeagueRecordEntity(leagueRecordId, managerId, leagueId, 1, 0, 0, false, date, date, ShareUtil.BaseTime);
            entity.Idx        = leagueRecordId;
            entity.ManagerId  = managerId;
            entity.LaegueId   = leagueId;
            entity.IsSend     = false;
            entity.Rank       = -1;
            entity.RowTime    = date;
            entity.Schedule   = 1;
            entity.UpdateTime = date;
            entity.Score      = 0;
            var leagueWinCount = LeagueWincountrecordMgr.GetRecord(managerId, leagueId);
            if (leagueWinCount != null)
            {
                if (leagueWinCount.PrizeDate.Date != DateTime.Now.Date)
                {
                    leagueWinCount.WinCount1Status = 0;
                    leagueWinCount.WinCount2Status = 0;
                    leagueWinCount.WinCount3Status = 0;
                    leagueWinCount.UpdateTime      = DateTime.Now;
                    leagueWinCount.PrizeDate       = DateTime.Now;
                    leagueWinCount.PrizeStep       = "0,0,0,0,0";
                }
                leagueWinCount.MaxWinCount = 0;
            }
            //更新当前联赛记录
            if (!LeagueManagerrecordMgr.Update(leagueManagerRecord))
            {
                return(MessageCode.FailUpdate);
            }
            if (!LeagueRecordMgr.Insert(entity))
            {
                return(MessageCode.FailUpdate);
            }
            var figMap = new LeagueFightMapFrame(managerId);
            figMap.ClearFightMapStartLeague(npcCount + 1);
            if (leagueWinCount != null)
            {
                if (!LeagueWincountrecordMgr.Update(leagueWinCount))
                {
                    return(MessageCode.FailUpdate);
                }
            }
            return(MessageCode.Success);
        }
Exemplo n.º 8
0
        public LeaguePrizeResponse GetWincountPrize(Guid managerId, int leagueId, int countType)
        {
            var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId);

            if (leagueWincountRecord == null)
            {
                return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>());
            }
            //获取所有奖励
            var winPrize = CacheFactory.LeagueCache.GetLeagueStar(leagueId);

            if (winPrize == null || winPrize.Count <= 0)
            {
                return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>());
            }
            //获取这一档的奖励
            var prizeInfo = winPrize.Find(r => r.PrizeLevel == countType);

            if (prizeInfo == null)
            {
                return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>());
            }
            var prizeStatus = leagueWincountRecord.PrizeStep.Split(',');

            if (prizeStatus.Length < countType || prizeStatus[countType - 1] == "0")
            {
                return(ResponseHelper.Create <LeaguePrizeResponse>(MessageCode.LeagueWincountPrizeCannotReceive));
            }
            if (prizeStatus[countType - 1] == "2")
            {
                return(ResponseHelper.Create <LeaguePrizeResponse>(MessageCode.LeagueWincountPrizeReceived));
            }
            prizeStatus[countType - 1] = "2";
            var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.LeaguePrize);

            if (package == null)
            {
                return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>());
            }
            int             point   = 0;
            int             coin    = 0;
            NbManagerEntity manager = null;

            if (prizeInfo.PrizeType == (int)EnumActivityExPrizeType.Item) //道具
            {
                var result = package.AddItems(prizeInfo.SubType, prizeInfo.Count, 1, false, false);
                if (result != MessageCode.Success)
                {
                    return(ResponseHelper.Create <LeaguePrizeResponse>(result));
                }
            }
            else if (prizeInfo.PrizeType == (int)EnumActivityExPrizeType.Point)

            {
                point = prizeInfo.Count;
            }
            else if (prizeInfo.PrizeType == (int)EnumActivityExPrizeType.Coin)
            {
                coin   += prizeInfo.Count;
                manager = ManagerCore.Instance.GetManager(managerId);
                if (manager == null)
                {
                    return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>());
                }
            }
            leagueWincountRecord.PrizeStep  = string.Join(",", prizeStatus);
            leagueWincountRecord.UpdateTime = DateTime.Now;
            //获取奖励
            var prizeInfoResponse = new LeaguePrizeEntity()
            {
                PrizeType = prizeInfo.PrizeType,
                Count     = prizeInfo.Count
            };

            var code = SaveWincountPrize(manager, leagueWincountRecord, package, point, coin);

            if (code != MessageCode.Success)
            {
                return(ResponseHelper.Create <LeaguePrizeResponse>(code));
            }

            var response = ResponseHelper.CreateSuccess <LeaguePrizeResponse>();

            response.Data = new LeaguePrizes()
            {
                PrizeList = new List <LeaguePrizeEntity>()
            };
            response.Data.PrizeList.Add(prizeInfoResponse);

            return(response);
        }