CloudGamingAdmin/admin-server/CloudGaming.Api.Admin/Controllers/DevelopmentTools/QuartzTasksController.cs
2024-11-15 02:58:48 +08:00

106 lines
3.0 KiB
C#

namespace CloudGaming.Api.Admin.Controllers.DevelopmentTools;
/// <summary>
/// 系统账号管理
/// </summary>
[ControllerDescriptor(MenuId = "30")]
public class QuartzTasksController(
IServiceProvider serviceProvider,
IJobLoggerService jobLoggerService,
IRepository<QuartzJob> quartzJobRepository)
: AdminControllerBase<ITaskService>(serviceProvider)
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost("{filter?}")]
public Task<List<QuartzJob>> FindListAsync([FromRoute] string? filter) => Service.FindListAsync(filter);
/// <summary>
/// 保存数据
/// </summary>
/// <param name="form"></param>
/// <returns></returns>
[HttpPost]
public Task<QuartzJob> SaveFormAsync([FromBody] QuartzJob form) => Service.SaveAsync(form);
/// <summary>
/// 删除数据
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpPost]
public Task<bool> DeleteListAsync([FromBody] List<Guid> ids) => Service.DeleteAsync(ids);
/// <summary>
/// 根据Id 查询表单数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id?}")]
public Task<QuartzJob> FindFormAsync([FromRoute] Guid id) => Service.FindByIdAsync(id);
/// <summary>
/// 根据任务id 运行任务调度
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpPost]
public async Task<bool> RunAsync([FromBody] List<Guid> ids)
{
var quartzJobTasks = await quartzJobRepository.SelectNoTracking.Where(w => ids.Contains(w.Id)).ToListAsync();
await Service.RunByIdAsync(quartzJobTasks);
return true;
}
/// <summary>
/// 根据任务id 关闭任务调度
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[HttpPost]
public async Task<bool> CloseAsync([FromBody] List<Guid> ids)
{
var quartzJobTasks = await quartzJobRepository.SelectNoTracking.Where(w => ids.Contains(w.Id)).ToListAsync();
await Service.CloseByIdAsync(quartzJobTasks);
return true;
}
/// <summary>
/// 获取运行日志
/// </summary>
/// <param name="taskId"></param>
/// <param name="page"></param>
/// <param name="size"></param>
/// <returns></returns>
[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
};
}
/// <summary>
/// 扫描本地任务
/// </summary>
/// <returns></returns>
[HttpGet]
public Task<bool> ScanTaskAsync()
{
return Service.RecoveryTaskAsync();
}
}