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(); } }