Ver código fonte

增加差异日志

zuohuaijun 3 anos atrás
pai
commit
d7b7240889

+ 13 - 12
Admin.NET/Admin.NET.Application/AppConfig.json

@@ -1,21 +1,22 @@
 {
   "ConnectionStrings": {
-    "DefaultConnection": "server=116i.cn;Database=mooc_db;Uid=root;Pwd=zhaofei242@;pooling=true;port=3306;sslMode=None;CharSet=utf8;Convert Zero Datetime=True;AllowLoadLocalInfile=true",
-    "DefaultDbType": "MySql", // MySql、SqlServer、Sqlite、Oracle、PostgreSQL、Dm、Kdbndp、Oscar、MySqlConnector、Access
-    "InitTable": true, // 是否生成库表和种子数据
-    "DisableDiffLog": false, // 禁用数据库表差异日志
+    "DefaultConnection": "DataSource=C:\\db\\Admin.NET.db",
+    "DefaultDbType": "Sqlite", // MySql、SqlServer、Sqlite、Oracle、PostgreSQL、Dm、Kdbndp、Oscar、MySqlConnector、Access
+    "EnableInitTable": true, // 启用初始化库表
+    "EnableSeedData": true, // 启用种子数据
+    "EnableDiffLog": false, // 启用库表差异日志
     "DbConfigs": [
       {
-        "DbConfigId": "mooc_data_db",
-        "DbType": "MySql",
-        "DbConnection": "server=116i.cn;Database=mooc_data_db;Uid=root;Pwd=zhaofei242@;pooling=true;port=3306;sslMode=None;CharSet=utf8;Convert Zero Datetime=True;AllowLoadLocalInfile=true",
-        "InitTable": true
+        "DbConfigId": "Test",
+        "DbType": "Sqlite",
+        "DbConnection": "DataSource=C:\\db\\Test.db",
+        "EnableInitTable": true
       },
       {
-        "DbConfigId": "mooc_log_db",
-        "DbType": "MySql",
-        "DbConnection": "server=116i.cn;Database=mooc_log_db;Uid=root;Pwd=zhaofei242@;pooling=true;port=3306;sslMode=None;CharSet=utf8;Convert Zero Datetime=True;AllowLoadLocalInfile=true",
-        "InitTable": false
+        "DbConfigId": "Test1",
+        "DbType": "Sqlite",
+        "DbConnection": "DataSource=C:\\db\\Test1.db",
+        "EnableInitTable": false
       }
     ]
   },

+ 12 - 13
Admin.NET/Admin.NET.Application/Const/TestConst.cs

@@ -1,15 +1,14 @@
-namespace Admin.NET.Application.Const
+namespace Admin.NET.Application.Const;
+
+public class TestConst
 {
-    public class TestConst
-    {
-        /// <summary>
-        /// API分组名称
-        /// </summary>
-        public const string GroupName = "我的业务";
+    /// <summary>
+    /// API分组名称
+    /// </summary>
+    public const string GroupName = "我的业务";
 
-        /// <summary>
-        /// 自己业务数据库标识
-        /// </summary>
-        public const string ConfigId = "Test";
-    }
-}
+    /// <summary>
+    /// 自己业务数据库标识
+    /// </summary>
+    public const string ConfigId = "Test";
+}

+ 23 - 28
Admin.NET/Admin.NET.Application/Entity/Student.cs

@@ -1,35 +1,30 @@
 using Admin.NET.Application.Const;
-using Admin.NET.Core;
-using SqlSugar;
-using System;
-using System.ComponentModel.DataAnnotations;
 
