namespace MiaoYu.Api.Admin.Controllers.DevelopmentTools;
///
/// 系统账号管理
///
[ControllerDescriptor(MenuId = "30")]
public class QuartzTasksController : AdminControllerBase
{
private readonly IJobLoggerService _jobLoggerService;
private readonly IRepository _quartzJobRepository;
public QuartzTasksController(ITaskService defaultService, IJobLoggerService jobLoggerService, IRepository quartzJobRepository) : base(defaultService)
{
_jobLoggerService = jobLoggerService;
_quartzJobRepository = quartzJobRepository;
}
///
/// 获取列表
///
///
///
[HttpPost("/{filter?}")]
public Task> FindListAsync([FromRoute] string? filter) => _defaultService.FindListAsync(filter);
///
/// 保存数据
///
///
///
[HttpPost]
public Task SaveFormAsync([FromBody] QuartzJob form) => _defaultService.SaveAsync(form);
///
/// 删除数据
///
///
///
[HttpPost]
public Task DeleteListAsync([FromBody] List ids) => _defaultService.DeleteAsync(ids);
///
/// 根据Id 查询表单数据
///
///
///
[HttpGet("{id?}")]
public Task FindFormAsync([FromRoute] Guid id) => _defaultService.FindByIdAsync(id);
///
/// 根据任务id 运行任务调度
///
///
///
[HttpPost]
public async Task RunAsync([FromBody] List ids)
{
var quartzJobTasks = await _quartzJobRepository.SelectNoTracking.Where(w => ids.Contains(w.Id)).ToListAsync();
foreach (var item in quartzJobTasks)
{
await _defaultService.RunByIdAsync(item);
}
return true;
}
///
/// 根据任务id 关闭任务调度
///
///
///
[HttpPost]
public async Task CloseAsync([FromBody] List ids)
{
var quartzJobTasks = await _quartzJobRepository.SelectNoTracking.Where(w => ids.Contains(w.Id)).ToListAsync();
foreach (var item in quartzJobTasks)
{
await _defaultService.CloseByIdAsync(item);
}
return true;
}
///
/// 获取运行日志
///
///
///
///
///
[HttpGet("{taskId}/{page}/{size}")]
public object GetJobLoggers([FromRoute] Guid taskId, [FromRoute] int page, [FromRoute] int size)
{
var list = _jobLoggerService.FindListById(taskId, page, size, out var total)
.OrderByDescending(w => w.CreationTime)
.ToList()
;
return new
{
list,
total
};
}
///
/// 扫描本地任务
///
///
[HttpGet]
public Task ScanTaskAsync()
{
return _defaultService.RecoveryTaskAsync();
}
}