예제 #1
0
 MessageCode SaveExchange(CrossladderManagerEntity ladderManager, ItemPackageFrame package, CrossladderExchangerecordEntity ladderExchangerecord)
 {
     if (ladderManager == null || package == null || ladderExchangerecord == null)
     {
         return(MessageCode.NbUpdateFail);
     }
     try
     {
         if (!CrossladderManagerMgr.Update(ladderManager))
         {
             return(MessageCode.NbUpdateFail);
         }
         if (!package.Save())
         {
             return(MessageCode.NbUpdateFail);
         }
         if (!CrossladderExchangerecordMgr.Insert(ladderExchangerecord))
         {
             return(MessageCode.NbUpdateFail);
         }
         return(MessageCode.Success);
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("CrossLadder-SaveExchange", ex);
         return(MessageCode.Exception);
     }
 }
예제 #2
0
        /// <summary>
        /// 将IDataReader的当前记录读取到CrossladderManagerEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public CrossladderManagerEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new CrossladderManagerEntity();

            obj.ManagerId        = (System.Guid)reader["ManagerId"];
            obj.DomainId         = (System.Int32)reader["DomainId"];
            obj.Name             = (System.String)reader["Name"];
            obj.Logo             = (System.String)reader["Logo"];
            obj.Kpi              = (System.Int32)reader["Kpi"];
            obj.SiteId           = (System.String)reader["SiteId"];
            obj.SiteName         = (System.String)reader["SiteName"];
            obj.Score            = (System.Int32)reader["Score"];
            obj.NewlyScore       = (System.Int32)reader["NewlyScore"];
            obj.NewlyHonor       = (System.Int32)reader["NewlyHonor"];
            obj.Honor            = (System.Int32)reader["Honor"];
            obj.NewlyLadderCoin  = (System.Int32)reader["NewlyLadderCoin"];
            obj.LadderCoin       = (System.Int32)reader["LadderCoin"];
            obj.MaxScore         = (System.Int32)reader["MaxScore"];
            obj.MatchTime        = (System.Int32)reader["MatchTime"];
            obj.LastExchageTime  = (System.DateTime)reader["LastExchageTime"];
            obj.Status           = (System.Int32)reader["Status"];
            obj.RowTime          = (System.DateTime)reader["RowTime"];
            obj.UpdateTime       = (System.DateTime)reader["UpdateTime"];
            obj.RowVersion       = (System.Byte[])reader["RowVersion"];
            obj.DailyMaxScore    = (System.Int32)reader["DailyMaxScore"];
            obj.DailyMaxAddScore = (System.Int32)reader["DailyMaxAddScore"];
            obj.Stamina          = (System.Int32)reader["Stamina"];
            obj.StaminaBuy       = (System.Int32)reader["StaminaBuy"];

            return(obj);
        }
예제 #3
0
 public CrossladderManagerResponse GetLadderManager(string siteId, Guid managerId)
 {
     try
     {
         var ladderManager = CrossladderManagerMgr.GetById(managerId);
         if (ladderManager == null)
         {
             if (!ManagerUtil.CheckFunction(siteId, managerId, EnumOpenFunction.CrossLadder))
             {
                 return(ResponseHelper.Create <CrossladderManagerResponse>(MessageCode.NbFunctionNotOpen));
             }
             var nbManager = NbManagerMgr.GetById(managerId, siteId);
             if (nbManager == null)
             {
                 return(ResponseHelper.Create <CrossladderManagerResponse>(MessageCode.MissManager));
             }
             int domainId = 0;
             int honor    = 0;
             CrossladderManagerMgr.GetOldHonor(managerId, ref honor);
             CrossSiteCache.Instance().TryGetDomainId(siteId, out domainId);
             ladderManager                 = new CrossladderManagerEntity();
             ladderManager.DomainId        = domainId;
             ladderManager.SiteId          = siteId;
             ladderManager.SiteName        = CacheFactory.FunctionAppCache.GetCrossZoneName(siteId);
             ladderManager.ManagerId       = managerId;
             ladderManager.Name            = nbManager.Name;
             ladderManager.SiteId          = siteId;
             ladderManager.Logo            = nbManager.Logo;
             ladderManager.Score           = _ladderRegisterScore;
             ladderManager.LastExchageTime = ShareUtil.BaseTime;
             ladderManager.RowTime         = DateTime.Now;
             ladderManager.UpdateTime      = DateTime.Now;
             ladderManager.Honor           = honor;
             ladderManager.MaxScore        = _ladderRegisterScore;
             ladderManager.DailyMaxScore   = _ladderRegisterScore;
             ladderManager.Stamina         = 50;
             CrossladderManagerMgr.Insert(ladderManager);
         }
         if (ladderManager.Stamina < 0)
         {
             ladderManager.Stamina = 0;
         }
         if (ladderManager.StaminaBuy < 0)
         {
             ladderManager.StaminaBuy = 0;
         }
         var response = ResponseHelper.CreateSuccess <CrossladderManagerResponse>();
         response.Data = ladderManager;
         return(response);
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("GetCrossLadderManager", ex);
         return(ResponseHelper.Create <CrossladderManagerResponse>(MessageCode.Exception));
     }
 }