-namespace Admin.NET.Application.Entity
+namespace Admin.NET.Application.Entity;
+
+/// <summary>
+/// 多库代码生成测试学生表
+/// </summary>
+[SugarTable("d_student", "多库代码生成测试学生表")]
+[SqlSugarEntity(DbConfigId = TestConst.ConfigId)]
+public class Student : EntityBase
 {
     /// <summary>
-    /// 多库代码生成测试学生表
+    /// 姓名
     /// </summary>
-    [SugarTable("d_student", "多库代码生成测试学生表")]
-    [SqlSugarEntity(DbConfigId = TestConst.ConfigId)]
-    public class Student : EntityBase
-    {
-        /// <summary>
-        /// 姓名
-        /// </summary>
-        [SugarColumn(ColumnDescription = "姓名", Length = 20)]
-        [Required, MaxLength(20)]
-        public string Name { get; set; }
+    [SugarColumn(ColumnDescription = "姓名", Length = 20)]
+    [Required, MaxLength(20)]
+    public string Name { get; set; }
 
-        /// <summary>
-        /// 年龄
-        /// </summary>
-        [SugarColumn(ColumnDescription = "年龄")]
-        public int Age { get; set; }
+    /// <summary>
+    /// 年龄
+    /// </summary>
+    [SugarColumn(ColumnDescription = "年龄")]
+    public int Age { get; set; }
 
-        /// <summary>
-        /// 出生日期
-        /// </summary>
-        [SugarColumn(ColumnDescription = "出生日期")]
-        public DateTime BirthDate { get; set; }
-    }
-}
+    /// <summary>
+    /// 出生日期
+    /// </summary>
+    [SugarColumn(ColumnDescription = "出生日期")]
+    public DateTime BirthDate { get; set; }
+}

+ 22 - 28
Admin.NET/Admin.NET.Application/Entity/Test.cs

@@ -1,34 +1,28 @@
-using Admin.NET.Core;
-using SqlSugar;
-using System;
-using System.ComponentModel.DataAnnotations;
+namespace Admin.NET.Application.Entity;
 
-namespace Admin.NET.Application.Entity
+/// <summary>
+/// 自己业务数据表
+/// </summary>
+[SugarTable("d_test", "自己业务数据表")]
+[SqlSugarEntity] // [SqlSugarEntity(DbConfigId = TestConst.ConfigId)]
+public class Test : EntityBase
 {
     /// <summary>
-    /// 自己业务数据表
+    /// 姓名
     /// </summary>
-    [SugarTable("d_test", "自己业务数据表")]
-    [SqlSugarEntity] // [SqlSugarEntity(DbConfigId = TestConst.ConfigId)]
-    public class Test : EntityBase
-    {
-        /// <summary>
-        /// 姓名
-        /// </summary>
-        [SugarColumn(ColumnDescription = "姓名", Length = 20)]
-        [Required, MaxLength(20)]
-        public string Name { get; set; }
+    [SugarColumn(ColumnDescription = "姓名", Length = 20)]
+    [Required, MaxLength(20)]
+    public string Name { get; set; }
 
-        /// <summary>
-        /// 年龄
-        /// </summary>
-        [SugarColumn(ColumnDescription = "年龄")]
-        public int Age { get; set; }
+    /// <summary>
+    /// 年龄
+    /// </summary>
+    [SugarColumn(ColumnDescription = "年龄")]
+    public int Age { get; set; }
 
-        /// <summary>
-        /// 出生日期
-        /// </summary>
-        [SugarColumn(ColumnDescription = "出生日期")]
-        public DateTime BirthDate { get; set; }
-    }
-}
+    /// <summary>
+    /// 出生日期
+    /// </summary>
+    [SugarColumn(ColumnDescription = "出生日期")]
+    public DateTime BirthDate { get; set; }
+}

+ 20 - 24
Admin.NET/Admin.NET.Application/Entity/TreeTest.cs

@@ -1,31 +1,27 @@
 using Admin.NET.Application.Const;
-using Admin.NET.Core;
-using SqlSugar;
-using System.Collections.Generic;
 
-namespace Admin.NET.Application.Entity
+namespace Admin.NET.Application.Entity;
+
+/// <summary>
+/// 多库代码生成树形测试表
+/// </summary>
+[SugarTable("d_treetest", "多库代码生成树形测试表")]
+[SqlSugarEntity(DbConfigId = TestConst.ConfigId)]
+public class TreeTest : EntityBase
 {
     /// <summary>
-    /// 多库代码生成树形测试表
+    /// 名称
     /// </summary>
-    [SugarTable("d_treetest", "多库代码生成树形测试表")]
-    [SqlSugarEntity(DbConfigId = TestConst.ConfigId)]
-    public class TreeTest : EntityBase
-    {
-        /// <summary>
-        /// 名称
-        /// </summary>
-        public string Name { get; set; }
+    public string Name { get; set; }
 
-        /// <summary>
-        /// 父级
-        /// </summary>
-        public long ParentId { get; set; }//父级字段
+    /// <summary>
+    /// 父级
+    /// </summary>
+    public long ParentId { get; set; }//父级字段
 
-        /// <summary>
-        /// Child
-        /// </summary>
-        [SqlSugar.SugarColumn(IsIgnore = true)]
-        public List<TreeTest> Child { get; set; }
-    }
-}
+    /// <summary>
+    /// Child
+    /// </summary>
+    [SqlSugar.SugarColumn(IsIgnore = true)]
+    public List<TreeTest> Child { get; set; }
+}

