Esempio n. 1
0
 /// <summary>
 ///     从备用地址执行今天任务
 /// </summary>
 private void DoTodayJobByBackUrl()
 {
     if (!string.IsNullOrEmpty(Config.BackUrl))
     {
         var OpenList = GetDocByBackUrl();
         if (OpenList.Count == 0)
         {
             return;                      //无抓取数据
         }
         var newestQiHao = OpenList.Max(w => w.Id).ToString();
         var startQiNum  = Convert.ToInt32(LatestQiHao.Substring(6)) + 1;
         var newestQiNum = Convert.ToInt32(newestQiHao.Substring(6));
         if (startQiNum > newestQiNum)
         {
             return;                           //无最新数据
         }
         //处理最新开奖数据
         var getQiHao = string.Empty;
         for (var i = startQiNum; i <= newestQiNum; i++)
         {
             getQiHao = CommonHelper.GenerateTodayQiHaoYYMMDDQQQ(i);
             var matchItem = OpenList.Where(R => R.Id.ToString() == getQiHao).FirstOrDefault();
             if (matchItem != null && SaveRecord(matchItem))
             {
                 //处理成功写入日志
                 log.Info(GetType(), CommonHelper.GetJobBackLogInfo(Config, getQiHao));
                 LatestQiHao = getQiHao;
             }
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        ///     核实最新一期期号是否为今天的期号
        /// </summary>
        /// <returns></returns>
        private bool CheckLatestQiHaoIsTodayTerm()
        {
            var datepart    = CommonHelper.SCCSysDateTime - new DateTime(CommonHelper.SCCSysDateTime.Year, 1, 1);
            var t           = Config.SkipDate.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            var todayPrefix = CommonHelper.SCCSysDateTime.Year +
                              (datepart.Days - t.Length + 1).ToString().PadLeft(3, '0');

            return(LatestQiHao.StartsWith(todayPrefix));
        }
Esempio n. 3
0
        /// <summary>
        ///     通过主站点抓取开奖数据
        /// </summary>
        private void DoTodayJobByMainUrl()
        {
            var OpenList = GetDocByMainUrl();

            if (OpenList.Count == 0)
            {
                return;                      //无抓取数据
            }
            var newestQiHao = OpenList.Max(W => W.QiHao);
            var startQiNum  = Convert.ToInt32(LatestQiHao.Substring(6)) + 1;
            var newestQiNum = Convert.ToInt32(newestQiHao.Substring(6));

            if (startQiNum > newestQiNum)
            {
                return;                           //无最新数据
            }
            //抓取到的开奖号总记录数
            var total = OpenList.Count;

            var getQiHao = string.Empty;

            for (var i = startQiNum; i <= newestQiNum; i++)
            {
                getQiHao = CommonHelper.GenerateTodayQiHaoYYMMDDQQ(i);

                var matchItem = OpenList.Where(R => R.QiHao.ToString() == getQiHao).FirstOrDefault();
                var step      = 0;
                var nowQiHao  = Convert.ToInt32(getQiHao);

                while (matchItem == null)
                {
                    if (step <= total)
                    {
                        nowQiHao++;
                        step++;
                        matchItem = OpenList.Where(R => R.QiHao.ToString() == nowQiHao.ToString()).FirstOrDefault();
                    }
                    else
                    {
                        matchItem = null;
                        break;
                    }
                }

                if (matchItem.QiHao != null && SaveRecord(matchItem))
                {
                    //处理成功写入日志
                    log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, getQiHao));
                    LatestQiHao = getQiHao;
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        ///     通过主站点抓取开奖数据
        ///     (广西福彩官网)
        /// </summary>
        private void DoTodayJobByMainUrl()
        {
            if (!string.IsNullOrEmpty(Config.MainUrl))
            {
                var OpenList = GetDocByMainUrl();
                if (OpenList.Count == 0)
                {
                    return;                      //无抓取数据
                }
                var newestQiHao = OpenList.Max(w => w.Key);
                var startQiNum  = Convert.ToInt32(LatestQiHao.Substring(7)) + 1;
                var newestQiNum = Convert.ToInt32(newestQiHao.Substring(7));
                if (startQiNum > newestQiNum)
                {
                    return;                           //无最新数据
                }
                //处理最新开奖数据
                var total = OpenList.Count; //处理最新开奖数据

                var getQiHao = string.Empty;
                for (var i = startQiNum; i <= newestQiNum; i++)
                {
                    getQiHao = CommonHelper.GenerateGXKL10FQiHao(CommonHelper.SCCSysDateTime, Config.SkipDate, i);

                    var matchItem = OpenList.Where(R => R.Key == getQiHao).FirstOrDefault();
                    var step      = 0;
                    var nowQiHao  = Convert.ToInt32(getQiHao);
                    while (matchItem.Key == null)
                    {
                        if (step <= total)
                        {
                            nowQiHao++;
                            step++;
                            matchItem = OpenList.Where(R => R.Key.ToString() == nowQiHao.ToString()).FirstOrDefault();
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (matchItem.Key != null && SaveRecord(getQiHao, matchItem.Value, false))
                    {
                        //处理成功写入日志
                        log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, getQiHao));
                        LatestQiHao = getQiHao;
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        ///     通过备用站点抓取开奖数据
        ///     (彩乐乐)
        /// </summary>
        private void DoTodayJobByBackUrl()
        {
            if (!string.IsNullOrEmpty(Config.BackUrl))
            {
                var OpenList = GetTodayOpenListFromBackUrl();
                if (OpenList.Count == 0)
                {
                    return;                      //无抓取数据
                }
                var newestQiHao = OpenList.Last().Key;
                var startQiNum  = Convert.ToInt32(LatestQiHao.Substring(6)) + 1;
                var total       = OpenList.Count;
                var newestQiNum = Convert.ToInt32(newestQiHao.Substring(6));
                if (startQiNum > newestQiNum)
                {
                    return;                           //无最新数据
                }
                //处理最新开奖数据
                var getQiHao = string.Empty;
                for (var i = startQiNum; i <= newestQiNum; i++)
                {
                    getQiHao = CommonHelper.GenerateTodayQiHaoYYMMDDQQQ(i);
                    var matchItem = OpenList.Where(R => R.Key == getQiHao).FirstOrDefault();
                    var step      = 0;
                    var nowQiHao  = Convert.ToInt32(getQiHao);


                    while (matchItem.Key == null)
                    {
                        if (step <= total)
                        {
                            nowQiHao++;
                            step++;
                            matchItem = OpenList.Where(R => R.Key.ToString() == nowQiHao.ToString()).FirstOrDefault();
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (matchItem.Key != null && SaveRecord(getQiHao, matchItem.Value, false))
                    {
                        //处理成功写入日志
                        log.Info(GetType(), CommonHelper.GetJobBackLogInfo(Config, getQiHao));
                        LatestQiHao = getQiHao;
                    }
                }
            }
        }
Esempio n. 6
0
        /// <summary>
        ///     作业执行入口
        /// </summary>
        /// <param name="context">作业执行上下文</param>
        public void Execute(IJobExecutionContext context)
        {
            Config = CommonHelper.GetConfigFromDataMap(context.JobDetail.JobDataMap);
            //预设节假日不开奖
            if (Config.SkipDate.Contains(CommonHelper.SCCSysDateTime.ToString("yyyyMMdd")))
            {
                return;
            }
            LatestQiHao = context.JobDetail.JobDataMap.GetString("LatestQiHao");
            try
            {
                //服务启动时配置初始数据
                if (string.IsNullOrEmpty(LatestQiHao))
                {
                    var lastItem = services.GetLastItem(currentLottery);
                    if (lastItem != null)
                    {
                        LatestQiHao = lastItem.Term.ToString();
                    }
                }

                //第一次启动服务或最新期号为昨天的开奖期号,则自检昨天开奖数据是否抓取完毕(否则插入邮件数据),并重置当天期号和失败列表
                if (string.IsNullOrEmpty(LatestQiHao) ||
                    !LatestQiHao.StartsWith(CommonHelper.SCCSysDateTime.ToString("yyMMdd")))
                {
                    CheckingYesterdayTheLotteryData();
                    LatestQiHao = CommonHelper.GenerateTodayQiHaoYYMMDDQQ(0);
                }

                //当最新期号不符合当天总期数,执行当天作业
                if (Convert.ToInt32(LatestQiHao.Substring(6)) != Config.TimesPerDay)
                {
                    DoTodayJobByMainUrl();
                    DoTodayJobByBackUrl();
                }
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】抓取时发生错误,错误信息【{1}】", Config.Area + Config.LotteryName, ex.Message));
            }

            //保存最新期号和失败期号列表
            context.JobDetail.JobDataMap["LatestQiHao"] = LatestQiHao;
        }