Beispiel #1
0
        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);
            }
        }
        public override void InitCacheManager()
        {
            var organizerEntityManager = new OrganizerEntityManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(OrganizerEntityManager).Name, organizerEntityManager);
            DicCacheManagers.Add(typeof(OrganizerEntityManager).Name, (ICacheManager)organizerEntityManager);

            var leagueEntityManager = new LeagueEntityManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(LeagueEntityManager).Name, leagueEntityManager);
            DicCacheManagers.Add(typeof(LeagueEntityManager).Name, (ICacheManager)leagueEntityManager);

            var matchEntityManager = new MatchEntityManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(MatchEntityManager).Name, matchEntityManager);
            DicCacheManagers.Add(typeof(MatchEntityManager).Name, (ICacheManager)matchEntityManager);

            var playerEntityManager = new PlayerEntityManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(PlayerEntityManager).Name, playerEntityManager);
            DicCacheManagers.Add(typeof(PlayerEntityManager).Name, (ICacheManager)playerEntityManager);

            var playerPenaltiesManager = new PlayerPenaltiesManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(PlayerPenaltiesManager).Name, playerPenaltiesManager);
            DicCacheManagers.Add(typeof(PlayerPenaltiesManager).Name, (ICacheManager)playerPenaltiesManager);

            var PlayerStatisticsRecordManager = new PlayerStatisticsRecordManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(PlayerStatisticsRecordManager).Name, PlayerStatisticsRecordManager);
            DicCacheManagers.Add(typeof(PlayerStatisticsRecordManager).Name, (ICacheManager)PlayerStatisticsRecordManager);

            var playerTimeRecordManager = new PlayerTimeRecordManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(PlayerTimeRecordManager).Name, playerTimeRecordManager);
            DicCacheManagers.Add(typeof(PlayerTimeRecordManager).Name, (ICacheManager)playerTimeRecordManager);

            var seasonEntityManager = new SeasonEntityManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(SeasonEntityManager).Name, seasonEntityManager);
            DicCacheManagers.Add(typeof(SeasonEntityManager).Name, (ICacheManager)seasonEntityManager);

            var seasonTypeInfoManager = new SeasonTypeInfoManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(SeasonTypeInfoManager).Name, seasonTypeInfoManager);
            DicCacheManagers.Add(typeof(SeasonTypeInfoManager).Name, (ICacheManager)seasonTypeInfoManager);

            var seasonTableInfoManager = new SeasonTableInfoManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(SeasonTableInfoManager).Name, seasonTableInfoManager);
            DicCacheManagers.Add(typeof(SeasonTableInfoManager).Name, (ICacheManager)seasonTableInfoManager);

            var seasonTeamsManager = new SeasonTeamsManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(SeasonTeamsManager).Name, seasonTeamsManager);
            DicCacheManagers.Add(typeof(SeasonTeamsManager).Name, (ICacheManager)seasonTeamsManager);

            var teamEntityManager = new TeamEntityManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(TeamEntityManager).Name, teamEntityManager);
            DicCacheManagers.Add(typeof(TeamEntityManager).Name, (ICacheManager)teamEntityManager);

            var teamPlayersManager = new TeamPlayersManager();

            IocUnity.RegisterInstance <ICacheManager>(typeof(TeamPlayersManager).Name, teamPlayersManager);
            DicCacheManagers.Add(typeof(TeamPlayersManager).Name, (ICacheManager)teamPlayersManager);
        }