+ 18 - 27
Admin.NET/Admin.NET.Application/Filter/DataEntityFilter.cs

@@ -1,33 +1,24 @@
-using Admin.NET.Application.Entity;
-using Admin.NET.Core;
-using Furion;
-using SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
+namespace Admin.NET.Application.Filter;
 
-namespace Admin.NET.Application.Filter
+/// <summary>
+/// 自定义业务实体过滤器(XXX数据)
+/// </summary>
+public class DataEntityFilter : IEntityFilter
 {
-    /// <summary>
-    /// 自定义业务实体过滤器(XXX数据)
-    /// </summary>
-    public class DataEntityFilter : IEntityFilter
+    public IEnumerable<TableFilterItem<object>> AddEntityFilter()
     {
-        public IEnumerable<TableFilterItem<object>> AddEntityFilter()
-        {
-            // 当前用户所属机构
-            var orgName = App.User?.FindFirst(ClaimConst.OrgName)?.Value;
-            if (string.IsNullOrWhiteSpace(orgName))
-                return null;
+        // 当前用户所属机构
+        var orgName = App.User?.FindFirst(ClaimConst.OrgName)?.Value;
+        if (string.IsNullOrWhiteSpace(orgName))
+            return null;
 
-            // 构造自定义条件的过滤器
-            Expression<Func<Test, bool>> dynamicExpression = u => u.Name.Contains(orgName);
-            var tableFilterItem = new TableFilterItem<object>(typeof(Test), dynamicExpression);
+        // 构造自定义条件的过滤器
+        Expression<Func<Test, bool>> dynamicExpression = u => u.Name.Contains(orgName);
+        var tableFilterItem = new TableFilterItem<object>(typeof(Test), dynamicExpression);
 
-            return new[]
-            {
-                tableFilterItem
-            };
-        }
+        return new[]
+        {
+            tableFilterItem
+        };
     }
-}
+}

+ 7 - 7
Admin.NET/Admin.NET.Application/GlobalUsings.cs

@@ -1,14 +1,14 @@
-global using Furion;
+global using Admin.NET.Application.Entity;
+global using Admin.NET.Core;
+global using Furion;
 global using Furion.DependencyInjection;
 global using Furion.DynamicApiController;
-global using Furion.RemoteRequest.Extensions;
-global using Mapster;
 global using Microsoft.AspNetCore.Mvc;
 global using Microsoft.Extensions.DependencyInjection;
 global using SqlSugar;
+global using System;
+global using System.Collections.Generic;
 global using System.ComponentModel.DataAnnotations;
-global using System.Data;
-global using System.Linq.Dynamic.Core;
+global using System.Linq.Expressions;
 global using System.Threading.Tasks;
-global using Admin.NET.Core;
-global using Admin.NET.Application.Entity;
+

+ 13 - 19
Admin.NET/Admin.NET.Application/SeedData/TestSeedData.cs

@@ -1,26 +1,20 @@
-using Admin.NET.Application.Entity;
-using Admin.NET.Core;
-using System;
-using System.Collections.Generic;
+namespace Admin.NET.Application.SeedData;
 
