0
0
Kaynağa Gözat

优化租户数据初始化和数据审计方法

zhontai 3 yıl önce
ebeveyn
işleme
1bad7aa8ba

+ 1 - 1
Admin.Core.Services/Admin/Permission/PermissionService.cs

@@ -200,7 +200,7 @@ namespace Admin.Core.Service.Admin.Permission
             var permissionIds = await _rolePermissionRepository.Select.Where(d => d.RoleId == input.RoleId).ToListAsync(m=>m.PermissionId);
 
             //ÅúÁ¿É¾³ýȨÏÞ
-            var deleteIds = permissionIds.Where(d => !input.PermissionIds.Contains(d.ToInt()));
+            var deleteIds = permissionIds.Where(d => !input.PermissionIds.Contains(d));
             if (deleteIds.Count() > 0)
             {
                 await _rolePermissionRepository.DeleteAsync(m => m.RoleId == input.RoleId && deleteIds.Contains(m.PermissionId));

+ 16 - 0
Admin.Core/Admin.Core.xml

@@ -759,6 +759,14 @@
             配置实体
             </summary>
         </member>
+        <member name="M:Admin.Core.Db.DbHelper.AuditValue(FreeSql.Aop.AuditValueEventArgs,System.TimeSpan,Admin.Core.Common.Auth.IUser)">
+            <summary>
+            审计数据
+            </summary>
+            <param name="e"></param>
+            <param name="timeOffset"></param>
+            <param name="user"></param>
+        </member>
         <member name="M:Admin.Core.Db.DbHelper.SyncStructure(IFreeSql,System.String,Admin.Core.Common.Configs.DbConfig,Admin.Core.Common.Configs.AppConfig)">
             <summary>
             同步结构
@@ -778,10 +786,18 @@
             <typeparam name="T"></typeparam>
             <param name="db"></param>
             <param name="unitOfWork"></param>
+            <param name="tran"></param>
             <param name="data"></param>
             <param name="dbConfig"></param>
             <returns></returns>
         </member>
+        <member name="M:Admin.Core.Db.DbHelper.SyncDataAuditValue(System.Object,FreeSql.Aop.AuditValueEventArgs)">
+            <summary>
+            同步数据审计方法
+            </summary>
+            <param name="s"></param>
+            <param name="e"></param>
+        </member>
         <member name="M:Admin.Core.Db.DbHelper.SyncDataAsync(IFreeSql,Admin.Core.Common.Configs.DbConfig)">
             <summary>
             同步数据

+ 3 - 57
Admin.Core/Db/DBServiceCollectionExtensions.cs

@@ -67,64 +67,10 @@ namespace Admin.Core.Db
             var serverTime = fsql.Select<DualEntity>().Limit(1).First(a => DateTime.UtcNow);
             var timeOffset = DateTime.UtcNow.Subtract(serverTime);
             var user = services.BuildServiceProvider().GetService<IUser>();
-            fsql.Aop.AuditValue += (s, e) =>
+            DbHelper.TimeOffset = timeOffset;
+            fsql.Aop.AuditValue += (s,e) => 
             {
-                if (e.Property.GetCustomAttribute<ServerTimeAttribute>(false) != null
-                       && (e.Column.CsType == typeof(DateTime) || e.Column.CsType == typeof(DateTime?))
-                       && (e.Value == null || (DateTime)e.Value == default || (DateTime?)e.Value == default))
-                {
-                    e.Value = DateTime.Now.Subtract(timeOffset);
-                }
-
-                if (e.Column.CsType == typeof(long)
-                && e.Property.GetCustomAttribute<SnowflakeAttribute>(false) != null
-                && (e.Value == null || (long)e.Value == default || (long?)e.Value == default))
-                {
-                    e.Value = YitIdHelper.NextId();
-                }
-
-                if (user == null || user.Id <= 0)
-                {
-                    return;
-                }
-
-                if (e.AuditValueType == FreeSql.Aop.AuditValueType.Insert)
-                {
-                    switch (e.Property.Name)
-                    {
-                        case "CreatedUserId":
-                            if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                            {
-                                e.Value = user.Id;
-                            }
-                            break;
-                        case "CreatedUserName":
-                            if (e.Value == null || ((string)e.Value).IsNull())
-                            {
-                                e.Value = user.Name;
-                            }
-                            break;
-                        case "TenantId":
-                            if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                            {
-                                e.Value = user.TenantId;
-                            }
-                            break;
-                    }
-                }
-                else if (e.AuditValueType == FreeSql.Aop.AuditValueType.Update)
-                {
-                    switch (e.Property.Name)
-                    {
-                        case "ModifiedUserId":
-                            e.Value = user.Id;
-                            break;
-                        case "ModifiedUserName":
-                            e.Value = user.Name;
-                            break;
-                    }
-
-                }
+                DbHelper.AuditValue(e, timeOffset, user);
             };
             #endregion
 

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
Admin.Core/Db/Data/data.json


+ 147 - 0
Admin.Core/Db/DbHelper.cs

@@ -15,11 +15,20 @@ using Admin.Core.Common.BaseModel;
 using Admin.Core.Service.Admin.Api.Output;
 using Admin.Core.Service.Admin.View.Output;
 using Admin.Core.Service.Admin.Permission.Output;
+using FreeSql.Aop;
+using Admin.Core.Common.Attributes;
+using Admin.Core.Common.Auth;
+using Yitter.IdGenerator;
 
 namespace Admin.Core.Db
 {
     public class DbHelper
     {
+        /// <summary>
+        /// 偏移时间
+        /// </summary>
+        public static TimeSpan TimeOffset;
+
         /// <summary>
         /// 创建数据库
         /// </summary>
@@ -108,6 +117,72 @@ namespace Admin.Core.Db
             }
         }
 
+        /// <summary>
+        /// 审计数据
+        /// </summary>
+        /// <param name="e"></param>
+        /// <param name="timeOffset"></param>
+        /// <param name="user"></param>
+        public static void AuditValue(AuditValueEventArgs e, TimeSpan timeOffset, IUser user)
+        {
+            if (e.Property.GetCustomAttribute<ServerTimeAttribute>(false) != null
+                   && (e.Column.CsType == typeof(DateTime) || e.Column.CsType == typeof(DateTime?))
+                   && (e.Value == null || (DateTime)e.Value == default || (DateTime?)e.Value == default))
+            {
+                e.Value = DateTime.Now.Subtract(timeOffset);
+            }
+
+            if (e.Column.CsType == typeof(long)
+            && e.Property.GetCustomAttribute<SnowflakeAttribute>(false) != null
+            && (e.Value == null || (long)e.Value == default || (long?)e.Value == default))
+            {
+                e.Value = YitIdHelper.NextId();
+            }
+
+            if (user == null || user.Id <= 0)
+            {
+                return;
+            }
+
+            if (e.AuditValueType == FreeSql.Aop.AuditValueType.Insert)
+            {
+                switch (e.Property.Name)
+                {
+                    case "CreatedUserId":
+                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
+                        {
+                            e.Value = user.Id;
+                        }
+                        break;
+                    case "CreatedUserName":
+                        if (e.Value == null || ((string)e.Value).IsNull())
+                        {
+                            e.Value = user.Name;
+                        }
+                        break;
+                    case "TenantId":
+                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
+                        {
+                            e.Value = user.TenantId;
+                        }
+                        break;
+                }
+            }
+            else if (e.AuditValueType == FreeSql.Aop.AuditValueType.Update)
+            {
+                switch (e.Property.Name)
+                {
+                    case "ModifiedUserId":
+                        e.Value = user.Id;
+                        break;
+                    case "ModifiedUserName":
+                        e.Value = user.Name;
+                        break;
+                }
+
+            }
+        }
+
         /// <summary>
         /// 同步结构
         /// </summary>
@@ -168,6 +243,7 @@ namespace Admin.Core.Db
         /// <typeparam name="T"></typeparam>
         /// <param name="db"></param>
         /// <param name="unitOfWork"></param>
+        /// <param name="tran"></param>
         /// <param name="data"></param>
         /// <param name="dbConfig"></param>
         /// <returns></returns>
@@ -233,6 +309,73 @@ namespace Admin.Core.Db
             }
         }
 
