using JNPF.Common.Configuration;
using JNPF.DependencyInjection;
using JNPF.EventBus;
using JNPF.Systems.Entitys.System;
using SqlSugar;
namespace JNPF.EventHandler;
///
/// 任务事件订阅.
///
public class TaskEventSubscriber : IEventSubscriber, ISingleton
{
///
/// 初始化客户端.
///
private static SqlSugarScope? _sqlSugarClient;
///
/// 构造函数.
///
public TaskEventSubscriber(ISqlSugarClient context)
{
_sqlSugarClient = (SqlSugarScope)context;
}
///
/// 创建任务日记.
///
///
///
[EventSubscribe("Task:UpdateTask")]
public async Task UpdateTask(EventHandlerExecutingContext context)
{
var log = (TaskEventSource)context.Source;
if (KeyVariable.MultiTenancy)
{
if (log.ConnectionConfig.ConfigId == null) return;
_sqlSugarClient.AddConnection(JNPFTenantExtensions.GetConfig(log.ConnectionConfig));
_sqlSugarClient.ChangeDatabase(log.ConnectionConfig.ConfigId);
}
await _sqlSugarClient.Updateable().SetColumns(x => new TimeTaskEntity()
{
RunCount = x.RunCount + 1,
LastRunTime = DateTime.Now,
NextRunTime = log.Entity.NextRunTime,
LastModifyUserId = "admin",
LastModifyTime = DateTime.Now
}).Where(x => x.Id == log.Entity.Id).ExecuteCommandAsync();
}
}