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); } } }
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; } } }