+        /// <summary>
+        /// 同步数据审计方法
+        /// </summary>
+        /// <param name="s"></param>
+        /// <param name="e"></param>
+        private static void SyncDataAuditValue(object s, AuditValueEventArgs e)
+        {
+            var user = new { Id = 161223411986501, Name = "平台管理员", TenantId = 161223412138053 };
+
+            if (e.Property.GetCustomAttribute<ServerTimeAttribute>(false) != null
+                   && (e.Column.CsType == typeof(DateTime) || e.Column.CsType == typeof(DateTime?))
+                   && (e.Value == null || (DateTime)e.Value == default || (DateTime?)e.Value == default))
+            {
+                e.Value = DateTime.Now.Subtract(TimeOffset);
+            }
+
+            if (e.Column.CsType == typeof(long)
+            && e.Property.GetCustomAttribute<SnowflakeAttribute>(false) != null
+            && (e.Value == null || (long)e.Value == default || (long?)e.Value == default))
+            {
+                e.Value = YitIdHelper.NextId();
+            }
+
+            if (user == null || user.Id <= 0)
+            {
+                return;
+            }
+
+            if (e.AuditValueType == AuditValueType.Insert)
+            {
+                switch (e.Property.Name)
+                {
+                    case "CreatedUserId":
+                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
+                        {
+                            e.Value = user.Id;
+                        }
+                        break;
+                    case "CreatedUserName":
+                        if (e.Value == null || ((string)e.Value).IsNull())
+                        {
+                            e.Value = user.Name;
+                        }
+                        break;
+                    case "TenantId":
+                        if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
+                        {
+                            e.Value = user.TenantId;
+                        }
+                        break;
+                }
+            }
+            else if (e.AuditValueType == AuditValueType.Update)
+            {
+                switch (e.Property.Name)
+                {
+                    case "ModifiedUserId":
+                        e.Value = user.Id;
+                        break;
+                    case "ModifiedUserName":
+                        e.Value = user.Name;
+                        break;
+                }
+
+            }
+        }
+
         /// <summary>
         /// 同步数据
         /// </summary>