-namespace Admin.NET.Application.SeedData
+/// <summary>
+/// 自己业务表种子数据
+/// </summary>
+public class TestSeedData : ISqlSugarEntitySeedData<Test>
 {
     /// <summary>
-    /// 自己业务表种子数据
+    /// 种子数据
     /// </summary>
-    public class TestSeedData : ISqlSugarEntitySeedData<Test>
+    /// <returns></returns>
+    public IEnumerable<Test> HasData()
     {
-        /// <summary>
-        /// 种子数据
-        /// </summary>
-        /// <returns></returns>
-        public IEnumerable<Test> HasData()
+        return new[]
         {
-            return new[]
-            {
-                new Test{ Id=252885263003800, Name="123", Age=20, CreateTime=DateTime.Parse("2022-04-12 00:00:00") },
-                new Test{ Id=252885263003801, Name="456", Age=30, CreateTime=DateTime.Parse("2022-04-12 00:00:00") },
-            };
-        }
+            new Test{ Id=252885263003800, Name="123", Age=20, CreateTime=DateTime.Parse("2022-04-12 00:00:00") },
+            new Test{ Id=252885263003801, Name="456", Age=30, CreateTime=DateTime.Parse("2022-04-12 00:00:00") },
+        };
     }
-}
+}

+ 20 - 28
Admin.NET/Admin.NET.Application/Service/TestService.cs

@@ -1,35 +1,27 @@
 using Admin.NET.Application.Const;
-using Admin.NET.Application.Entity;
-using Admin.NET.Core;
-using Furion.DependencyInjection;
-using Furion.DynamicApiController;
-using Microsoft.AspNetCore.Mvc;
-using System.Collections.Generic;
-using System.Threading.Tasks;
 
-namespace Admin.NET.Application.Serice
+namespace Admin.NET.Application.Serice;
+
+/// <summary>
+/// 自己业务服务
+/// </summary>
+[ApiDescriptionSettings(TestConst.GroupName, Name = "XXX模块", Order = 200)]
+public class TestService : IDynamicApiController, ITransient
 {
+    private readonly SqlSugarRepository<Test> _testRep;
+
+    public TestService(SqlSugarRepository<Test> testRep)
+    {
+        _testRep = testRep;
+    }
+
     /// <summary>
-    /// 自己业务服务
+    /// 获取列表
     /// </summary>
-    [ApiDescriptionSettings(TestConst.GroupName, Name = "XXX模块", Order = 200)]
-    public class TestService : IDynamicApiController, ITransient
+    /// <returns></returns>
+    [HttpGet("/test/list")]
+    public async Task<List<Test>> GetTestList()
     {
-        private readonly SqlSugarRepository<Test> _testRep;
-
-        public TestService(SqlSugarRepository<Test> testRep)
-        {
-            _testRep = testRep;
-        }
-
-        /// <summary>
-        /// 获取列表
-        /// </summary>
-        /// <returns></returns>
-        [HttpGet("/test/list")]
-        public async Task<List<Test>> GetTestList()
-        {
-            return await _testRep.GetListAsync();
-        }
+        return await _testRep.GetListAsync();
     }
-}
+}

+ 10 - 13
Admin.NET/Admin.NET.Application/Startup.cs

@@ -1,19 +1,16 @@
-using Furion;
-using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.DependencyInjection;
 
-namespace Admin.NET.Application
+namespace Admin.NET.Application;
+
+[AppStartup(100)]
+public class Startup : AppStartup
 {
-    [AppStartup(100)]
-    public class Startup : AppStartup
+    public void ConfigureServices(IServiceCollection services)
     {
-        public void ConfigureServices(IServiceCollection services)
-        {
-        }
+    }
 
-        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
-        {
-        }
+    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+    {
     }
-}
+}

+ 133 - 8
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -701,6 +701,46 @@
             真实姓名
             </summary>
         </member>
+        <member name="T:Admin.NET.Core.SysLogDiff">
+            <summary>
+            系统差异日志表
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.BeforeData">
+            <summary>
+            操作前记录
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.AfterData">
+            <summary>
+            操作后记录
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.Sql">
+            <summary>
+            Sql
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.Parameters">
+            <summary>
+            参数  手动传入的参数
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.BusinessData">
+            <summary>
+            业务对象  
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.DiffType">
+            <summary>
+            差异操作
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.SysLogDiff.Duration">
+            <summary>
+            耗时
+            </summary>
+        </member>
         <member name="T:Admin.NET.Core.SysLogEx">
             <summary>
             系统异常日志表
@@ -2535,12 +2575,22 @@
             <param name="pi"></param>
             <returns></returns>
         </member>
