From b4943813a032976e0febdd7f22d8bcf084e331c5 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 07 八月 2025 14:47:36 +0800
Subject: [PATCH] feat:字典开发

---
 FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
index 0bf57e6..9b51203 100644
--- a/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
+++ b/FlexJobApi.Core/Utils/ResourceUtils/ResourceUtils.cs
@@ -187,7 +187,7 @@
                 }
             }
 
-            var resources = await SaveResourcesAsync(models, traceId, rep);
+            var resources = await SaveResourcesAsync(models, rep);
 
             DynamicControllersHotPlug(resources, provider);
 
@@ -201,7 +201,7 @@
         /// <param name="traceId"></param>
         /// <param name="rep"></param>
         /// <returns></returns>
-        private static async Task<List<Resource>> SaveResourcesAsync(List<ResourceModel> models, string traceId, IRepository<Resource> rep = null)
+        private static async Task<List<Resource>> SaveResourcesAsync(List<ResourceModel> models, IRepository<Resource> rep = null)
         {
             rep = rep ?? Db.GetRepository<Resource>();
             var resources = await rep.AsQueryable()
@@ -213,22 +213,33 @@
                 if (resource == null)
                 {
                     resource = new Resource();
+                    resource.Id = IDGen.NextID();
+                    resource.CreatedTime = DateTimeOffset.Now;
                     model.Adapt(resource);
                     await rep.InsertAsync(resource);
                     resources.Add(resource);
                 }
                 else
                 {
-                    model.Adapt(resource);
-                    await rep.UpdateAsync(resource);
+                    var resourceBakModel = new ResourceModel();
+                    resource.Adapt(resourceBakModel);
+                    resourceBakModel.TraceId = model.TraceId;
+                    resourceBakModel.DynamicAssemblyName = model.DynamicAssemblyName;
+                    if (resourceBakModel.ToJson() != model.ToJson())
+                    {
+                        model.Adapt(resource);
+                        resource.UpdatedTime = DateTimeOffset.Now;
+                        await rep.UpdateAsync(resource);
+                    }
                 }
             }
 
-            var expiredResources = resources.Where(it => it.TraceId != traceId).ToList();
+            var expiredResources = resources.Where(it => !models.Any(m => m.Route == it.Route && m.Method == it.Method)).ToList();
             foreach (var expiredResource in expiredResources)
             {
-                expiredResource.IsExpired = true;
-                await rep.UpdateAsync(expiredResource);
+                //expiredResource.IsExpired = true;
+                //await rep.UpdateAsync(expiredResource);
+                await rep.DeleteAsync(expiredResource);
             }
 
             return resources.Where(it => !it.IsExpired).ToList();

--
Gitblit v1.9.1