From 1d03ddefc1b5458eede592d5b5780c3c2b10dfca Mon Sep 17 00:00:00 2001
From: lijin <17408817@qq.com>
Date: 星期四, 20 十一月 2025 09:05:16 +0800
Subject: [PATCH] Merge branch 'dev-818-3.4.2.12' of http://120.26.58.240:8888/r/ApiTools into dev-818-3.4.2.12
---
ApiTools.Core/Utils/ScheduleUtils/DbJobPersistence.cs | 88 +++++++------------------------------------
1 files changed, 15 insertions(+), 73 deletions(-)
diff --git a/ApiTools.Core/Utils/ScheduleUtils/DbJobPersistence.cs b/ApiTools.Core/Utils/ScheduleUtils/DbJobPersistence.cs
index b637fb8..7d8de22 100644
--- a/ApiTools.Core/Utils/ScheduleUtils/DbJobPersistence.cs
+++ b/ApiTools.Core/Utils/ScheduleUtils/DbJobPersistence.cs
@@ -16,21 +16,13 @@
/// <summary>
/// 浣滀笟鎸佷箙鍖栵紙鏁版嵁搴擄級
/// </summary>
- public class DbJobPersistence : IJobPersistence, IDisposable
+ public class DbJobPersistence : IJobPersistence
{
- private readonly IServiceScope _serviceScope;
- private readonly IRepository<ScheduleJobDetail> repScheduleJobDetail;
- private readonly IRepository<ScheduleJobTrigger> repScheduleJobTrigger;
- private readonly IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator> repScheduleJobTriggerTimeline;
+ private readonly IServiceScopeFactory serviceScopeFactory;
- public DbJobPersistence(IServiceScopeFactory scopeFactory)
+ public DbJobPersistence(IServiceScopeFactory serviceScopeFactory)
{
- _serviceScope = scopeFactory.CreateScope();
- var services = _serviceScope.ServiceProvider;
-
- repScheduleJobDetail = services.GetService<IRepository<ScheduleJobDetail>>();
- repScheduleJobTrigger = services.GetService<IRepository<ScheduleJobTrigger>>();
- repScheduleJobTriggerTimeline = services.GetService<IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator>>();
+ this.serviceScopeFactory = serviceScopeFactory;
}
/// <summary>
@@ -44,78 +36,28 @@
public Task<SchedulerBuilder> OnLoadingAsync(SchedulerBuilder builder, CancellationToken stoppingToken)
{
- // 鏍囪浠庡叾浠栧湴鏂规洿鏂帮紝姣斿鏁版嵁搴�
return Task.FromResult(builder);
}
- public async Task OnChangedAsync(PersistenceContext context)
+ public Task OnChangedAsync(PersistenceContext context)
{
- switch (context.Behavior)
- {
- case PersistenceBehavior.Appended:
- var insertEntity = new ScheduleJobDetail();
- context.JobDetail.Adapt(insertEntity);
- await repScheduleJobDetail.InsertNowAsync(insertEntity);
- break;
- case PersistenceBehavior.Updated:
- var updateEntity = await repScheduleJobDetail.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId);
- if (updateEntity != null)
- {
- context.JobDetail.Adapt(updateEntity);
- await repScheduleJobDetail.UpdateNowAsync(updateEntity);
- }
- break;
- case PersistenceBehavior.Removed:
- var deleteEntity = await repScheduleJobDetail.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId);
- if (deleteEntity != null)
- {
- await repScheduleJobDetail.DeleteNowAsync(deleteEntity);
- }
- break;
- default:
- break;
- }
+ return Task.CompletedTask;
}
- public async Task OnTriggerChangedAsync(PersistenceTriggerContext context)
+ public Task OnTriggerChangedAsync(PersistenceTriggerContext context)
{
- switch (context.Behavior)
- {
- case PersistenceBehavior.Appended:
- var insertEntity = new ScheduleJobTrigger();
- context.Trigger.Adapt(insertEntity);
- await repScheduleJobTrigger.InsertNowAsync(insertEntity);
- break;
- case PersistenceBehavior.Updated:
- var updateEntity = await repScheduleJobTrigger.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId && it.TriggerId == context.TriggerId);
- if (updateEntity != null)
- {
- context.Trigger.Adapt(updateEntity);
- await repScheduleJobTrigger.UpdateNowAsync(updateEntity);
- }
- break;
- case PersistenceBehavior.Removed:
- var deleteEntity = await repScheduleJobTrigger.AsQueryable().FirstOrDefaultAsync(it => it.JobId == context.JobId && it.TriggerId == context.TriggerId);
- if (deleteEntity != null)
- {
- await repScheduleJobTrigger.DeleteNowAsync(deleteEntity);
- }
- break;
- default:
- break;
- }
+ return Task.CompletedTask;
}
public async Task OnExecutionRecordAsync(PersistenceExecutionRecordContext context)
{
- var entity = new ScheduleJobTriggerTimeline();
- context.Timeline.Adapt(entity);
- await repScheduleJobTriggerTimeline.InsertNowAsync(entity);
- }
-
- public void Dispose()
- {
- _serviceScope?.Dispose();
+ using (var scope = serviceScopeFactory.CreateScope())
+ {
+ var rep = scope.ServiceProvider.GetRequiredService<IRepository<ScheduleJobTriggerTimeline, LogDbContextLocator>>();
+ var entity = new ScheduleJobTriggerTimeline();
+ context.Timeline.Adapt(entity);
+ await rep.InsertNowAsync(entity);
+ }
}
}
}
--
Gitblit v1.9.1