-        <member name="M:Admin.NET.Core.RepositoryExtension.FakeDelete``1(SqlSugar.IUpdateable{``0})">
+        <member name="M:Admin.NET.Core.RepositoryExtension.FakeDelete``1(SqlSugar.ISugarRepository,``0)">
+            <summary>
+            实体假删除 _rep.FakeDelete(entity)
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="repository"></param>
+            <param name="entity"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Core.RepositoryExtension.FakeDeleteAsync``1(SqlSugar.ISugarRepository,``0)">
             <summary>
-            实体假删除 _rep.Context.Updateable(entity).FakeDelete().ExecuteCommandAsync();
+            实体假删除异步 _rep.FakeDeleteAsync(entity)
             </summary>
             <typeparam name="T"></typeparam>
-            <param name="updateable"></param>
+            <param name="repository"></param>
+            <param name="entity"></param>
             <returns></returns>
         </member>
         <member name="M:Admin.NET.Core.RepositoryExtension.OrderBuilder``1(SqlSugar.ISugarQueryable{``0},Admin.NET.Core.BasePageInput,System.String,System.Boolean)">
@@ -2553,6 +2603,44 @@
             <param name="descSort"> 是否降序 </param>
             <returns> </returns>
         </member>
+        <member name="M:Admin.NET.Core.RepositoryExtension.UpdateWithDiffLog``1(SqlSugar.ISugarRepository,``0,System.Boolean)">
+            <summary>
+            更新实体并记录差异日志 _rep.UpdateWithDiffLog(entity)
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="repository"></param>
+            <param name="entity"></param>
+            <param name="ignoreAllNullColumns"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Core.RepositoryExtension.UpdateWithDiffLogAsync``1(SqlSugar.ISugarRepository,``0,System.Boolean)">
+            <summary>
+            更新实体并记录差异日志 _rep.UpdateWithDiffLogAsync(entity)
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="repository"></param>
+            <param name="entity"></param>
+            <param name="ignoreAllNullColumns"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Core.RepositoryExtension.InsertWithDiffLog``1(SqlSugar.ISugarRepository,``0)">
+            <summary>
+            新增实体并记录差异日志 _rep.InsertWithDiffLog(entity)
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="repository"></param>
+            <param name="entity"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Core.RepositoryExtension.InsertWithDiffLogAsync``1(SqlSugar.ISugarRepository,``0)">
+            <summary>
+            新增实体并记录差异日志 _rep.InsertWithDiffLogAsync(entity)
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="repository"></param>
+            <param name="entity"></param>
+            <returns></returns>
+        </member>
         <member name="T:Admin.NET.Core.LogExceptionHandler">
             <summary>
             全局异常处理
@@ -2624,7 +2712,7 @@
         </member>
         <member name="P:Admin.NET.Core.ConnectionStringsOptions.DefaultConfigId">
             <summary>
-            默认数据库编号
+            默认数据库标识
             </summary>
         </member>
         <member name="P:Admin.NET.Core.ConnectionStringsOptions.DefaultDbType">
@@ -2637,9 +2725,19 @@
             默认数据库连接字符串
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.ConnectionStringsOptions.InitTable">
+        <member name="P:Admin.NET.Core.ConnectionStringsOptions.EnableInitTable">
             <summary>
-            初始化表和数据
+            启用初始化库表
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.ConnectionStringsOptions.EnableSeedData">
+            <summary>
+            启用种子数据
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.ConnectionStringsOptions.EnableDiffLog">
+            <summary>
+            启用库表差异日志
             </summary>
         </member>
         <member name="P:Admin.NET.Core.ConnectionStringsOptions.DbConfigs">
@@ -2667,9 +2765,14 @@
             数据库连接字符串
             </summary>
         </member>
-        <member name="P:Admin.NET.Core.DbConfig.InitTable">
+        <member name="P:Admin.NET.Core.DbConfig.EnableInitTable">
+            <summary>
+            启用初始化库表
+            </summary>
+        </member>
+        <member name="P:Admin.NET.Core.DbConfig.EnableSeedData">
             <summary>
-            初始化表和数据
+            启用种子数据
             </summary>
         </member>
         <member name="T:Admin.NET.Core.OSSProviderOptions">
@@ -4452,6 +4555,23 @@
             结束时间
             </summary>
         </member>
