namespace Admin.NET.Core.Service;
///
/// 系统作业任务服务
///
[ApiDescriptionSettings(Order = 188)]
public class SysJobService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _sysJobDetailRep;
private readonly SqlSugarRepository _sysJobTriggerRep;
private readonly SqlSugarRepository _sysJobClusterRep;
private readonly ISchedulerFactory _schedulerFactory;
public SysJobService(SqlSugarRepository sysJobDetailRep,
SqlSugarRepository sysJobTriggerRep,
SqlSugarRepository sysJobClusterRep,
ISchedulerFactory schedulerFactory)
{
_sysJobDetailRep = sysJobDetailRep;
_sysJobTriggerRep = sysJobTriggerRep;
_sysJobClusterRep = sysJobClusterRep;
_schedulerFactory = schedulerFactory;
}
///
/// 获取作业分页列表
///
[HttpGet("/sysJob/page")]
public async Task> GetJobPage([FromQuery] PageJobInput input)
{
var jobDetails = await _sysJobDetailRep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.JobId), u => u.JobId.Contains(input.JobId))
.WhereIF(!string.IsNullOrWhiteSpace(input.Description), u => u.Description.Contains(input.Description))
.Select(d => new JobOutput
{
JobDetail = d,
}).ToPagedListAsync(input.Page, input.PageSize);
await _sysJobDetailRep.AsSugarClient().ThenMapperAsync(jobDetails.Items, async u =>
{
u.JobTriggers = await _sysJobTriggerRep.GetListAsync(t => t.JobId == u.JobDetail.JobId);
});
return jobDetails;
}
///
/// 添加作业
///
///
[HttpPost("/sysJob/detailAdd")]
public async Task AddJobDetail(AddJobDetailInput input)
{
var isExist = await _sysJobDetailRep.IsAnyAsync(u => u.JobId == input.JobId && u.Id != input.Id);
if (isExist)
throw Oops.Oh(ErrorCodeEnum.D1006);
await _sysJobDetailRep.UpdateAsync(input.Adapt());
}
///
/// 更新作业
///
///
[HttpPost("/sysJob/detailUpdate")]
public async Task UpdateJobDetail(UpdateJobDetailInput input)
{
var isExist = await _sysJobDetailRep.IsAnyAsync(u => u.JobId == input.JobId && u.Id != input.Id);
if (isExist)
throw Oops.Oh(ErrorCodeEnum.D1006);
await _sysJobDetailRep.UpdateAsync(input.Adapt());
}
///
/// 删除作业
///
///
[HttpPost("/sysJob/detailDelete")]
public async Task DeleteJobDetail(DeleteJobDetailInput input)
{
await _sysJobDetailRep.DeleteAsync(u => u.JobId == input.JobId);
await _sysJobTriggerRep.DeleteAsync(u => u.JobId == input.JobId);
var schedulerResult = _schedulerFactory.TryRemoveJob(input.JobId, out _);
return await Task.FromResult(schedulerResult);
}
///
/// 获取触发器列表
///
[HttpGet("/sysJob/triggerList")]
public async Task> GetJobTriggerList([FromQuery] JobDetailInput input)
{
return await _sysJobTriggerRep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.JobId), u => u.JobId.Contains(input.JobId))
.ToListAsync();
}
///
/// 添加作业
///
///
[HttpPost("/sysJob/triggerAdd")]
public async Task AddJobTrigger(AddJobTriggerInput input)
{
var isExist = await _sysJobDetailRep.IsAnyAsync(u => u.JobId == input.JobId && u.Id != input.Id);
if (isExist)
throw Oops.Oh(ErrorCodeEnum.D1006);
await _sysJobDetailRep.UpdateAsync(input.Adapt());
}
///
/// 更新触发器
///
///
[HttpPost("/sysJob/triggerUpdate")]
public async Task UpdateJobTrigger(UpdateJobTriggerInput input)
{
var isExist = await _sysJobDetailRep.IsAnyAsync(u => u.JobId == input.JobId && u.Id != input.Id);
if (isExist)
throw Oops.Oh(ErrorCodeEnum.D1006);
await _sysJobDetailRep.UpdateAsync(input.Adapt());
}
///
/// 删除触发器
///
///
[HttpPost("/sysJob/triggerDelete")]
public async Task DeleteJobTrigger(DeleteJobTriggerInput input)
{
await _sysJobTriggerRep.DeleteAsync(u => u.JobId == input.JobId);
}
///
/// 获取集群列表
///
[HttpGet("/sysJob/clusterList")]
public async Task> GetJobClusterList()
{
return await _sysJobClusterRep.GetListAsync();
}
}