From df19a6d58ef1d94e11c4dbfd76074e0e54d3d32c Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期五, 05 九月 2025 10:59:32 +0800 Subject: [PATCH] feat:开发 --- FlexJobApi.Core/Utils/DbUtils/DbUtils.cs | 57 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 32 insertions(+), 25 deletions(-) diff --git a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs index d06c426..e8e12e3 100644 --- a/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs +++ b/FlexJobApi.Core/Utils/DbUtils/DbUtils.cs @@ -362,7 +362,7 @@ /// <param name="update"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public static async Task<Guid> SaveData<TEntity, TRequest>( + public static async Task<TEntity> SaveData<TEntity, TRequest>( this TRequest request, Func<IQueryable<TEntity>, IQueryable<TEntity>> query = null, Expression<Func<TEntity, bool>> checkExist = null, @@ -385,7 +385,7 @@ if (update != null) update(entity); else request.Adapt(entity); await rep.UpdateAsync(entity); - return entity.Id; + return entity; } else { @@ -393,7 +393,7 @@ if (update != null) update(entity); else request.Adapt(entity); await rep.InsertAsync(entity); - return entity.Id; + return entity; } } @@ -568,37 +568,44 @@ continue; } - Db.GetRepository<DbAuditLog, LogDbContextLocator>().InsertNow(new DbAuditLog + var log = new DbAuditLog { Id = IDGen.NextID(), TableName = entityType.Name, PrimaryKey = (Guid)entity.Property("Id").CurrentValue, - NewValues = entity.State == EntityState.Added || entity.State == EntityState.Modified - ? GetPropertyValuesAsJson(entity) - : null, - OldValues = entity.State == EntityState.Deleted || entity.State == EntityState.Modified - ? GetPropertyValuesAsJson(entity, entity.State == EntityState.Modified) - : null, - Operate = entity.State == EntityState.Added - ? EnumDbAuditOperate.Added - : entity.State == EntityState.Modified - ? EnumDbAuditOperate.Modified - : EnumDbAuditOperate.Deleted, TraceId = App.GetTraceId(), CreatedTime = DateTime.Now, CreatedUserId = logier?.Id, CreatedEnterpriseId = logier?.EnterpriseId - }); + }; + log.Operate = + entity.State == EntityState.Added + ? EnumDbAuditOperate.Added + : entity.State == EntityState.Modified + ? EnumDbAuditOperate.Modified + : EnumDbAuditOperate.Deleted; + if (entity.Property(nameof(CommonEntity.IsDeleted)).CurrentValue is bool isDeleted && isDeleted == true) + { + log.Operate = EnumDbAuditOperate.Deleted; + } + log.NewValues = + log.Operate == EnumDbAuditOperate.Deleted + ? null + : JsonConvert.SerializeObject(entity.Properties + .Where(p => log.Operate == EnumDbAuditOperate.Modified + ? p.IsModified + : true) + .ToDictionary(p => p.Metadata.Name, p => p.CurrentValue)); + log.OldValues = + log.Operate == EnumDbAuditOperate.Added + ? null + : JsonConvert.SerializeObject(entity.Properties + .Where(p => log.Operate == EnumDbAuditOperate.Modified + ? p.IsModified + : true) + .ToDictionary(p => p.Metadata.Name, p => p.OriginalValue)); + Db.GetRepository<DbAuditLog, LogDbContextLocator>().InsertNow(log); } - } - - private static string GetPropertyValuesAsJson(EntityEntry entry, bool getOldValues = false) - { - var properties = entry.Properties - .Where(p => getOldValues ? p.IsModified : true) - .ToDictionary(p => p.Metadata.Name, p => getOldValues ? p.OriginalValue : p.CurrentValue); - - return JsonConvert.SerializeObject(properties); } } } -- Gitblit v1.9.1