예제 #4
0
        /// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016-09-13 17:03:59</remarks>
        public bool Update(CrossladderManagerEntity entity, DbTransaction trans)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_CrossladderManager_Update");

            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId);
            database.AddInParameter(commandWrapper, "@DomainId", DbType.Int32, entity.DomainId);
            database.AddInParameter(commandWrapper, "@Name", DbType.String, entity.Name);
            database.AddInParameter(commandWrapper, "@Logo", DbType.AnsiString, entity.Logo);
            database.AddInParameter(commandWrapper, "@Kpi", DbType.Int32, entity.Kpi);
            database.AddInParameter(commandWrapper, "@SiteId", DbType.AnsiString, entity.SiteId);
            database.AddInParameter(commandWrapper, "@SiteName", DbType.String, entity.SiteName);
            database.AddInParameter(commandWrapper, "@Score", DbType.Int32, entity.Score);
            database.AddInParameter(commandWrapper, "@NewlyScore", DbType.Int32, entity.NewlyScore);
            database.AddInParameter(commandWrapper, "@NewlyHonor", DbType.Int32, entity.NewlyHonor);
            database.AddInParameter(commandWrapper, "@Honor", DbType.Int32, entity.Honor);
            database.AddInParameter(commandWrapper, "@NewlyLadderCoin", DbType.Int32, entity.NewlyLadderCoin);
            database.AddInParameter(commandWrapper, "@LadderCoin", DbType.Int32, entity.LadderCoin);
            database.AddInParameter(commandWrapper, "@MaxScore", DbType.Int32, entity.MaxScore);
            database.AddInParameter(commandWrapper, "@MatchTime", DbType.Int32, entity.MatchTime);
            database.AddInParameter(commandWrapper, "@LastExchageTime", DbType.DateTime, entity.LastExchageTime);
            database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);
            database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime);
            database.AddInParameter(commandWrapper, "@RowVersion", DbType.Binary, entity.RowVersion);
            database.AddInParameter(commandWrapper, "@DailyMaxScore", DbType.Int32, entity.DailyMaxScore);
            database.AddInParameter(commandWrapper, "@DailyMaxAddScore", DbType.Int32, entity.DailyMaxAddScore);
            database.AddInParameter(commandWrapper, "@Stamina", DbType.Int32, entity.Stamina);
            database.AddInParameter(commandWrapper, "@StaminaBuy", DbType.Int32, entity.StaminaBuy);


            int results = 0;

            if (trans != null)
            {
                results = database.ExecuteNonQuery(commandWrapper, trans);
            }
            else
            {
                results = database.ExecuteNonQuery(commandWrapper);
            }

            entity.ManagerId = (System.Guid)database.GetParameterValue(commandWrapper, "@ManagerId");

            return(Convert.ToBoolean(results));
        }