+        <member name="T:Admin.NET.Core.Service.SysDiffLogService">
+            <summary>
+            差异日志服务
+            </summary>
+        </member>
+        <member name="M:Admin.NET.Core.Service.SysDiffLogService.GetDiffLogList(Admin.NET.Core.Service.PageLogInput)">
+            <summary>
+            获取差异日志分页列表
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.NET.Core.Service.SysDiffLogService.ClearVisLog">
+            <summary>
+            清空差异日志
+            </summary>
+            <returns></returns>
+        </member>
         <member name="T:Admin.NET.Core.Service.SysExLogService">
             <summary>
             系统异常日志服务
@@ -6165,6 +6285,11 @@
             初始化数据库结构
             </summary>
         </member>
+        <member name="M:Admin.NET.Core.SqlSugarSetup.InitSeedData(SqlSugar.SqlSugarScope)">
+            <summary>
+            初始化种子数据
+            </summary>
+        </member>
         <member name="M:Admin.NET.Core.SqlSugarSetup.SetDeletedEntityFilter(SqlSugar.SqlSugarProvider)">
             <summary>
             配置实体假删除过滤器

+ 11 - 5
Admin.NET/Admin.NET.Core/Entity/SysLogDiff.cs

@@ -1,7 +1,8 @@
-
-
-namespace Admin.NET.Core;
+namespace Admin.NET.Core;
 
+/// <summary>
+/// 系统差异日志表
+/// </summary>
 [SugarTable("sys_log_diff", "系统差异日志表")]
 [SqlSugarEntity]
 public class SysLogDiff : EntityBase
@@ -11,35 +12,40 @@ public class SysLogDiff : EntityBase
     /// </summary>
     [SugarColumn(ColumnDescription = "操作前记录", ColumnDataType = "text")]
     public string BeforeData { get; set; }
+
     /// <summary>
     /// 操作后记录
     /// </summary>
     [SugarColumn(ColumnDescription = "操作后记录", ColumnDataType = "text")]
     public string AfterData { get; set; }
+
     /// <summary>
     /// Sql
     /// </summary>
     [SugarColumn(ColumnDescription = "Sql", ColumnDataType = "text")]
     public string Sql { get; set; }
+
     /// <summary>
     /// 参数  手动传入的参数
     /// </summary>
     [SugarColumn(ColumnDescription = "参数", ColumnDataType = "text")]
     public string Parameters { get; set; }
+
     /// <summary>
     /// 业务对象  
     /// </summary>
     [SugarColumn(ColumnDescription = "业务对象", ColumnDataType = "text")]
     public string BusinessData { get; set; }
+
     /// <summary>
     /// 差异操作
     /// </summary>
     [SugarColumn(ColumnDescription = "差异操作", ColumnDataType = "text")]
     public string DiffType { get; set; }
+
     /// <summary>
     /// 耗时
     /// </summary>
     [SugarColumn(ColumnDescription = "耗时")]
     public long Duration { get; set; }
-}
-
+}

+ 0 - 1
Admin.NET/Admin.NET.Core/Extension/RepositoryExtension.cs

@@ -34,7 +34,6 @@ public static class RepositoryExtension
             .ExecuteCommandAsync();
     }
 
-
     /// <summary>
     /// 排序方式(默认降序)
     /// </summary>

+ 18 - 8
Admin.NET/Admin.NET.Core/Option/ConnectionStringsOptions.cs

@@ -6,7 +6,7 @@
 public class ConnectionStringsOptions : IConfigurableOptions
 {
     /// <summary>
-    /// 默认数据库编号
+    /// 默认数据库标识
     /// </summary>
     public string DefaultConfigId { get; set; } = SqlSugarConst.ConfigId;
 
@@ -22,15 +22,20 @@ public class ConnectionStringsOptions : IConfigurableOptions
     public string DefaultConnection { get; set; }
 
     /// <summary>
-    /// 初始化表和数据
+    /// 启用初始化
     /// </summary>
-    public bool InitTable { get; set; }
+    public bool EnableInitTable { get; set; }
 
     /// <summary>
-    /// 禁用数据库表差异日志
+    /// 启用种子数据
     /// </summary>
-    public bool DisableDiffLog { get; set; }
-    
+    public bool EnableSeedData { get; set; }
+
+    /// <summary>
+    /// 启用库表差异日志
+    /// </summary>
+    public bool EnableDiffLog { get; set; }
+
     /// <summary>
     /// 业务库集合
     /// </summary>
@@ -58,7 +63,12 @@ public class DbConfig
     public string DbConnection { get; set; }
 
     /// <summary>
-    /// 初始化表和数据
+    /// 启用初始化库表
+    /// </summary>
+    public bool EnableInitTable { get; set; }
+
+    /// <summary>
+    /// 启用种子数据
     /// </summary>
-    public bool InitTable { get; set; }
+    public bool EnableSeedData { get; set; }
 }

