// 分配任务 private void NextAssignTask(TeamParam param, Dictionary <string, List <string> > taskDic) { foreach (var kv in taskDic) { if (kv.Key == "add") { kv.Value.ForEach(o => { PlayerParam pp = param.CopyCreateParam <PlayerParam>(); pp.PlayerId = o; PlayerManager.AddOrUpdateParam(pp); }); } else { kv.Value.ForEach(o => { PlayerParam pp = param.CopyCreateParam <PlayerParam>(); pp.PlayerId = o; PlayerManager.RemoveParam(pp); }); } } }
public void Process(ITakerReptile.Dto.BaseData data) { BRData bd = data as BRData; TeamParam param = bd.Param as TeamParam; CheckSetHistoryParam(param); string txt; if (!HtmlDecode(bd.Html, out txt)) { return; } var xml = new XmlHelper(txt); // 解析成各个数据块 var cdataFlag = "//c"; var cdata = xml.GetValues(cdataFlag); // 解析队伍基本信息 TeamEntity te = new TeamEntity(); te.TeamId = param.TeamId; te.Mark = "https://ls.betradar.com/ls/crest/big/" + param.TeamId + ".png"; var teamInfo = cdata[2]; var root = GetHtmlRoot(teamInfo); var teamName = root.SelectSingleNode("//thead/tr").InnerText; te.TeamName = teamName; var trsTeam = root.SelectNodes("//tbody/tr"); if (trsTeam.Count == 2) { te.Manager = trsTeam[1].LastChild.InnerText; } else if (trsTeam.Count > 2) { te.Manager = trsTeam[1].LastChild.InnerText; te.Venue = trsTeam[2].LastChild.InnerText; } var teamEntity = TeamEntityManager.AddOrGetCacheEntity <TeamEntity>(te.TeamId); teamEntity.CompareSetTeamEntity(te); #region 队伍球员相关信息 // 解析进球数获得队员的点球个数,更新到队员点球信息缓存中 if (cdata.Count < 16) { return; // 此队伍无队员信息,克罗地亚乙级联赛->卢科 } var penGoals = GetDataLikeKey(cdata, "normaltable toplist"); if (string.IsNullOrEmpty(penGoals)) { return; } root = GetHtmlRoot(penGoals); var trsPenGoals = root.SelectNodes("//tbody/tr"); if (trsPenGoals != null) { foreach (var tr in trsPenGoals) { var player = tr.SelectSingleNode("td[@class='player']"); if (player == null) { continue; } var playerId = RegexGetStr(player.InnerHtml, "playerid', '", "',"); var pen = tr.LastChild.InnerText; PlayerPenalties pp = PlayerPenaltiesManager.AddOrGetCacheEntity <PlayerPenalties>(playerId + "_" + param.SeasonId); pp.PlayerId = playerId; pp.SeasonId = param.SeasonId; pp.ComparePlayerPenalties(pen); } } // 解析全部名单,并添加球员任务 var playersData = cdata.FirstOrDefault(o => o.Contains("teampage_squad")); if (playersData == null) { return; } root = GetHtmlRoot(playersData); var trsPlayer = root.SelectNodes("//tbody/tr"); if (trsPlayer != null) { List <string> list = new List <string>(); foreach (var tr in trsPlayer) { var s = tr.Attributes["onclick"].Value; var playerId = RegexGetStr(s, "playerid', '", "',"); list.Add(playerId); } var tp = TeamPlayersManager.AddOrGetCacheEntity <TeamPlayers>(param.TeamId + "_" + param.SeasonId); tp.TeamId = param.TeamId; tp.SeasonId = param.SeasonId; var dic = tp.CompareSetPlayerIdList(list); NextAssignTask(param, dic); } #endregion // 如果有添加获取伤停的任务 if (txt.IndexOf("o=\"1003\"") > 0) { InjuryParam ip = param.CopyCreateParam <InjuryParam>(); LeagueManager.AddOrUpdateParam(ip); } }