1
0
فهرست منبع

升级 Orm Freesql到最新版本支持更改映射优先级
新增 AppConfig支持应用程序类型配置,默认纯WebApi应用程序
修复 Mapster没有自动扫描模板项目MyApp.Api项目的映射配置

zhontai 2 سال پیش
والد
کامیت
ac89229a09

+ 2 - 0
src/hosts/ZhonTai.Host/Configs/appconfig.json

@@ -1,4 +1,6 @@
 {
+  //应用程序类型
+  "appType": "Controllers",
   //Api地址
   "urls": [ "http://*:8000" ],
   //跨域地址

+ 6 - 0
src/hosts/ZhonTai.Host/ZhonTai.Host.csproj

@@ -23,6 +23,12 @@
 		<Content Update="wwwroot\captcha\jigsaw\backgrounds\3.jpg">
 			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 		</Content>
+		<Content Update="wwwroot\captcha\jigsaw\backgrounds\4.jpg">
+		  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+		</Content>
+		<Content Update="wwwroot\captcha\jigsaw\backgrounds\5.jpg">
+		  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+		</Content>
 		<Content Update="wwwroot\captcha\jigsaw\templates\1\dark.png">
 		  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 		</Content>

+ 12 - 0
src/platform/ZhonTai.Admin/Core/Configs/AppConfig.cs

@@ -5,6 +5,8 @@
     /// </summary>
     public class AppConfig
     {
+        public AppType AppType { get; set; } = AppType.Controllers;
+
         /// <summary>
         /// Api地址,默认 http://*:8000
         /// </summary>
@@ -164,4 +166,14 @@
         /// </summary>
         public string[] Fonts { get; set; }// = new[] { "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" };
     }
+
+    /// <summary>
+    /// 应用程序类型
+    /// </summary>
+    public enum AppType
+    {
+        Controllers,
+        ControllersWithViews,
+        MVC
+    }
 }

+ 14 - 5
src/platform/ZhonTai.Admin/Core/HostApp.cs

@@ -45,6 +45,7 @@ using ZhonTai.DynamicApi;
 using ZhonTai.ApiUI;
 using NLog.Web;
 using Autofac.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Mvc;
 
 namespace ZhonTai.Admin.Core
 {
@@ -172,7 +173,7 @@ namespace ZhonTai.Admin.Core
             #region Mapster 映射配置
 
             Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
-                .Where(a => a.Name.StartsWith("ZhonTai"))
+                .Where(a => appConfig.AssemblyNames.Contains(a.Name) || a.Name == "ZhonTai.Admin")
                 .Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
             services.AddScoped<IMapper>(sp => new Mapper());
             TypeAdapterConfig.GlobalSettings.Scan(assemblies);
@@ -394,8 +395,7 @@ namespace ZhonTai.Admin.Core
             #endregion 操作日志
 
             #region 控制器
-
-            services.AddControllers(options =>
+            void controllersAction(MvcOptions options)
             {
                 options.Filters.Add<ControllerExceptionFilter>();
                 options.Filters.Add<ValidateInputFilter>();
@@ -406,13 +406,22 @@ namespace ZhonTai.Admin.Core
                 }
                 //禁止去除ActionAsync后缀
                 //options.SuppressAsyncSuffixInActionNames = false;
-            })
+            }
+            
+            var mvcBuilder = appConfig.AppType switch
+            {
+                AppType.Controllers => services.AddControllers(controllersAction),
+                AppType.ControllersWithViews => services.AddControllersWithViews(controllersAction),
+                AppType.MVC => services.AddMvc(controllersAction),
+                _ => services.AddControllers(controllersAction)
+            };
+            
             //.AddFluentValidation(config =>
             //{
             //    var assembly = Assembly.LoadFrom(Path.Combine(basePath, "ZhonTai.Admin.Host.dll"));
             //    config.RegisterValidatorsFromAssembly(assembly);
             //})
-            .AddNewtonsoftJson(options =>
+            mvcBuilder.AddNewtonsoftJson(options =>
             {
                 //忽略循环引用
                 options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

+ 12 - 12
src/platform/ZhonTai.Admin/ZhonTai.Admin.csproj

@@ -10,19 +10,19 @@
 
 	<ItemGroup>
 		<PackageReference Include="AspNetCoreRateLimit" Version="4.0.2" />
-		<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
+		<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
 		<PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.1" />
 		<PackageReference Include="Castle.Core.AsyncInterceptor" Version="2.1.0" />
-		<PackageReference Include="CSRedisCore" Version="3.8.1" />
-		<PackageReference Include="Caching.CSRedis" Version="3.8.1" />
-		<PackageReference Include="FluentValidation.AspNetCore" Version="11.0.1" />
-		<PackageReference Include="FreeSql" Version="3.2.651" />
-		<PackageReference Include="FreeSql.Provider.MySql" Version="3.2.651" />
-		<PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.651" />
-		<PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.2.651" />
-		<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.651" />
-		<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.2.651" />
-		<PackageReference Include="FreeSql.Repository" Version="3.2.651" />
+		<PackageReference Include="CSRedisCore" Version="3.8.2" />
+		<PackageReference Include="Caching.CSRedis" Version="3.8.2" />
+		<PackageReference Include="FluentValidation.AspNetCore" Version="11.0.2" />
+		<PackageReference Include="FreeSql" Version="3.2.661" />
+		<PackageReference Include="FreeSql.Provider.MySql" Version="3.2.661" />
+		<PackageReference Include="FreeSql.Provider.Oracle" Version="3.2.661" />
+		<PackageReference Include="FreeSql.Provider.PostgreSQL" Version="3.2.661" />
+		<PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.661" />
+		<PackageReference Include="FreeSql.Provider.SqlServer" Version="3.2.661" />
+		<PackageReference Include="FreeSql.Repository" Version="3.2.661" />
 		<PackageReference Include="IdleBus" Version="1.5.2" />
 		<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
 		<PackageReference Include="Mapster" Version="7.3.0" />
@@ -32,7 +32,7 @@
 		<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
 		<PackageReference Include="NLog" Version="5.0.0" />
 		<PackageReference Include="NLog.Web.AspNetCore" Version="5.0.0" />
-		<PackageReference Include="SixLabors.ImageSharp" Version="2.1.1" />
+		<PackageReference Include="SixLabors.ImageSharp" Version="2.1.2" />
 		<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14" />
 		<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.18.0" />
 		<PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.1" />