예제 #5
0
 /// <summary>
 /// 将已进入比赛池的经理重新丢回排序池.
 /// </summary>
 /// <param name="arenaCompetitor">The arena competitor.</param>
 public void PushFightToCompetitor(CrossladderManagerEntity arenaCompetitor)
 {
     lock (_competitorLock)
     {
         if (ManagerFightDic != null && ManagerFightDic.ContainsKey(arenaCompetitor.ManagerId))
         {
             ManagerFightDic.Remove(arenaCompetitor.ManagerId);
             if (!CompetitorDic.ContainsKey(arenaCompetitor.ManagerId))
             {
                 if (_playerNum == 0)
                 {
                     _startTime = DateTime.Now;
                 }
                 CompetitorDic.Add(arenaCompetitor.ManagerId, arenaCompetitor);
                 _playerNum++;
             }
         }
     }
 }
예제 #6
0
        /// <summary>
        /// Builds the match info.
        /// </summary>
        /// <param name="ladderId">The ladder id.</param>
        /// <param name="group">The group.</param>
        /// <param name="home">The home.</param>
        /// <param name="away">The away.</param>
        /// <param name="fightDic">The fight dic.</param>
        private void BuildMatchInfo(Guid ladderId, int group, CrossladderManagerEntity home, CrossladderManagerEntity away, Dictionary <Guid, CrossladderMatchEntity> fightDic)
        {
            try
            {
                //筛选条件,当两个玩家分差超过阀值,将他们扔到排队池里继续等待
                //int tmpScore = home.Score - away.Score;
                //if (tmpScore <= _arenaLowScore || tmpScore >= _arenaHighScore)
                //{
                //    if (!home.IsBot)
                //        CrossLadderCore.Instance.PushFightToCompetitor(home.Clone());
                //    if (!away.IsBot)
                //        CrossLadderCore.Instance.PushFightToCompetitor(away.Clone());
                //    return;
                //}

                var matchId     = ShareUtil.GenerateComb();
                var ladderMatch = new CrossladderMatchEntity(home, away, matchId, ladderId, group + 1);
                ladderMatch.HomeName = ShareUtil.GetCrossManagerNameByZoneId(home.SiteId, home.Name);
                ladderMatch.AwayName = ShareUtil.GetCrossManagerNameByZoneId(away.SiteId, away.Name);
                ladderMatch.DomainId = _domainId;
                fightDic.Add(ladderMatch.Idx, ladderMatch);

                MemcachedFactory.LadderMatchClient.Set(ladderMatch.Idx, ladderMatch);
                //更新经理-比赛关联字典
                if (!home.IsBot)
                {
                    var homeHeart = new CrossLadderHeartEntity(matchId, away.ManagerId, away.SiteId, away.IsBot, away.Kpi);
                    ManagerFightDic[home.ManagerId] = homeHeart;
                    MemcachedFactory.LadderHeartClient.Set(home.ManagerId, homeHeart);
                }
                if (!away.IsBot)
                {
                    var awayHeart = new CrossLadderHeartEntity(matchId, home.ManagerId, home.SiteId, home.IsBot, away.Kpi);
                    ManagerFightDic[away.ManagerId] = awayHeart;
                    MemcachedFactory.LadderHeartClient.Set(away.ManagerId, awayHeart);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossLadderThread-BuildMatchInfo", ex.Message, ex.StackTrace);
            }
        }
예제 #7
0
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="managerId">managerId</param>
        /// <returns>CrossladderManagerEntity</returns>
        /// <remarks>2016-09-13 17:03:58</remarks>
        public CrossladderManagerEntity GetById(System.Guid managerId)
        {
            var database = new SqlDatabase(this.ConnectionString);

            DbCommand commandWrapper = database.GetStoredProcCommand("P_CrossladderManager_GetById");

            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, managerId);


            CrossladderManagerEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
예제 #8
0
        public static bool Update(CrossladderManagerEntity crossladderManagerEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new CrossladderManagerProvider(zoneId);

            return(provider.Update(crossladderManagerEntity, trans));
        }
예제 #9
0
 /// <summary>
 /// Update
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 /// <remarks>2016-09-13 17:03:59</remarks>
 public bool Update(CrossladderManagerEntity entity)
 {
     return(Update(entity, null));
 }
예제 #10
0
 /// <summary>
 /// Insert
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="trans">The trans.</param>
 /// <returns></returns>
 /// <remarks>2016-09-13 17:03:58</remarks>
 public bool Insert(CrossladderManagerEntity entity)
 {
     return(Insert(entity, null));
 }