Sfoglia il codice sorgente

支持只生成业务数据库

zhontai 2 anni fa
parent
commit
f943bf17bf

+ 37 - 24
src/platform/ZhonTai.Admin/Core/Db/DbHelper.cs

@@ -15,6 +15,7 @@ using ZhonTai.Admin.Core.Auth;
 using System.IO;
 using ZhonTai.Common.Helpers;
 using ZhonTai.Admin.Core.Db.Data;
+using static Org.BouncyCastle.Math.EC.ECCurve;
 
 namespace ZhonTai.Admin.Core.Db;
 
@@ -70,8 +71,13 @@ public class DbHelper
     /// <returns></returns>
     public static Type[] GetEntityTypes(AppConfig appConfig)
     {
-        Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-            .Where(a => appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
+        if(!(appConfig.AssemblyNames?.Length > 0))
+        {
+            return null;
+        }
+
+        Assembly[]  assemblies = DependencyContext.Default.RuntimeLibraries
+            .Where(a => appConfig.AssemblyNames.Contains(a.Name))
             .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
         var entityTypes = new List<Type>();
@@ -219,6 +225,7 @@ public class DbHelper
         // 同步结构
         var dbType = dbConfig.Type.ToString();
         Console.WriteLine($"\r\n {(msg.NotNull() ? msg : $"sync {dbType} structure")} started");
+
         if (dbConfig.Type == DataType.Oracle)
         {
             db.CodeFirst.IsSyncStructureToUpper = true;
@@ -226,8 +233,8 @@ public class DbHelper
 
         //获得指定程序集表实体
         var entityTypes = GetEntityTypes(appConfig);
-
         db.CodeFirst.SyncStructure(entityTypes);
+
         Console.WriteLine($" {(msg.NotNull() ? msg : $"sync {dbType} structure")} succeed");
     }
 
@@ -318,22 +325,25 @@ public class DbHelper
         {
             Console.WriteLine("\r\n sync data started");
 
-            db.Aop.AuditValue += SyncDataAuditValue;
+            if (appConfig.AssemblyNames?.Length > 0)
+            {
+                db.Aop.AuditValue += SyncDataAuditValue;
 
-            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-            .Where(a => appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
-            .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+                Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => appConfig.AssemblyNames.Contains(a.Name))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
-            List<ISyncData> syncDatas = assemblies.Select(assembly => assembly.GetTypes()
-            .Where(x => typeof(ISyncData).GetTypeInfo().IsAssignableFrom(x.GetTypeInfo()) && x.GetTypeInfo().IsClass && !x.GetTypeInfo().IsAbstract))
-            .SelectMany(registerTypes => registerTypes.Select(registerType => (ISyncData)Activator.CreateInstance(registerType))).ToList();
+                List<ISyncData> syncDatas = assemblies.Select(assembly => assembly.GetTypes()
+                .Where(x => typeof(ISyncData).GetTypeInfo().IsAssignableFrom(x.GetTypeInfo()) && x.GetTypeInfo().IsClass && !x.GetTypeInfo().IsAbstract))
+                .SelectMany(registerTypes => registerTypes.Select(registerType => (ISyncData)Activator.CreateInstance(registerType))).ToList();
 
-            foreach (ISyncData syncData in syncDatas)
-            {
-                await syncData.SyncDataAsync(db, dbConfig, appConfig);
-            }
+                foreach (ISyncData syncData in syncDatas)
+                {
+                    await syncData.SyncDataAsync(db, dbConfig, appConfig);
+                }
 
-            db.Aop.AuditValue -= SyncDataAuditValue;
+                db.Aop.AuditValue -= SyncDataAuditValue;
+            }
 
             Console.WriteLine(" sync data succeed\r\n");
         }
@@ -356,17 +366,20 @@ public class DbHelper
         {
             Console.WriteLine("\r\n generate data started");
 
-            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-            .Where(a => appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
-            .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+            if (appConfig.AssemblyNames?.Length > 0)
+            {
+                Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+               .Where(a => appConfig.AssemblyNames.Contains(a.Name))
+               .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
-            List<IGenerateData> generateDatas = assemblies.Select(assembly => assembly.GetTypes()
-            .Where(x => typeof(IGenerateData).GetTypeInfo().IsAssignableFrom(x.GetTypeInfo()) && x.GetTypeInfo().IsClass && !x.GetTypeInfo().IsAbstract))
-            .SelectMany(registerTypes => registerTypes.Select(registerType => (IGenerateData)Activator.CreateInstance(registerType))).ToList();
+                List<IGenerateData> generateDatas = assemblies.Select(assembly => assembly.GetTypes()
+                .Where(x => typeof(IGenerateData).GetTypeInfo().IsAssignableFrom(x.GetTypeInfo()) && x.GetTypeInfo().IsClass && !x.GetTypeInfo().IsAbstract))
+                .SelectMany(registerTypes => registerTypes.Select(registerType => (IGenerateData)Activator.CreateInstance(registerType))).ToList();
 
-            foreach (IGenerateData generateData in generateDatas)
-            {
-                await generateData.GenerateDataAsync(db, appConfig);
+                foreach (IGenerateData generateData in generateDatas)
+                {
+                    await generateData.GenerateDataAsync(db, appConfig);
+                }
             }
 
             Console.WriteLine(" generate data succeed\r\n");

+ 16 - 7
src/platform/ZhonTai.Admin/Core/HostApp.cs

@@ -187,14 +187,20 @@ public class HostApp
         services.Configure<UploadConfig>(uploadConfig);
 
         //程序集
-        Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-          .Where(a => appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
-          .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+        Assembly[] assemblies = null;
+        if(appConfig.AssemblyNames?.Length > 0)
+        {
+            assemblies = DependencyContext.Default.RuntimeLibraries
+            .Where(a => appConfig.AssemblyNames.Contains(a.Name))
+            .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+        }
 
         #region Mapster 映射配置
         services.AddScoped<IMapper>(sp => new Mapper());
-        TypeAdapterConfig.GlobalSettings.Scan(assemblies);
-
+        if(assemblies?.Length > 0)
+        {
+            TypeAdapterConfig.GlobalSettings.Scan(assemblies);
+        }
         #endregion Mapster 映射配置
 
         #region Cors 跨域
@@ -440,9 +446,12 @@ public class HostApp
             _ => services.AddControllers(controllersAction)
         };
 
-        foreach (var assembly in assemblies)
+        if (assemblies?.Length > 0)
         {
-            services.AddValidatorsFromAssembly(assembly);
+            foreach (var assembly in assemblies)
+            {
+                services.AddValidatorsFromAssembly(assembly);
+            }
         }
         services.AddFluentValidationAutoValidation();
 

+ 15 - 9
src/platform/ZhonTai.Admin/Core/RegisterModules/RepositoryModule.cs

@@ -24,16 +24,22 @@ namespace ZhonTai.Admin.Core.RegisterModules
 
         protected override void Load(ContainerBuilder builder)
         {
-            //仓储
-            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-                .Where(a => _appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
-                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+            
 
-            builder.RegisterAssemblyTypes(assemblies)
-            .Where(a => a.Name.EndsWith("Repository"))
-            .AsImplementedInterfaces()
-            .InstancePerLifetimeScope()
-            .PropertiesAutowired();// 属性注入
+            if(_appConfig.AssemblyNames?.Length > 0)
+            {
+                //仓储
+                Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                    .Where(a => _appConfig.AssemblyNames.Contains(a.Name))
+                    .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+
+                builder.RegisterAssemblyTypes(assemblies)
+                .Where(a => a.Name.EndsWith("Repository"))
+                .AsImplementedInterfaces()
+                .InstancePerLifetimeScope()
+                .PropertiesAutowired();// 属性注入
+            }
+            
 
             //泛型注入
             builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepositoryBase<>)).InstancePerLifetimeScope().PropertiesAutowired();

+ 22 - 19
src/platform/ZhonTai.Admin/Core/RegisterModules/ServiceModule.cs

@@ -35,26 +35,29 @@ public class ServiceModule : Module
             interceptorServiceTypes.Add(typeof(TransactionInterceptor));
         }
 
-        //服务
-        Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-            .Where(a => _appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
-            .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+        if(_appConfig.AssemblyNames?.Length > 0)
+        {
+            //服务
+            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => _appConfig.AssemblyNames.Contains(a.Name))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
-        //服务接口实例
-        builder.RegisterAssemblyTypes(assemblies)
-        .Where(a => a.Name.EndsWith("Service"))
-        .AsImplementedInterfaces()
-        .InstancePerLifetimeScope()
-        .PropertiesAutowired()// 属性注入
-        .InterceptedBy(interceptorServiceTypes.ToArray())
-        .EnableInterfaceInterceptors();
+            //服务接口实例
+            builder.RegisterAssemblyTypes(assemblies)
+            .Where(a => a.Name.EndsWith("Service"))
+            .AsImplementedInterfaces()
+            .InstancePerLifetimeScope()
+            .PropertiesAutowired()// 属性注入
+            .InterceptedBy(interceptorServiceTypes.ToArray())
+            .EnableInterfaceInterceptors();
 
-        //服务实例
-        builder.RegisterAssemblyTypes(assemblies)
-        .Where(a => a.Name.EndsWith("Service"))
-        .InstancePerLifetimeScope()
-        .PropertiesAutowired()// 属性注入
-        .InterceptedBy(interceptorServiceTypes.ToArray())
-        .EnableClassInterceptors();
+            //服务实例
+            builder.RegisterAssemblyTypes(assemblies)
+            .Where(a => a.Name.EndsWith("Service"))
+            .InstancePerLifetimeScope()
+            .PropertiesAutowired()// 属性注入
+            .InterceptedBy(interceptorServiceTypes.ToArray())
+            .EnableClassInterceptors();
+        }
     }
 }

+ 18 - 15
src/platform/ZhonTai.Admin/Core/RegisterModules/SingleInstanceModule.cs

@@ -23,22 +23,25 @@ public class SingleInstanceModule : Module
 
     protected override void Load(ContainerBuilder builder)
     {
-        // 获得要注入的程序集
-        Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-            .Where(a => _appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
-            .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
+        if(_appConfig.AssemblyNames?.Length > 0)
+        {
+            // 获得要注入的程序集
+            Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
+                .Where(a => _appConfig.AssemblyNames.Contains(a.Name))
+                .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
-        //无接口注入单例
-        builder.RegisterAssemblyTypes(assemblies)
-        .Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
-        .SingleInstance()
-        .PropertiesAutowired();
+            //无接口注入单例
+            builder.RegisterAssemblyTypes(assemblies)
+            .Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
+            .SingleInstance()
+            .PropertiesAutowired();
 
-        //有接口注入单例
-        builder.RegisterAssemblyTypes(assemblies)
-        .Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
-        .AsImplementedInterfaces()
-        .SingleInstance()
-        .PropertiesAutowired();
+            //有接口注入单例
+            builder.RegisterAssemblyTypes(assemblies)
+            .Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
+            .AsImplementedInterfaces()
+            .SingleInstance()
+            .PropertiesAutowired();
+        }
     }
 }

+ 1 - 13
src/platform/ZhonTai.Admin/Domain/User/UserEntity.cs

@@ -15,20 +15,8 @@ namespace ZhonTai.Admin.Domain.User;
 /// </summary>
 [Table(Name = "ad_user")]
 [Index("idx_{tablename}_01", nameof(UserName) + "," + nameof(TenantId), true)]
-public partial class UserEntity : EntityBase, ITenant, IData
+public partial class UserEntity : EntityBase, ITenant
 {
-    /// <summary>
-    /// 拥有者Id
-    /// </summary>
-    [Column(Position = -24)]
-    public long? OwnerId { get; set; }
-
-    /// <summary>
-    /// 拥有者部门Id
-    /// </summary>
-    [Column(Position = -23)]
-    public long? OwnerOrgId { get; set; }
-
     /// <summary>
     /// 租户Id
     /// </summary>

+ 1 - 1
src/platform/ZhonTai.Admin/Services/Cache/CacheService.cs

@@ -35,7 +35,7 @@ public class CacheService : BaseService, ICacheService, IDynamicApi
 
         var appConfig = LazyGetRequiredService<AppConfig>();
         Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-            .Where(a => appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
+            .Where(a => appConfig.AssemblyNames.Contains(a.Name))
             .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
 
         foreach (Assembly assembly in assemblies)

+ 0 - 10
src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

@@ -2701,16 +2701,6 @@
             用户
             </summary>
         </member>
-        <member name="P:ZhonTai.Admin.Domain.User.UserEntity.OwnerId">
-            <summary>
-            拥有者Id
-            </summary>
-        </member>
-        <member name="P:ZhonTai.Admin.Domain.User.UserEntity.OwnerOrgId">
-            <summary>
-            拥有者部门Id
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Domain.User.UserEntity.TenantId">
             <summary>
             租户Id