VberZeroModule.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using Abp.Application.Navigation;
  2. using Abp.AutoMapper;
  3. using Abp.Collections.Extensions;
  4. using Abp.Configuration.Startup;
  5. using Abp.Dependency;
  6. using Abp.MailKit;
  7. using Abp.Modules;
  8. using Abp.Reflection.Extensions;
  9. using Abp.Threading.BackgroundWorkers;
  10. using VberZero.Authorization.Users;
  11. using VberZero.BaseSystem;
  12. using VberZero.Configuration;
  13. using VberZero.DomainService.AppGuids;
  14. using VberZero.Localization;
  15. using VberZero.MultiTenancy;
  16. using VberZero.Navigation;
  17. using VberZero.Settings;
  18. using VberZero.Workflow;
  19. using VberZero.Workflows;
  20. namespace VberZero;
  21. [DependsOn(
  22. typeof(VberWorkflowModule),
  23. typeof(AbpAutoMapperModule),
  24. typeof(AbpMailKitModule)
  25. )]
  26. public class VberZeroModule : AbpModule
  27. {
  28. public bool IsSkip = false;
  29. public override void PreInitialize()
  30. {
  31. //IocManager.RegisterIfNot<IAbpZeroEntityTypes, AbpZeroEntityTypes>(); //Registered on services.AddAbpIdentity() for Abp.ZeroCore.
  32. IocManager.Register<IRoleManagementConfig, RoleManagementConfig>();
  33. IocManager.Register<IUserManagementConfig, UserManagementConfig>();
  34. //IocManager.Register<ILanguageManagementConfig, LanguageManagementConfig>();
  35. IocManager.Register<IVzConfig, VzConfig>();
  36. Configuration.ReplaceService<Abp.MultiTenancy.ITenantStore, TenantStore>(DependencyLifeStyle.Transient);
  37. IocManager.Register<INavigationProviderContext, VzNavigationProviderContext>();
  38. Configuration.ReplaceService<INavigationManager, VzNavigationManager>();
  39. Configuration.ReplaceService<IVberPersistenceProvider, VbWorkflowPersistenceProvider>();
  40. Configuration.Settings.Providers.Add<VzSettingProvider>();
  41. Configuration.Localization.Configure();
  42. IocManager.IocContainer.Kernel.ComponentRegistered += Kernel_ComponentRegistered;
  43. AddIgnoredTypes();
  44. //添加StepBody
  45. Configuration.GetStepBodyConfiguration().Providers.Add<DefaultStepBodyProvider>();
  46. }
  47. public override void Initialize()
  48. {
  49. //FillMissingEntityTypes();
  50. //IocManager.Register<IMultiTenantLocalizationDictionary, MultiTenantLocalizationDictionary>(DependencyLifeStyle.Transient);
  51. IocManager.Register(typeof(UserTokenExpirationWorker));
  52. var thisAssembly = typeof(VberZeroModule).GetAssembly();
  53. IocManager.RegisterAssemblyByConvention(thisAssembly);
  54. Configuration.Modules.AbpAutoMapper().Configurators.Add(
  55. //程序集中从 AutoMapper.Profile 继承的类
  56. cfg => cfg.AddMaps(thisAssembly)
  57. );
  58. RegisterTenantCache();
  59. }
  60. public override void PostInitialize()
  61. {
  62. if (Configuration.BackgroundJobs.IsJobExecutionEnabled)
  63. {
  64. var workerManager = IocManager.Resolve<IBackgroundWorkerManager>();
  65. workerManager.Add(IocManager.Resolve(typeof(UserTokenExpirationWorker)) as IBackgroundWorker);
  66. }
  67. if (!IsSkip)
  68. {
  69. IocManager.Resolve<VzNavigationManager>().Initialize();
  70. IocManager.Resolve<RecordIdManager>().LoadDictionary();
  71. }
  72. }
  73. private void Kernel_ComponentRegistered(string key, Castle.MicroKernel.IHandler handler)
  74. {
  75. //if (typeof(IAbpZeroFeatureValueStore).IsAssignableFrom(handler.ComponentModel.Implementation) && !IocManager.IsRegistered<IAbpZeroFeatureValueStore>())
  76. //{
  77. // IocManager.IocContainer.Register(
  78. // Component.For<IAbpZeroFeatureValueStore>().ImplementedBy(handler.ComponentModel.Implementation).Named("AbpZeroFeatureValueStore").LifestyleTransient()
  79. // );
  80. //}
  81. }
  82. private void AddIgnoredTypes()
  83. {
  84. var ignoredTypes = new[] { typeof(AuditLog) };
  85. foreach (var ignoredType in ignoredTypes)
  86. {
  87. Configuration.EntityHistory.IgnoredTypes.AddIfNotContains(ignoredType);
  88. }
  89. }
  90. private void RegisterTenantCache()
  91. {
  92. if (IocManager.IsRegistered<ITenantCache>())
  93. {
  94. return;
  95. }
  96. //using var entityTypes = IocManager.ResolveAsDisposable<IAbpZeroEntityTypes>();
  97. //var implType = typeof(TenantCache)
  98. // .MakeGenericType(entityTypes.Object.Tenant, entityTypes.Object.User);
  99. IocManager.Register(typeof(ITenantCache), typeof(TenantCache), DependencyLifeStyle.Transient);
  100. }
  101. //private void FillMissingEntityTypes()
  102. //{
  103. // using var entityTypes = IocManager.ResolveAsDisposable<IAbpZeroEntityTypes>();
  104. // if (entityTypes.Object.User != null &&
  105. // entityTypes.Object.Role != null &&
  106. // entityTypes.Object.Tenant != null)
  107. // {
  108. // return;
  109. // }
  110. // using var typeFinder = IocManager.ResolveAsDisposable<ITypeFinder>();
  111. // var types = typeFinder.Object.FindAll();
  112. // entityTypes.Object.Tenant = types.FirstOrDefault(t => typeof(Tenant).IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
  113. // entityTypes.Object.Role = types.FirstOrDefault(t => typeof(Role).IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
  114. // entityTypes.Object.User = types.FirstOrDefault(t => typeof(User).IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
  115. //}
  116. //private void RegisterUserTokenExpirationWorker()
  117. //{
  118. // using var entityTypes = IocManager.ResolveAsDisposable<IAbpZeroEntityTypes>();
  119. // var implType = typeof(UserTokenExpirationWorker)
  120. // .MakeGenericType(entityTypes.Object.Tenant, entityTypes.Object.User);
  121. // IocManager.Register(implType);
  122. //}
  123. }