public async Task Update(int id, QuartzOptionDTO quartzOptionDTO) { Valid(quartzOptionDTO); QuartzOption quartzOption = _quartzOptionRepository.SelectById(id); await _schedulerFactory.TriggerAction(quartzOption, JobAction.修改); quartzOption.JobName = quartzOptionDTO.JobName; quartzOption.GroupName = quartzOptionDTO.GroupName; quartzOption.Cron = quartzOptionDTO.Cron; quartzOption.Api = quartzOptionDTO.Api; quartzOption.RequestType = quartzOptionDTO.RequestType; quartzOption.ParameterValue = quartzOptionDTO.ParameterValue; quartzOption.Description = quartzOptionDTO.Description; quartzOption.TaskStatus = TaskStatus.暂停; quartzOption.UpdateTime = DateTime.Now; _quartzOptionRepository.Update(quartzOption); await _schedulerFactory.AddJob(quartzOption); }
public async Task Execute(IJobExecutionContext context) { try { IQuartzOptionRepository quartzOptionRepository = ServiceLocator.Get <IQuartzOptionRepository>(); IHttpClientFactory httpClientFactory = ServiceLocator.Get <IHttpClientFactory>(); AbstractTrigger trigger = (context as JobExecutionContextImpl).Trigger as AbstractTrigger; QuartzOption quartzOption = quartzOptionRepository.SelectSingle(s => (s.JobName == trigger.Name && s.GroupName == trigger.Group) || (s.JobName == trigger.JobName && s.GroupName == trigger.JobGroup)); if (quartzOption == null) { throw new ArgumentException(string.Format("分组:{0},作业:{1}不存在", quartzOption.GroupName, quartzOption.JobName)); } HttpClient httpClient = httpClientFactory.CreateClient(); HttpResponseMessage responseMessage = null; switch (quartzOption.RequestType) { case "GET": responseMessage = await httpClient.GetAsync(quartzOption.Api); responseMessage.EnsureSuccessStatusCode(); break; case "POST": string[] arr = quartzOption.ParameterValue.Split(','); Dictionary <string, string> para = new Dictionary <string, string>(); foreach (var item in arr) { string[] itemArr = item.Split(':'); para.Add(itemArr[0], itemArr[2]); } FormUrlEncodedContent content = new FormUrlEncodedContent(para); responseMessage = await httpClient.PostAsync(quartzOption.Api, content); responseMessage.EnsureSuccessStatusCode(); break; case "DELETE": responseMessage = await httpClient.DeleteAsync(quartzOption.Api); responseMessage.EnsureSuccessStatusCode(); break; } ApiResult apiResult = JsonConvert.DeserializeObject <ApiResult>(await responseMessage.Content.ReadAsStringAsync()); if (apiResult.Code != HttpStatusCode.SUCCESS) { throw new HttpRequestException(apiResult.Msg); } quartzOption.LastActionTime = DateTime.Now; quartzOptionRepository.Update(quartzOption); } catch (Exception ex) { LogUtils.LogError(ex, "Blog.Quartz.Application.Quartz.Job", ex.Message); } }