+ 27 - 24
Admin.NET/Admin.NET.Core/SqlSugar/SqlSugarSetup.cs

@@ -72,9 +72,6 @@ public static class SqlSugarSetup
                         Console.WriteLine("\r\n" + "=========执行SQL============" + "\r\n" + UtilMethods.GetSqlString(DbType.MySql, sql, pars) + "\r\n");
                         //Console.WriteLine(sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)) + "\r\n" + "========================" + "\r\n");
                         App.PrintToMiniProfiler("SqlSugar", "Info", sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
-
-
-
                     };
                     dbProvider.Aop.OnError = (ex) =>
                     {
@@ -120,29 +117,27 @@ public static class SqlSugarSetup
                         }
                     };
 
-                    dbProvider.Aop.OnDiffLogEvent = async it =>
+                    dbProvider.Aop.OnDiffLogEvent = async u =>
                     {
-                        if (dbOptions.DisableDiffLog) return;
+                        if (!dbOptions.EnableDiffLog) return;
 
-                        var logProvider = db.GetConnectionScope(SqlSugarConst.ConfigId);
-                        var log = new SysLogDiff
+                        var LogDiff = new SysLogDiff
                         {
-
-                            //操作后记录   包含: 字段描述 列名 值  表名 表描述
-                            AfterData = Newtonsoft.Json.JsonConvert.SerializeObject(it.AfterData),
-                            //操作前记录  包含: 字段描述 列名 值 表名 表描述
-                            BeforeData = Newtonsoft.Json.JsonConvert.SerializeObject(it.BeforeData),
-                            //传进来的对象
-                            BusinessData = Newtonsoft.Json.JsonConvert.SerializeObject(it.BusinessData),
-                            //enum insert 、update and delete  
-                            DiffType = it.DiffType.ToString(),
-                            Sql = UtilMethods.GetSqlString(DbType.MySql, it.Sql, it.Parameters),
-                            Parameters = Newtonsoft.Json.JsonConvert.SerializeObject(it.Parameters),
-                            Duration = it.Time == null ? 0 : (long)it.Time.Value.TotalMilliseconds
+                            // 操作后记录(字段描述 列名 值  表名 表描述)
+                            AfterData = Newtonsoft.Json.JsonConvert.SerializeObject(u.AfterData),
+                            // 操作前记录(字段描述 列名 值 表名 表描述)
+                            BeforeData = Newtonsoft.Json.JsonConvert.SerializeObject(u.BeforeData),
+                            // 传进来的对象
+                            BusinessData = Newtonsoft.Json.JsonConvert.SerializeObject(u.BusinessData),
+                            // enum(insert、update、delete) 
+                            DiffType = u.DiffType.ToString(),
+                            Sql = UtilMethods.GetSqlString(DbType.MySql, u.Sql, u.Parameters),
+                            Parameters = Newtonsoft.Json.JsonConvert.SerializeObject(u.Parameters),
+                            Duration = u.Time == null ? 0 : (long)u.Time.Value.TotalMilliseconds
                         };
-                        await logProvider.Insertable(log).ExecuteCommandAsync();
+                        await dbProvider.Insertable(LogDiff).ExecuteCommandAsync();
                         Console.ForegroundColor = ConsoleColor.Red;
-                        Console.WriteLine($"***差异日志开始***{Environment.NewLine}{Newtonsoft.Json.JsonConvert.SerializeObject(log)}{Environment.NewLine}***差异日志结束***");
+                        Console.WriteLine($"***差异日志开始***{ Environment.NewLine }{ Newtonsoft.Json.JsonConvert.SerializeObject(LogDiff) }{ Environment.NewLine }***差异日志结束***");
                     };
 
                     // 配置实体假删除过滤器
