ソースを参照

!1915 记录软删除时间
Merge pull request !1915 from CyrusZhou/v2

zuohuaijun 8 ヶ月 前
コミット
96c7786f4b

+ 7 - 0
Admin.NET/Admin.NET.Core/Entity/EntityBase.cs

@@ -82,6 +82,7 @@ public abstract class EntityBase : EntityBaseId
 /// 框架实体基类(删除标志)
 /// </summary>
 [SugarIndex("index_{table}_D", nameof(IsDelete), OrderByType.Asc)]
+[SugarIndex("index_{table}_DT", nameof(DeleteTime), OrderByType.Asc)]
 public abstract class EntityBaseDel : EntityBase, IDeletedFilter
 {
     /// <summary>
@@ -89,6 +90,12 @@ public abstract class EntityBaseDel : EntityBase, IDeletedFilter
     /// </summary>
     [SugarColumn(ColumnDescription = "软删除")]
     public virtual bool IsDelete { get; set; } = false;
+
+    /// <summary>
+    /// 软删除时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "软删除时间")]
+    public virtual DateTime? DeleteTime { get; set; } 
 }
 
 /// <summary>

+ 4 - 4
Admin.NET/Admin.NET.Core/Extension/RepositoryExtension.cs

@@ -34,7 +34,7 @@ public static class RepositoryExtension
         return db.Updateable(entity).AS().ReSetValue(x => { x.IsDelete = true; })
             .IgnoreColumns(ignoreAllNullColumns: true)
             .EnableDiffLogEvent()   // 记录差异日志
-            .UpdateColumns(x => new { x.IsDelete, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
+            .UpdateColumns(x => new { x.IsDelete, x.DeleteTime, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
             .ExecuteCommand();
     }
 
@@ -62,7 +62,7 @@ public static class RepositoryExtension
         return db.Updateable(entity).AS().ReSetValue(x => { x.IsDelete = true; })
             .IgnoreColumns(ignoreAllNullColumns: true)
             .EnableDiffLogEvent()   // 记录差异日志
-            .UpdateColumns(x => new { x.IsDelete, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
+            .UpdateColumns(x => new { x.IsDelete, x.DeleteTime, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
             .ExecuteCommand();
     }
 
@@ -90,7 +90,7 @@ public static class RepositoryExtension
         return db.Updateable(entity).AS().ReSetValue(x => { x.IsDelete = true; })
             .IgnoreColumns(ignoreAllNullColumns: true)
             .EnableDiffLogEvent()   // 记录差异日志
-            .UpdateColumns(x => new { x.IsDelete, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
+            .UpdateColumns(x => new { x.IsDelete, x.DeleteTime, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
             .ExecuteCommandAsync();
     }
 
@@ -118,7 +118,7 @@ public static class RepositoryExtension
         return db.Updateable(entity).AS().ReSetValue(x => { x.IsDelete = true; })
             .IgnoreColumns(ignoreAllNullColumns: true)
             .EnableDiffLogEvent()   // 记录差异日志
-            .UpdateColumns(x => new { x.IsDelete, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
+            .UpdateColumns(x => new { x.IsDelete, x.DeleteTime, x.UpdateTime, x.UpdateUserId })  // 允许更新的字段-AOP拦截自动设置UpdateTime、UpdateUserId
             .ExecuteCommandAsync();
     }
 

+ 9 - 0
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -245,6 +245,15 @@ public static class SqlSugarSetup
                     entityInfo.SetValue(App.User?.FindFirst(ClaimConst.UserId)?.Value);
                 else if (entityInfo.PropertyName == nameof(EntityBase.UpdateUserName))
                     entityInfo.SetValue(App.User?.FindFirst(ClaimConst.RealName)?.Value);
+                else if (entityInfo.PropertyName == nameof(EntityBaseDel.DeleteTime))
+                {
+                    dynamic entityValue = entityInfo.EntityValue;
+                    var isDelete = entityValue.IsDelete;
+                    if (isDelete == true)
+                    {
+                        entityInfo.SetValue(DateTime.Now);
+                    }
+                }
             }
         };