/// <summary> 执行任务 </summary> /// <param name="data"></param> /// <param name="record"></param> /// <returns></returns> protected override async Task ExecuteJob(HttpDetailDto data, JobRecordDto record) { var req = new HttpRequest(data.Url) { BodyType = (HttpBodyType)data.BodyType, Headers = new Dictionary <string, string> { { "Request-By", "spear" } } }; if (!string.IsNullOrWhiteSpace(data.Data)) { req.Data = JsonConvert.DeserializeObject(data.Data); } if (data.Header != null && data.Header.Any()) { foreach (var header in data.Header) { try { if (req.Headers.ContainsKey(header.Key)) { continue; } req.Headers.Add(header.Key, header.Value); } catch (Exception ex) { Logger.LogWarning(ex.Message); } } } var resp = await HttpHelper.Instance.RequestAsync(GetHttpMethod(data.Method), req); var html = await resp.ReadAsStringAsync(); record.ResultCode = (int)resp.StatusCode; record.Result = html; }
public async Task Execute(IJobExecutionContext context) { var record = new JobRecordDto { Id = IdentityHelper.Guid32, StartTime = Clock.Now, TriggerId = context.Trigger.Key.Name }; try { var data = context.JobDetail.JobDataMap.Get(Constants.JobData).CastTo <T>(); if (data == null) { throw new BusiException("任务数据异常"); } record.JobId = data.Id; await ExecuteJob(data, record); record.Status = RecordStatus.Success; } catch (Exception ex) { record.Remark = ex.Message; if (!(ex is BusiException)) { Logger.LogError(ex, ex.Message); } record.Status = RecordStatus.Fail; } finally { record.CompleteTime = Clock.Now; var repository = CurrentIocManager.Resolve <IJobContract>(); var result = await repository.AddRecordAsync(record); } }
public async Task <int> AddRecordAsync(JobRecordDto dto) { var model = dto.MapTo <TJobRecord>(); return(await _recordRepository.InsertAsync(model)); }
protected abstract Task ExecuteJob(T data, JobRecordDto record);