From 723bfd806486bb870f0003f2cfbf61476a4e70f6 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 04 八月 2025 16:59:09 +0800 Subject: [PATCH] pref:资源接口 --- FlexJobApi.Core/Utils/DbUtils/DbUtils.cs | 66 +++++++++++++++------------------ 1 files changed, 30 insertions(+), 36 deletions(-) diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs index 1547067..5531843 100644 --- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs +++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs @@ -18,38 +18,27 @@ public static class DbUtils { /// <summary> - /// 鐢熸垚瀹炰綋娉ㄩ噴 + /// 鐢熸垚瀹炰綋 /// </summary> /// <param name="modelBuilder"></param> /// <param name="dbContextLocator"></param> /// <returns></returns> - public static async Task BuildEntityComment(ModelBuilder modelBuilder, Type dbContextLocator = null) + public static async Task BuildEntity(ModelBuilder modelBuilder, Type dbContextLocator = null) { var xmlDoc = await XmlDocUtils.GetXmlDocAsync(); - var entityTypes = App.Assemblies - .Where(it => it.FullName.Contains("FlexJob")) - .SelectMany(it => it.GetTypes()) - .Where(it => - it.IsClass - && !it.IsAbstract - && typeof(IPrivateEntity).IsAssignableFrom(it) - && (dbContextLocator == null - ? it.BaseType == typeof(CommonEntity) - : it.BaseType.GenericTypeArguments.Any(it => it == dbContextLocator))) - .ToList(); - foreach (var entityType in entityTypes) + foreach (var entityType in modelBuilder.Model.GetEntityTypes()) { Console.WriteLine($"姝e湪鐢熸垚琛細{entityType.Name}"); // 鑾峰彇瀹炰綋绫荤殑XML娉ㄩ噴锛屽苟璁剧疆涓鸿〃娉ㄩ噴 - var entityBuilder = modelBuilder.Entity(entityType); - string typeComment = (await entityType.GetXmlDocMemberAsync(xmlDoc))?.Summary; + var entityBuilder = modelBuilder.Entity(entityType.ClrType); + string typeComment = (await entityType.ClrType.GetXmlDocMemberAsync(xmlDoc))?.Summary; if (!string.IsNullOrEmpty(typeComment)) { Console.WriteLine($"姝e湪鐢熸垚琛ㄦ敞閲婏細{entityType.Name}-{typeComment}"); entityBuilder.ToTable(it => it.HasComment(typeComment)); } // 鑾峰彇瀹炰綋灞炴�х殑XML娉ㄩ噴锛屽苟璁剧疆涓哄垪娉ㄩ噴 - var properties = entityType.GetProperties() + var properties = entityType.ClrType.GetProperties() .Where(p => p.CanRead && p.CanWrite @@ -63,6 +52,19 @@ Console.WriteLine($"姝e湪鐢熸垚灞炴�ф敞閲婏細{property.Name}-{propComment}"); entityBuilder.Property(property.Name).HasComment(propComment); } + } + + if (typeof(CommonEntity).IsAssignableFrom(entityType.ClrType)) + { + // 鏋勫缓绛涢�夋潯浠讹細IsDeleted == false + var parameter = Expression.Parameter(entityType.ClrType, "e"); + var property = Expression.Property(parameter, "IsDeleted"); + var constant = Expression.Constant(false); + var equal = Expression.Equal(property, constant); + var lambda = Expression.Lambda(equal, parameter); + + // 娣诲姞鍏ㄥ眬绛涢�夊櫒 + modelBuilder.Entity(entityType.ClrType).HasQueryFilter(lambda); } } } @@ -118,26 +120,33 @@ { prop.CurrentValue = logier?.UserInfoId; } + + // 璧嬪�艰窡韪狪d + prop = entity.Property(nameof(CommonEntity.TraceId)); + if (prop != null) + { + prop.CurrentValue = App.GetTraceId(); + } } else { // 璧嬪�间慨鏀规棩鏈� var prop = entity.Property(nameof(CommonEntity.UpdatedTime)); - if (prop != null && prop.CurrentValue?.ToDateTime() == null) + if (prop != null) { prop.CurrentValue = DateTimeOffset.Now; } // 璧嬪�肩敤鎴蜂俊鎭疘d prop = entity.Property(nameof(CommonEntity.UpdatedUserInfoId)); - if (prop != null && prop.CurrentValue == null) + if (prop != null) { prop.CurrentValue = logier?.UserInfoId; } // 璧嬪�艰窡韪狪d prop = entity.Property(nameof(CommonEntity.TraceId)); - if (prop != null && prop.CurrentValue == null) + if (prop != null) { prop.CurrentValue = App.GetTraceId(); } @@ -148,7 +157,7 @@ entity.State = EntityState.Modified; prop = entity.Property(nameof(CommonEntity.IsDeleted)); - if (prop != null && prop.CurrentValue == null) + if (prop != null) { prop.CurrentValue = true; } @@ -190,21 +199,6 @@ .ToDictionary(p => p.Metadata.Name, p => getOldValues ? p.OriginalValue : p.CurrentValue); return JsonConvert.SerializeObject(properties); - } - - public static void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator) - { - var metadata = entityBuilder.Metadata; - - var parameter = Expression.Parameter(metadata.ClrType, "e"); - var property = Expression.Property(parameter, nameof(CommonEntity.IsDeleted)); - var falseConstant = Expression.Constant(false, typeof(bool)); - var fakeDeleteQueryFilterExpression = Expression.Lambda( - Expression.Equal(property, falseConstant), - parameter - ); - if (fakeDeleteQueryFilterExpression == null) return; - entityBuilder.HasQueryFilter(fakeDeleteQueryFilterExpression); } } } -- Gitblit v1.9.1