public Match_FightinfoResponse GetLeagueFightInfo(Guid matchId, Guid managerId) { LeagueEncounterEntity matchInfo = LeagueEncounterMgr.GetById(matchId); DicNpcEntity homeNpc = null; DicNpcEntity awayNpc = null; if (matchInfo.HomeIsNpc) { homeNpc = CacheFactory.NpcdicCache.GetNpc(matchInfo.HomeId); } if (matchInfo.AwayIsNpc) { awayNpc = CacheFactory.NpcdicCache.GetNpc(matchInfo.AwayId); } DTOBuffMemberView homeView, awayView; BuffDataCore.Instance().GetMembers(out homeView, out awayView, "", matchInfo.HomeId, matchInfo.HomeIsNpc, "", matchInfo.AwayId, matchInfo.AwayIsNpc, true, false); Match_FightManagerinfo home, away; if (matchInfo.HomeIsNpc) { home = MatchDataHelper.GetFightinfo(homeNpc, homeView); } else { home = MatchDataHelper.GetFightinfo(matchInfo.HomeId, false, homeView, ""); } if (matchInfo.AwayIsNpc) { away = MatchDataHelper.GetFightinfo(awayNpc, awayView); } else { away = MatchDataHelper.GetFightinfo(matchInfo.AwayId, false, awayView, ""); } if (home == null || away == null) { return(ResponseHelper.Create <Match_FightinfoResponse>(MessageCode.NbParameterError)); } var response = ResponseHelper.CreateSuccess <Match_FightinfoResponse>(); response.Data = new Match_Fightinfo(); response.Data.Home = home; response.Data.Away = away; return(response); }
/// <summary> /// GetById /// </summary> /// <param name="matchId">matchId</param> /// <returns>LeagueEncounterEntity</returns> /// <remarks>2016-06-03 19:54:14</remarks> public LeagueEncounterEntity GetById(System.Guid matchId) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("P_LeagueEncounter_GetById"); database.AddInParameter(commandWrapper, "@MatchId", DbType.Guid, matchId); LeagueEncounterEntity obj = null; using (IDataReader reader = database.ExecuteReader(commandWrapper)) { if (reader.Read()) { obj = LoadSingleRow(reader); } } return(obj); }
/// <summary> /// 带事务的Update /// </summary> /// <param name="entity"></param> /// <param name="trans">The trans.</param> /// <returns></returns> /// <remarks>2016-06-03 19:54:14</remarks> public bool Update(LeagueEncounterEntity entity, DbTransaction trans = null) { var database = new SqlDatabase(this.ConnectionString); DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_LeagueEncounter_Update"); database.AddInParameter(commandWrapper, "@MatchId", DbType.Guid, entity.MatchId); database.AddInParameter(commandWrapper, "@LeagueRecordId", DbType.Guid, entity.LeagueRecordId); database.AddInParameter(commandWrapper, "@HomeName", DbType.AnsiString, entity.HomeName); database.AddInParameter(commandWrapper, "@AwayName", DbType.AnsiString, entity.AwayName); database.AddInParameter(commandWrapper, "@WheelNumber", DbType.Int32, entity.WheelNumber); database.AddInParameter(commandWrapper, "@HomeId", DbType.Guid, entity.HomeId); database.AddInParameter(commandWrapper, "@AwayId", DbType.Guid, entity.AwayId); database.AddInParameter(commandWrapper, "@HomeIsNpc", DbType.Boolean, entity.HomeIsNpc); database.AddInParameter(commandWrapper, "@AwayIsNpc", DbType.Boolean, entity.AwayIsNpc); database.AddInParameter(commandWrapper, "@IsMatch", DbType.Boolean, entity.IsMatch); database.AddInParameter(commandWrapper, "@ReMatched", DbType.Boolean, entity.ReMatched); database.AddInParameter(commandWrapper, "@Confirmed", DbType.Boolean, entity.Confirmed); database.AddInParameter(commandWrapper, "@HomeGoals", DbType.Int32, entity.HomeGoals); database.AddInParameter(commandWrapper, "@AwayGoals", DbType.Int32, entity.AwayGoals); database.AddInParameter(commandWrapper, "@UpdateTime", DbType.DateTime, entity.UpdateTime); database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime); int results = 0; if (trans != null) { results = database.ExecuteNonQuery(commandWrapper, trans); } else { results = database.ExecuteNonQuery(commandWrapper); } entity.MatchId = (System.Guid)database.GetParameterValue(commandWrapper, "@MatchId"); return(Convert.ToBoolean(results)); }
/// <summary> /// 将IDataReader的当前记录读取到LeagueEncounterEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public LeagueEncounterEntity LoadSingleRow(IDataReader reader) { var obj = new LeagueEncounterEntity(); obj.MatchId = (System.Guid)reader["MatchId"]; obj.LeagueRecordId = (System.Guid)reader["LeagueRecordId"]; obj.HomeName = (System.String)reader["HomeName"]; obj.AwayName = (System.String)reader["AwayName"]; obj.WheelNumber = (System.Int32)reader["WheelNumber"]; obj.HomeId = (System.Guid)reader["HomeId"]; obj.AwayId = (System.Guid)reader["AwayId"]; obj.HomeIsNpc = (System.Boolean)reader["HomeIsNpc"]; obj.AwayIsNpc = (System.Boolean)reader["AwayIsNpc"]; obj.IsMatch = (System.Boolean)reader["IsMatch"]; obj.ReMatched = (System.Boolean)reader["ReMatched"]; obj.Confirmed = (System.Boolean)reader["Confirmed"]; obj.HomeGoals = (System.Int32)reader["HomeGoals"]; obj.AwayGoals = (System.Int32)reader["AwayGoals"]; obj.UpdateTime = (System.DateTime)reader["UpdateTime"]; obj.RowTime = (System.DateTime)reader["RowTime"]; return(obj); }
public static bool Insert(LeagueEncounterEntity leagueEncounterEntity, DbTransaction trans = null, string zoneId = "") { var provider = new LeagueEncounterProvider(zoneId); return(provider.Insert(leagueEncounterEntity, trans)); }
public void Test5() { //获取球队列表 var npcTeamList = CacheFactory.LeagueCache.GetLeagueTeam(1); int round = npcTeamList.Count * 2; //总回合数 List <Guid> allGuidList = new List <Guid>(npcTeamList.Count + 1); //当前联赛的所有球队,包括玩家 var managerId = new Guid("f94334e2-1c6d-41bf-a2e5-a57700b4b76a"); var manager = ManagerCore.Instance.GetManager(managerId); if (manager == null) { return; } allGuidList.Add(managerId); //将玩家信息加入需分组队列 for (int i = 0; i < npcTeamList.Count; i++) //生成NPC guid { allGuidList.Add(ShareUtil.GenerateComb()); } //生成所有配对索引组合 var allTeamIndex = new List <int>(); for (int i = 0; i < npcTeamList.Count + 1; i++)//所有需要分组的队伍Index { allTeamIndex.Add(i); } var allPairList = new List <KeyValuePair <int, int> >(); DoubleComposition(allTeamIndex, ref allPairList);//计算出所有配对组合 //生成所有轮配对 var roundPair = new Dictionary <int, List <LeagueEncounterEntity> >(); var allUsedPairList = new List <KeyValuePair <int, int> >();//所有轮中使用的键值对 for (int i = 0; i < round; i++) { int roundId = i + 1;//轮数从1开始 //本轮已使用的键值对 var currectUsedPairList = new List <KeyValuePair <int, int> >(); for (int j = 0; j < allGuidList.Count / 2; j++) { var homeId = allGuidList[0]; var awayId = allGuidList[0]; var key = new KeyValuePair <int, int>(); //主队和客队不能相同 如果当前匹配在本组中已经有,或者在其他轮中已经存在则继续 while (homeId == awayId || allUsedPairList.Contains(key)) { key = getNewKeyValue(allPairList, currectUsedPairList, allUsedPairList); homeId = allGuidList[key.Key]; awayId = allGuidList[key.Value]; //当前匹配不在已有轮 while (homeId == awayId || allUsedPairList.Contains(key)) { key = getNewKeyValue(allPairList, currectUsedPairList, allUsedPairList); homeId = allGuidList[key.Key]; awayId = allGuidList[key.Value]; } } currectUsedPairList.Add(key); allUsedPairList.Add(key); var entity = new LeagueEncounterEntity(); entity.MatchId = Guid.NewGuid(); entity.HomeId = allGuidList[key.Key]; entity.AwayId = allGuidList[key.Value]; entity.WheelNumber = roundId; entity.HomeIsNpc = homeId != managerId; entity.AwayIsNpc = awayId != managerId; entity.HomeName = entity.HomeIsNpc ? npcTeamList[key.Key - 1].TeamName : manager.Name; entity.AwayName = entity.AwayIsNpc ? npcTeamList[key.Value - 1].TeamName : manager.Name; //entity.LaegueRecordId = laegueRecordId; if (!roundPair.ContainsKey(roundId)) { roundPair.Add(roundId, new List <LeagueEncounterEntity>()); } roundPair[roundId].Add(entity); } } var x = roundPair; //var x = result1List; //var y = result2List; }