示例#1
0
        public void Execute(IJobExecutionContext context)
        {
            lock (_lock)
            {
                if (_shuttingDown)
                {
                    return;
                }

                try
                {
                    if (isFirstStartService)
                    {
                        LotteryEngine.Init();
                        isFirstStartService = false;
                        LogDbHelper.LogInfo(string.Format("{0}彩种定时执行任务Job开始(First Start)", _LotteryType),
                                            GetType().FullName + "=>Start", OperationType.Job);
                        _dataUpdateContainer.Execute();
                    }
                    else
                    {
                        if (DateTime.Now > NextLotteryTime ||
                            NextLotteryTime - DateTime.Now < TimeSpan.FromSeconds(_lotteryUpdateConfig.Interval * 3))
                        {
                            _dataUpdateContainer.Execute();
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogDbHelper.LogFatal(ex, GetType() + "Execute", OperationType.Job);
                }
            }
        }
示例#2
0
        public LotteryPerdictor(LotteryAnalyseNorm norm, LotteryEngine lotteryEngine)
        {
            _norm          = norm;
            _lotteryEngine = lotteryEngine;
            _lotteryPlan   = _lotteryEngine.GetLotteryPlan(_norm.PlanId);

            _lotteryPredictDataAppService = ServiceLocator.Current.GetInstance <ILotteryPredictDataAppService>();

            Init();
        }
        private void RequestData(DataSite dataSite)
        {
            var dataUpdateItem = ObtainDataUpdateItemByReflect(dataSite);

            if (dataUpdateItem == null)
            {
                throw new LSException("获取彩票开始数据数据爬取器失败.=>" + dataSite.Name + dataSite.Id);
            }

            var newDataList = dataUpdateItem.RequestNewDatas();

            lock (_lockObject)
            {
                if (newDataList != null && newDataList.Count > 0)
                {
                    //必须排序
                    newDataList = newDataList.OrderBy(p => p.Period).ToList();
                    foreach (var newData in newDataList)
                    {
                        if (!_lotteryDataAppService.ExsitData(_lotteryDataJob.LotteryType.ToString(), newData.Period))
                        {
                            var lastLotteryData = _lotteryDataAppService.Insert(newData);
                            _lastPeriod = lastLotteryData.Period;
                            string key = AppUtils.GetLotteryRedisKey(lastLotteryData.LotteryType, LsConstant.LastLotteryDataCacheKey);
                            CacheHelper.SetCache(key, lastLotteryData);
                            // todo:更新彩票分析数据
                            var lotteryEngine =
                                LotteryEngine.GetLotteryEngine(
                                    Utils.StringConvertEnum <LotteryType>(lastLotteryData.LotteryType));
                            lotteryEngine.CalculateNextLotteryData();
                        }
                    }
                    LogDbHelper.LogDebug(string.Format("更新彩票{0}开奖数据数据成功,共{1}条数据", _lotteryDataJob.LotteryType, newDataList.Count),
                                         GetType().FullName + "=>RequestData", OperationType.Job);
                    _lotteryDataJob.NextLotteryTime = _lotteryUpdateConfig.NextLotteryTime;
                }
            }
        }