using Microsoft.AspNetCore.Mvc;
using Quartz;
using Quartz.Spi;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VueWebCoreApi.Extensions;
using VueWebCoreApi.Quartz;
using VueWebCoreApi.Tools;
namespace VueWebCoreApi.Controllers
{
[ApiExplorerSettings(GroupName = "周期任务")]
[ApiController]
[Route("base/[controller]")]
public class TaskBackGroundController : Controller
{
//定义全局信息返回变量
ToMessage mes = new ToMessage();
private readonly ISchedulerFactory _schedulerFactory;
private readonly IJobFactory _jobFactory;
public TaskBackGroundController(ISchedulerFactory schedulerFactory, IJobFactory jobFactory)
{
this._jobFactory = jobFactory;
this._schedulerFactory = schedulerFactory;
}
///
/// 获取所有的作业
///
///
[Route(template: "GetJobs")]
[HttpGet]
public async Task GetJobs()
{
mes.code = "200";
mes.message = "查询成功!";
mes.data = await _schedulerFactory.GetJobs();
return Json(mes);
}
///
/// 获取作业运行日志
///
///
///
///
///
[Route(template: "GetRunLog")]
[HttpGet]
public IActionResult GetRunLog(string taskName, string groupName, int page = 1)
{
mes.code = "200";
mes.data = FileQuartz.GetJobRunLog(taskName, groupName, page);
return Json(mes);
}
///
/// 添加任务
///
///
///
[Route(template: "Add")]
[HttpPost]
//[TaskAuthor]
public async Task Add(TaskOptions taskOptions)
{
return Json(await taskOptions.AddJob(_schedulerFactory, jobFactory: _jobFactory));
}
///
/// 删除任务
///
///
///
[Route(template: "Remove")]
[HttpPost]
//[TaskAuthor]
public async Task Remove(TaskOptions taskOptions)
{
return Json(await _schedulerFactory.Remove(taskOptions));
}
///
/// 修改任务
///
///
///
[Route(template: "Update")]
[HttpPost]
//[TaskAuthor]
public async Task Update(TaskOptions taskOptions)
{
return Json(await _schedulerFactory.Update(taskOptions));
}
///
/// 暂停任务
///
///
///
[Route(template: "Pause")]
[HttpPost]
//[TaskAuthor]
public async Task Pause(TaskOptions taskOptions)
{
return Json(await _schedulerFactory.Pause(taskOptions));
}
///
/// 开启任务
///
///
///
[Route(template: "Start")]
[HttpPost]
//[TaskAuthor]
public async Task Start(TaskOptions taskOptions)
{
return Json(await _schedulerFactory.Start(taskOptions));
}
///
/// 立即执行
///
///
///
[Route(template: "Run")]
[HttpPost]
//[TaskAuthor]
public async Task Run(TaskOptions taskOptions)
{
return Json(await _schedulerFactory.Run(taskOptions));
}
}
}