@@ -248,6 +391,8 @@ namespace Admin.Core.Db
 
                 Console.WriteLine("\r\n sync data started");
 
+                db.Aop.AuditValue += SyncDataAuditValue;
+
                 var filePath = Path.Combine(AppContext.BaseDirectory, "Db/Data/data.json").ToPath();
                 var jsonData = FileHelper.ReadFile(filePath);
                 var data = JsonConvert.DeserializeObject<Data>(jsonData);
@@ -275,6 +420,8 @@ namespace Admin.Core.Db
                     uow.Commit();
                 }
 
+                db.Aop.AuditValue -= SyncDataAuditValue;
+
                 Console.WriteLine(" sync data succeed\r\n");
             }
             catch (Exception ex)

+ 1 - 56
Admin.Core/Db/TenantDBServiceCollectionExtensions.cs

@@ -91,62 +91,7 @@ namespace Admin.Core.Db
                 var timeOffset = DateTime.UtcNow.Subtract(serverTime);
                 fsql.Aop.AuditValue += (s, e) =>
                 {
-                    if (e.Property.GetCustomAttribute<ServerTimeAttribute>(false) != null
-                        && (e.Column.CsType == typeof(DateTime) || e.Column.CsType == typeof(DateTime?))
-                        && (e.Value == null || (DateTime)e.Value == default || (DateTime?)e.Value == default))
-                    {
-                        e.Value = DateTime.Now.Subtract(timeOffset);
-                    }
-
-                    if (e.Column.CsType == typeof(long)
-                    && e.Property.GetCustomAttribute<SnowflakeAttribute>(false) != null
-                    && (e.Value == null || (long)e.Value == default || (long?)e.Value == default))
-                    {
-                        e.Value = YitIdHelper.NextId();
-                    }
-
-                    if (user == null || user.Id <= 0)
-                    {
-                        return;
-                    }
-                    
-                    if (e.AuditValueType == FreeSql.Aop.AuditValueType.Insert)
-                    {
-                        switch (e.Property.Name)
-                        {
-                            case "CreatedUserId":
-                                if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                                {
-                                    e.Value = user.Id;
-                                }
-                                break;
-                            case "CreatedUserName":
-                                if (e.Value == null || ((string)e.Value).IsNull())
-                                {
-                                    e.Value = user.Name;
-                                }
-                                break;
-                            case "TenantId":
-                                if (e.Value == null || (long)e.Value == default || (long?)e.Value == default)
-                                {
-                                    e.Value = user.TenantId;
-                                }
-                                break;
-                        }
-                    }
-                    else if (e.AuditValueType == FreeSql.Aop.AuditValueType.Update)
-                    {
-                        switch (e.Property.Name)
-                        {
-                            case "ModifiedUserId":
-                                e.Value = user.Id;
-                                break;
-                            case "ModifiedUserName":
-                                e.Value = user.Name;
-                                break;
-                        }
-                        
-                    }
+                    DbHelper.AuditValue(e, timeOffset, user);
                 };
                 #endregion
                 #endregion

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor