This commit is contained in:
2023-05-31 10:19:05 +08:00
parent 1b65a7a9e5
commit 9c621c75cd
238 changed files with 9905 additions and 4034 deletions

View File

@@ -1,4 +1,5 @@
using JNPF;
using JNPF.Common.Core;
using JNPF.Common.Options;
using JNPF.EventHandler;
using OnceMi.AspNetCore.OSS;
@@ -17,40 +18,53 @@ public static class ConfigureEventBusExtensions
/// <returns></returns>
public static IServiceCollection ConfigureEventBus(this IServiceCollection services)
{
// 注册EventBus服务
services.AddEventBus(options =>
{
//// 创建连接工厂
//var factory = new RabbitMQ.Client.ConnectionFactory
//{
// // 设置主机名
// HostName = "192.168.0.232",
// 注册EventBus服务
// 注册EventBus服务
services.AddEventBus(options =>
{
var config = App.GetOptions<EventBusOptions>();
// // 用户名
// UserName = "jnpf",
if (config.EventBusType != EventBusType.Memory)
{
switch (config.EventBusType)
{
case EventBusType.RabbitMQ:
// 创建连接工厂
var factory = new RabbitMQ.Client.ConnectionFactory
{
// 设置主机名
HostName = config.HostName,
// // 密码
// Password = "jnpf@2019",
//};
// 用户名
UserName = config.UserName,
//// 创建默认内存通道事件源对象可自定义队列路由key比如这里是 eventbus
//var rbmqEventSourceStorer = new RabbitMQEventSourceStorer(factory, "eventbus", 3000);
// 密码
Password = config.Password,
};
//// 替换默认事件总线存储器
//options.ReplaceStorer(serviceProvider =>
//{
// return rbmqEventSourceStorer;
//});
// 创建默认内存通道事件源对象可自定义队列路由key比如这里是 eventbus
var rbmqEventSourceStorer = new RabbitMQEventSourceStorer(factory, "eventbus", 3000);
options.UseUtcTimestamp = false;
// 替换默认事件总线存储器
options.ReplaceStorer(serviceProvider =>
{
return rbmqEventSourceStorer;
});
break;
}
}
// 不启用事件日志
options.LogEnabled = false;
options.UseUtcTimestamp = false;
// 事件执行器(失败重试)
options.AddExecutor<RetryEventHandlerExecutor>();
});
// 不启用事件日志
options.LogEnabled = false;
return services;
// 事件执行器(失败重试)
options.AddExecutor<RetryEventHandlerExecutor>();
});
services.AddConfigurableOptions<EventBusOptions>();
return services;
}
}

View File

@@ -10,6 +10,7 @@ using Newtonsoft.Json;
using OnceMi.AspNetCore.OSS;
using JNPF.API.Entry.Handlers;
using JNPF.Common.Cache;
using Microsoft.AspNetCore.Authentication.JwtBearer;
namespace Microsoft.Extensions.DependencyInjection;
@@ -18,60 +19,108 @@ namespace Microsoft.Extensions.DependencyInjection;
/// </summary>
public static class ConfigureMvcControllerExtensions
{
/// <summary>
/// OSS服务配置.
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection ConfigureMvcController(this IServiceCollection services)
{
services.AddControllers()
.AddMvcFilter<RequestActionFilter>()
.AddInjectWithUnifyResult<RESTfulResultProvider>()
.AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null)
.AddNewtonsoftJson(options =>
/// <summary>
/// OSS服务配置.
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection ConfigureMvcController(this IServiceCollection services)
{
services.AddControllers()
.AddMvcFilter<RequestActionFilter>()
.AddInjectWithUnifyResult<RESTfulResultProvider>()
.AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null)
.AddNewtonsoftJson(options =>
{
// 默认命名规则
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
// 设置时区为 UTC
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
// 格式化json输出的日期格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
// 忽略空值
// options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
// 忽略循环引用
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
// 格式化json输出的日期格式为时间戳
options.SerializerSettings.Converters.Add(new NewtonsoftDateTimeJsonConverter());
});
services.AddUnifyJsonOptions("special", new JsonSerializerSettings
{
// 默认命名规则
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
// 默认命名规则
ContractResolver = new DefaultContractResolver(),
// 设置时区为 UTC
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
// 设置时区为 UTC
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
// 格式化json输出的日期格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
// 忽略空值
// options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
// 忽略循环引用
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
// 格式化json输出的日期格式为时间戳
options.SerializerSettings.Converters.Add(new NewtonsoftDateTimeJsonConverter());
// 格式化json输出的日期格式
DateFormatString = "yyyy-MM-dd HH:mm:ss",
});
// 配置Nginx转发获取客户端真实IP
// 注1如果负载均衡不是在本机通过 Loopback 地址转发请求的一定要加上options.KnownNetworks.Clear()和options.KnownProxies.Clear()
// 注2如果设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED 为 True则不需要下面的配置代码
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.All;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
// 配置Nginx转发获取客户端真实IP
// 注1如果负载均衡不是在本机通过 Loopback 地址转发请求的一定要加上options.KnownNetworks.Clear()和options.KnownProxies.Clear()
// 注2如果设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED 为 True则不需要下面的配置代码
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.All;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
// Jwt处理程序
services.AddJwt<JwtHandler>(enableGlobalAuthorize: true);
// Jwt处理程序
services.AddJwt<JwtHandler>(enableGlobalAuthorize: true, jwtBearerConfigure: options =>
{
// 实现 JWT 身份验证过程控制
options.Events = new JwtBearerEvents
{
// 添加读取 Token 的方式
OnMessageReceived = context =>
{
var httpContext = context.HttpContext;
// 跨域
services.AddCorsAccessor();
// 判断请求是否包含 token 参数,如果有就设置给 Token
if (httpContext.Request.Query.ContainsKey("token"))
{
// 设置 Token
context.Token = httpContext.Request.Query["token"];
}
services.AddConfigurableOptions<CacheOptions>();
services.AddSession();
services.AddMemoryCache(); // 使用本地缓存必须添加
return Task.CompletedTask;
},
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// Token 验证通过处理
OnTokenValidated = context =>
{
return Task.CompletedTask;
},
};
});
return services;
}
// 跨域
services.AddCorsAccessor();
// 注册远程请求
services.AddRemoteRequest();
// 视图引擎
services.AddViewEngine();
// 脱敏词汇检测
services.AddSensitiveDetection();
// WebSocket服务
services.AddWebSocketManager();
services.AddSession();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
return services;
}
}

View File

@@ -23,7 +23,7 @@ public static class ConfigureSqlSugarExtensions
// 默认数据库
connectConfigList.Add(new ConnectionConfig
{
ConnectionString = string.Format(conn.DefaultConnection, conn.Host, conn.Port, conn.DBName, conn.UserName, conn.Password),
ConnectionString = conn.ConnectString,
DbType = DBType,
IsAutoCloseConnection = true,
ConfigId = conn.ConfigId,
@@ -62,10 +62,9 @@ public static class ConfigureSqlSugarExtensions
//};
});
});
services.AddUnitOfWork<SqlSugarUnitOfWork>();
services.AddConfigurableOptions<ConnectionStringsOptions>();
services.AddConfigurableOptions<TenantOptions>();
services.AddUnitOfWork<SqlSugarUnitOfWork>();
return services;
}