From 32288af3e5f12bc48d8360114c872fde5d9ff4a8 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 08 八月 2025 09:09:08 +0800 Subject: [PATCH] pref:优化 --- 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