You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.1 KiB

using Microsoft.AspNetCore.Mvc;
using StackExchange.Profiling;
using zzz.Model;
using zzz.Model.Entity;
using zzz.Repository;
using zzz.Tasks;
namespace zzz.Api.Controllers
{
/// <summary>
/// 持续运行
/// </summary>
[ApiController]
[Route("api/[controller]/[action]")]
public class ApiActiveController : Controller
{
private readonly ILogger<ApiActiveController> _logger;
private readonly IBaseRepository<TasksQz> _tasksQzServices;
private readonly ISchedulerCenter _schedulerCenter;
/// <summary>
/// 持续运行
/// </summary>
/// <param name="tasksQzServices"></param>
/// <param name="schedulerCenter"></param>
/// <param name="logger"></param>
public ApiActiveController(
IBaseRepository<TasksQz> tasksQzServices,
ISchedulerCenter schedulerCenter,
ILogger<ApiActiveController> logger
)
{
_tasksQzServices = tasksQzServices;
_schedulerCenter = schedulerCenter;
_logger = logger;
}
/// <summary>
/// 激活
/// </summary>
[HttpGet]
public string KeepActive()
{
using (MiniProfiler.Current.Step("获取成功后,开始处理最终数据"))
{
_logger.LogInformation("用workservice定时调用该Api,保持不被IIS自动回收");
return "成功调用Api接口";
}
}
/// <summary>
/// 立即执行任务
/// </summary>
/// <param name="jobId"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<string>> ExecuteJob(int jobId)
{
var data = new MessageModel<string>();
var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
if (model != null)
{
return await _schedulerCenter.ExecuteJobAsync(model);
}
else
{
data.message = "任务不存在";
}
return data;
}
}
}