@@ -157,8 +152,10 @@ public static class SqlSugarSetup
             });
 
             // 初始化数据库结构及种子数据
-            if (dbOptions.InitTable)
+            if (dbOptions.EnableInitTable)
                 InitDataBase(sqlSugar, dbOptions);
+            if (dbOptions.EnableSeedData)
+                InitSeedData(sqlSugar);
             return sqlSugar;
         });
         services.AddScoped(typeof(SqlSugarRepository<>)); // 注册仓储
@@ -169,9 +166,9 @@ public static class SqlSugarSetup
     /// </summary>
     public static void InitDataBase(SqlSugarScope db, ConnectionStringsOptions dbOptions)
     {
-        // 创建系统默认数据库
+        // 创建默认数据库
         db.DbMaintenance.CreateDatabase();
-        // 创建其他业务数据库
+        // 创建业务数据库
         dbOptions.DbConfigs.ForEach(config =>
         {
             db.GetConnection(config.DbConfigId).DbMaintenance.CreateDatabase();
@@ -189,7 +186,13 @@ public static class SqlSugarSetup
             db.ChangeDatabase(dbConfigId);
             db.CodeFirst.InitTables(entityType);
         }
+    }
 
+    /// <summary>
+    /// 初始化种子数据
+    /// </summary>
+    public static void InitSeedData(SqlSugarScope db)
+    {
         // 获取所有实体种子数据
         var seedDataTypes = App.EffectiveTypes.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass
             && u.GetInterfaces().Any(i => i.HasImplementedRawGeneric(typeof(ISqlSugarEntitySeedData<>))));

+ 10 - 10
Vben2/src/api/sys/admin.ts

@@ -224,25 +224,25 @@ export const updatePos = (params: any) => defHttp.post({ url: Api.UpdatePos, par
 // 获取访问日志分页列表
 export const getVisLogPageList = (params?: any) =>
   defHttp.get<any>({ url: Api.VislogPageList, params });
-//清空访问日志
+// 清空访问日志
 export const clearVisLog = () => defHttp.post({ url: Api.ClearVisLog });
 
 // 获取操作日志分页列表
 export const getOpLogPageList = (params?: any) =>
   defHttp.get<any>({ url: Api.OplogPageList, params });
-//清空操作日志
+// 清空操作日志
 export const clearOpLog = () => defHttp.post({ url: Api.ClearOpLog });
 
 // 获取异常日志分页列表
 export const getExLogPageList = (params?: any) =>
   defHttp.get<any>({ url: Api.ExlogPageList, params });
-//清空异常日志
+// 清空异常日志
 export const clearExLog = () => defHttp.post({ url: Api.ClearExLog });
 
 // 获取差异日志分页列表
 export const getDiffLogPageList = (params?: any) =>
   defHttp.get<any>({ url: Api.DifflogPageList, params });
-//清空差异日志
+// 清空差异日志
 export const clearDiffLog = () => defHttp.post({ url: Api.ClearDiffLog });
 
 ////////// 文件管理接口 //////////
@@ -391,22 +391,22 @@ export const updateGenerateConfig = (params: any) =>
   });
 
 ////////// 租户管理接口 //////////
-//分页查询租户
+// 分页查询租户
 export const getTenantPageList = (params?: any) =>
   defHttp.get<any>({ url: Api.GetTenantPage, params });
-//增加租户
+// 增加租户
 export const addTenant = (params: any) => defHttp.post<any>({ url: Api.AddTenant, params });
-//删除租户
+// 删除租户
 export const deleteTenant = (id: number) => defHttp.post({ url: Api.DeleteTenant, params: { id } });
-//编辑租户
+// 编辑租户
 export const updateTenant = (params: any) => defHttp.post<any>({ url: Api.UpdateTenant, params });
-//授权租户菜单
+// 授权租户菜单
 export const grantTenantMenu = (params?: any) =>
   defHttp.post<any>({ url: Api.GrantTenantMenu, params });
 // 获取租户菜单
 export const tenantOwnMenuList = (id: number) =>
   defHttp.get<any>({ url: Api.TenantOwnMenuList, params: { id } });
-//重置租户密码
+// 重置租户密码
 export const resetTenantPwd = (id: number) =>
   defHttp.post<any>({ url: Api.ResetTenantPwd, params: { id } });