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