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