refactor 封装任务,调整人员获取

This commit is contained in:
2024-03-29 10:43:13 +08:00
parent 1d2572e617
commit e2c8dcf8d5
30 changed files with 976 additions and 1003 deletions

View File

@@ -0,0 +1,53 @@
using System.Reflection;
using Kurisu.Core.DataAccess.Entity;
using Kurisu.Scheduled.Abstractions;
using Kurisu.Scheduled.Attributes;
using Kurisu.SqlSugar.Services;
namespace Kurisu.Scheduled;
public abstract class BaseJob : IJob
{
private readonly IServiceProvider _serviceProvider;
public BaseJob(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
protected ILogger Logger { get; set; }
protected IDbContext DbContext { get; set; }
public async Task TodoAsync()
{
using (var scope = _serviceProvider.CreateScope())
{
Logger = scope.ServiceProvider.GetService<ILogger<BaseJob>>();
DbContext = scope.ServiceProvider.GetService<IDbContext>();
var sqlSugarOptionsService = scope.ServiceProvider.GetService<ISqlSugarOptionsService>();
DbContext.Client.QueryFilter.ClearAndBackup<ITenantId>();
sqlSugarOptionsService.IgnoreTenant = true;
var name = this.GetType().GetCustomAttribute<RecurringJobAttribute>()!.Name;
Logger.LogDebug("[{name}]开始执行...", name);
try
{
await RunAsync(scope.ServiceProvider);
}
catch (Exception ex)
{
Logger.LogError(ex, "[{name}]执行失败:{message} {stacktrace}", name, ex.Message, ex.StackTrace);
}
finally
{
Logger.LogDebug("[{name}]执行结束...", name);
DbContext.Client.QueryFilter.Restore();
sqlSugarOptionsService.IgnoreTenant = false;
}
}
}
public abstract Task RunAsync(IServiceProvider serviceProvider);
}