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