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); } }
/// <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); }
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)); } }
/// <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)); }
/// <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++; } } } }
/// <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); } }
/// <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); }
public static bool Update(CrossladderManagerEntity crossladderManagerEntity, DbTransaction trans = null, string zoneId = "") { var provider = new CrossladderManagerProvider(zoneId); return(provider.Update(crossladderManagerEntity, trans)); }
/// <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)); }
/// <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)); }