feat: initialize Evergreen Health backend

This commit is contained in:
fuenmao
2026-09-21 14:08:22 +08:00
commit 8553df5dd2
493 changed files with 75649 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// APIJSON配置选项
/// </summary>
public sealed class APIJSONOptions : IConfigurableOptions
{
/// <summary>
/// 角色集合
/// </summary>
public List<APIJSON_Role> Roles { get; set; }
}
/// <summary>
/// APIJSON角色权限
/// </summary>
public class APIJSON_Role
{
/// <summary>
/// 角色名称
/// </summary>
public string RoleName { get; set; }
/// <summary>
/// 查询
/// </summary>
public APIJSON_RoleItem Select { get; set; }
/// <summary>
/// 增加
/// </summary>
public APIJSON_RoleItem Insert { get; set; }
/// <summary>
/// 更新
/// </summary>
public APIJSON_RoleItem Update { get; set; }
/// <summary>
/// 删除
/// </summary>
public APIJSON_RoleItem Delete { get; set; }
}
/// <summary>
/// APIJSON角色权限内容
/// </summary>
public class APIJSON_RoleItem
{
/// <summary>
/// 表集合
/// </summary>
public string[] Table { get; set; }
/// <summary>
/// 列集合
/// </summary>
public string[] Column { get; set; }
/// <summary>
/// 过滤器
/// </summary>
public string[] Filter { get; set; }
}
+119
View File
@@ -0,0 +1,119 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Aop.Api;
namespace Admin.NET.Core;
/// <summary>
/// 支付宝支付配置选项
/// </summary>
public sealed class AlipayOptions : IConfigurableOptions
{
/// <summary>
/// 支付宝网关地址
/// </summary>
public string ServerUrl { get; init; }
/// <summary>
/// 支付宝授权回调地址
/// </summary>
public string AuthUrl { get; init; }
/// <summary>
/// 应用授权回调地址
/// </summary>
public string AppAuthUrl { get; init; }
/// <summary>
/// 支付宝 websocket 服务地址
/// </summary>
public string WebsocketUrl { get; init; }
/// <summary>
/// 应用回调地址
/// </summary>
public string NotifyUrl { get; init; }
/// <summary>
/// 支付宝根证书存放路径
/// </summary>
public string RootCertPath { get; init; }
/// <summary>
/// 支付宝商户账号列表
/// </summary>
public List<AlipayMerchantAccount> AccountList { get; init; }
/// <summary>
/// 获取支付宝客户端
/// </summary>
/// <param name="account"></param>
public DefaultAopClient GetClient(AlipayMerchantAccount account)
{
account = account ?? throw new Exception("未找到支付宝商户账号");
string path = App.WebHostEnvironment.ContentRootPath;
return new DefaultAopClient(new AlipayConfig
{
Format = "json",
Charset = "UTF-8",
ServerUrl = ServerUrl,
AppId = account.AppId,
SignType = account.SignType,
PrivateKey = account.PrivateKey,
EncryptKey = account.EncryptKey,
RootCertPath = Path.Combine(path, RootCertPath),
AppCertPath = Path.Combine(path, account.AppCertPath),
AlipayPublicCertPath = Path.Combine(path, account.AlipayPublicCertPath)
});
}
}
/// <summary>
/// 支付宝商户账号信息
/// </summary>
public class AlipayMerchantAccount
{
/// <summary>
/// 配置Id
/// </summary>
public long Id { get; init; }
/// <summary>
/// 商户名称
/// </summary>
public string Name { get; init; }
/// <summary>
/// 商户AppId
/// </summary>
public string AppId { get; init; }
/// <summary>
/// 应用私钥
/// </summary>
public string PrivateKey { get; init; }
/// <summary>
/// 从支付宝获取敏感信息时的加密密钥(可选)
/// </summary>
public string EncryptKey { get; init; }
/// <summary>
/// 加密算法
/// </summary>
public string SignType { get; init; }
/// <summary>
/// 应用公钥证书路径
/// </summary>
public string AppCertPath { get; init; }
/// <summary>
/// 支付宝公钥证书路径
/// </summary>
public string AlipayPublicCertPath { get; init; }
}
+84
View File
@@ -0,0 +1,84 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// CI/CD 配置选项
/// </summary>
public class CDConfigOptions : IConfigurableOptions
{
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 用户名
/// </summary>
public string Owner { get; set; }
/// <summary>
/// 仓库名
/// </summary>
public string Repo { get; set; }
/// <summary>
/// 分支名
/// </summary>
public string Branch { get; set; }
/// <summary>
/// 用户授权码
/// </summary>
public string AccessToken { get; set; }
/// <summary>
/// 更新间隔限制(分钟)0 不限制
/// </summary>
public int UpdateInterval { get; set; }
/// <summary>
/// 保留备份文件的数量, 0 不限制
/// </summary>
public int BackupCount { get; set; }
/// <summary>
/// 输出目录配置
/// </summary>
public string BackendOutput { get; set; }
/// <summary>
/// 发布配置选项
/// </summary>
public PublishOptions Publish { get; set; }
/// <summary>
/// 排除文件列表
/// </summary>
public List<string> ExcludeFiles { get; set; }
}
/// <summary>
/// 编译发布配置选项
/// </summary>
public class PublishOptions
{
/// <summary>
/// 发布环境配置
/// </summary>
public string Configuration { get; set; }
/// <summary>
/// 目标框架
/// </summary>
public string TargetFramework { get; set; }
/// <summary>
/// 运行环境
/// </summary>
public string RuntimeIdentifier { get; set; }
}
+142
View File
@@ -0,0 +1,142 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 缓存配置选项
/// </summary>
public sealed class CacheOptions : IConfigurableOptions<CacheOptions>
{
/// <summary>
/// 缓存前缀
/// </summary>
public string Prefix { get; set; }
/// <summary>
/// 缓存类型
/// </summary>
public string CacheType { get; set; }
/// <summary>
/// Redis缓存
/// </summary>
public RedisOption Redis { get; set; }
public void PostConfigure(CacheOptions options, IConfiguration configuration)
{
options.Prefix = string.IsNullOrWhiteSpace(options.Prefix) ? "" : options.Prefix.Trim();
}
}
/// <summary>
/// Redis缓存
/// </summary>
public sealed class RedisOption : RedisOptions
{
/// <summary>
/// 最大消息大小
/// </summary>
public int MaxMessageSize { get; set; }
}
/// <summary>
/// 集群配置选项
/// </summary>
public sealed class ClusterOptions : IConfigurableOptions
{
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 服务器标识
/// </summary>
public string ServerId { get; set; }
/// <summary>
/// 服务器IP
/// </summary>
public string ServerIp { get; set; }
/// <summary>
/// SignalR配置
/// </summary>
public ClusterSignalR SignalR { get; set; }
/// <summary>
/// 数据保护key
/// </summary>
public string DataProtecteKey { get; set; }
/// <summary>
/// 是否哨兵模式
/// </summary>
public bool IsSentinel { get; set; }
/// <summary>
/// 哨兵配置
/// </summary>
public StackExchangeSentinelConfig SentinelConfig { get; set; }
}
/// <summary>
/// 集群SignalR配置
/// </summary>
public sealed class ClusterSignalR
{
/// <summary>
/// Redis连接字符串
/// </summary>
public string RedisConfiguration { get; set; }
/// <summary>
/// 缓存前缀
/// </summary>
public string ChannelPrefix { get; set; }
}
/// <summary>
/// 哨兵配置
/// </summary>
public sealed class StackExchangeSentinelConfig
{
/// <summary>
/// master名称
/// </summary>
public string ServiceName { get; set; }
/// <summary>
/// master访问密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 哨兵访问密码
/// </summary>
public string SentinelPassword { get; set; }
/// <summary>
/// 哨兵端口
/// </summary>
public List<string> EndPoints { get; set; }
/// <summary>
/// 默认库
/// </summary>
public int DefaultDb { get; set; }
/// <summary>
/// 主前缀
/// </summary>
public string MainPrefix { get; set; }
/// <summary>
/// SignalR前缀
/// </summary>
public string SignalRChannelPrefix { get; set; }
}
+33
View File
@@ -0,0 +1,33 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 代码生成配置选项
/// </summary>
public sealed class CodeGenOptions : IConfigurableOptions
{
/// <summary>
/// 数据库实体程序集名称集合
/// </summary>
public List<string> EntityAssemblyNames { get; set; }
/// <summary>
/// 数据库实体基类名称集合
/// </summary>
public List<string> BaseEntityNames { get; set; }
/// <summary>
/// 前端文件根目录
/// </summary>
public string FrontRootPath { get; set; }
/// <summary>
/// 后端生成到的项目
/// </summary>
public List<string> BackendApplicationNamespaces { get; set; }
}
@@ -0,0 +1,43 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 密码配置选项
/// </summary>
public sealed class CryptogramOptions : IConfigurableOptions
{
/// <summary>
/// 是否开启密码强度验证
/// </summary>
public bool StrongPassword { get; set; }
/// <summary>
/// 密码强度验证正则表达式
/// </summary>
public string PasswordStrengthValidation { get; set; }
/// <summary>
/// 密码强度验证提示
/// </summary>
public string PasswordStrengthValidationMsg { get; set; }
/// <summary>
/// 密码类型
/// </summary>
public string CryptoType { get; set; }
/// <summary>
/// 公钥
/// </summary>
public string PublicKey { get; set; }
/// <summary>
/// 私钥
/// </summary>
public string PrivateKey { get; set; }
}
@@ -0,0 +1,136 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 数据库配置选项
/// </summary>
public sealed class DbConnectionOptions : IConfigurableOptions<DbConnectionOptions>
{
/// <summary>
/// 启用控制台打印SQL
/// </summary>
public bool EnableConsoleSql { get; set; }
/// <summary>
/// 超级管理员是否忽略逻辑删除过滤器
/// </summary>
public bool SuperAdminIgnoreIDeletedFilter { get; set; }
/// <summary>
/// 数据库集合
/// </summary>
public List<DbConnectionConfig> ConnectionConfigs { get; set; }
public void PostConfigure(DbConnectionOptions options, IConfiguration configuration)
{
foreach (var dbConfig in options.ConnectionConfigs)
{
if (dbConfig.ConfigId == null || string.IsNullOrWhiteSpace(dbConfig.ConfigId.ToString()))
dbConfig.ConfigId = SqlSugarConst.MainConfigId;
}
}
}
/// <summary>
/// 数据库连接配置
/// </summary>
public sealed class DbConnectionConfig : ConnectionConfig
{
/// <summary>
/// 数据库名称
/// </summary>
public string DbNickName { get; set; }
/// <summary>
/// 数据库配置
/// </summary>
public DbSettings DbSettings { get; set; }
/// <summary>
/// 表配置
/// </summary>
public TableSettings TableSettings { get; set; }
/// <summary>
/// 种子配置
/// </summary>
public SeedSettings SeedSettings { get; set; }
/// <summary>
/// 隔离方式
/// </summary>
public TenantTypeEnum TenantType { get; set; } = TenantTypeEnum.Id;
/// <summary>
/// 数据库存储目录(仅SqlServer支持指定目录创建)
/// </summary>
public string DatabaseDirectory { get; set; }
}
/// <summary>
/// 数据库配置
/// </summary>
public sealed class DbSettings
{
/// <summary>
/// 启用库表初始化
/// </summary>
public bool EnableInitDb { get; set; }
/// <summary>
/// 启用视图初始化
/// </summary>
public bool EnableInitView { get; set; }
/// <summary>
/// 启用库表差异日志
/// </summary>
public bool EnableDiffLog { get; set; }
/// <summary>
/// 启用驼峰转下划线
/// </summary>
public bool EnableUnderLine { get; set; }
/// <summary>
/// 启用数据库连接串加密策略
/// </summary>
public bool EnableConnStringEncrypt { get; set; }
}
/// <summary>
/// 表配置
/// </summary>
public sealed class TableSettings
{
/// <summary>
/// 启用表初始化
/// </summary>
public bool EnableInitTable { get; set; }
/// <summary>
/// 启用表增量更新
/// </summary>
public bool EnableIncreTable { get; set; }
}
/// <summary>
/// 种子配置
/// </summary>
public sealed class SeedSettings
{
/// <summary>
/// 启用种子初始化
/// </summary>
public bool EnableInitSeed { get; set; }
/// <summary>
/// 启用种子增量更新
/// </summary>
public bool EnableIncreSeed { get; set; }
}
+25
View File
@@ -0,0 +1,25 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
public sealed class DeepSeekOptions : IConfigurableOptions
{
/// <summary>
/// 源语言
/// </summary>
public string SourceLang { get; set; }
/// <summary>
/// Api地址
/// </summary>
public string ApiUrl { get; set; }
/// <summary>
/// API KEY
/// </summary>
public string ApiKey { get; set; }
}
@@ -0,0 +1,64 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// ES配置选项
/// </summary>
public class ElasticSearchOptions
{
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; } = false;
/// <summary>
/// ES认证类型,可选 Basic、ApiKey、Base64ApiKey
/// </summary>
public ElasticSearchAuthTypeEnum AuthType { get; set; }
/// <summary>
/// Basic认证的用户名
/// </summary>
public string User { get; set; }
/// <summary>
/// Basic认证的密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// ApiKey认证的ApiId
/// </summary>
public string ApiId { get; set; }
/// <summary>
/// ApiKey认证的ApiKey
/// </summary>
public string ApiKey { get; set; }
/// <summary>
/// Base64ApiKey认证时加密的加密字符串
/// </summary>
public string Base64ApiKey { get; set; }
/// <summary>
/// ES使用Https时的证书指纹,使用证书请自行实现
/// <para>https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/connecting.html</para>
/// </summary>
public string Fingerprint { get; set; }
/// <summary>
/// 地址
/// </summary>
public List<string> ServerUris { get; set; } = new List<string>();
/// <summary>
/// 索引
/// </summary>
public string DefaultIndex { get; set; }
}
+58
View File
@@ -0,0 +1,58 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 邮件配置选项
/// </summary>
public sealed class EmailOptions : IConfigurableOptions
{
/// <summary>
/// 主机
/// </summary>
public string Host { get; set; }
/// <summary>
/// 端口
/// </summary>
public int Port { get; set; }
/// <summary>
/// 默认发件者邮箱
/// </summary>
public string DefaultFromEmail { get; set; }
/// <summary>
/// 默认接收人邮箱
/// </summary>
public string DefaultToEmail { get; set; }
/// <summary>
/// 启用SSL
/// </summary>
public bool EnableSsl { get; set; }
///// <summary>
///// 是否使用默认凭据
///// </summary>
//public bool UseDefaultCredentials { get; set; }
/// <summary>
/// 邮箱账号
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 邮箱密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 默认邮件标题
/// </summary>
public string DefaultFromName { get; set; }
}
+18
View File
@@ -0,0 +1,18 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 枚举配置选项
/// </summary>
public sealed class EnumOptions : IConfigurableOptions
{
/// <summary>
/// 枚举实体程序集名称集合
/// </summary>
public List<string> EntityAssemblyNames { get; set; }
}
+44
View File
@@ -0,0 +1,44 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 事件总线配置选项
/// </summary>
public sealed class EventBusOptions : IConfigurableOptions
{
/// <summary>
/// RabbitMQ
/// </summary>
public RabbitMQSettings RabbitMQ { get; set; }
}
/// <summary>
/// RabbitMQ
/// </summary>
public sealed class RabbitMQSettings
{
/// <summary>
/// 账号
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 密码
/// </summary>
public string Password { get; set; }
/// <summary>
/// 主机
/// </summary>
public string HostName { get; set; }
/// <summary>
/// 端口
/// </summary>
public int Port { get; set; }
}
@@ -0,0 +1,25 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
public sealed class LocalizationSettingsOptions : IConfigurableOptions
{
/// <summary>
/// 语言列表
/// </summary>
public List<string> SupportedCultures { get; set; }
/// <summary>
/// 默认语言
/// </summary>
public string DefaultCulture { get; set; }
/// <summary>
/// 固定时间区域为特定时区(多语言)
/// </summary>
public string DateTimeFormatCulture { get; set; }
}
+23
View File
@@ -0,0 +1,23 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 第三方登录授权配置选项
/// </summary>
public sealed class OAuthOptions : IConfigurableOptions
{
/// <summary>
/// Weixin配置
/// </summary>
public Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions Weixin { get; set; }
/// <summary>
/// Gitee配置
/// </summary>
public Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions Gitee { get; set; }
}
@@ -0,0 +1,33 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 支付回调配置选项
/// </summary>
public sealed class PayCallBackOptions : IConfigurableOptions
{
/// <summary>
/// 微信支付回调
/// </summary>
public string WechatPayUrl { get; set; }
/// <summary>
/// 微信退款回调
/// </summary>
public string WechatRefundUrl { get; set; }
/// <summary>
/// 支付宝支付回调
/// </summary>
public string AlipayUrl { get; set; }
/// <summary>
/// 支付宝退款回调
/// </summary>
public string AlipayRefundUrl { get; set; }
}
+37
View File
@@ -0,0 +1,37 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using AspNetCoreRateLimit;
namespace Admin.NET.Core;
/// <summary>
/// IP限流配置选项
/// </summary>
public sealed class IpRateLimitingOptions : IpRateLimitOptions
{
}
/// <summary>
/// IP限流策略配置选项
/// </summary>
public sealed class IpRateLimitPoliciesOptions : IpRateLimitPolicies, IConfigurableOptions
{
}
/// <summary>
/// 客户端限流配置选项
/// </summary>
public sealed class ClientRateLimitingOptions : ClientRateLimitOptions, IConfigurableOptions
{
}
/// <summary>
/// 客户端限流策略配置选项
/// </summary>
public sealed class ClientRateLimitPoliciesOptions : ClientRateLimitPolicies, IConfigurableOptions
{
}
+138
View File
@@ -0,0 +1,138 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 短信配置选项
/// </summary>
public sealed class SMSOptions : IConfigurableOptions
{
/// <summary>
/// 验证码缓存过期时间(秒)
/// 默认: 60秒
/// </summary>
public int VerifyCodeExpireSeconds { get; set; } = 60;
/// <summary>
/// Aliyun
/// </summary>
public SMSSettings Aliyun { get; set; }
/// <summary>
/// Tencentyun
/// </summary>
public SMSSettings Tencentyun { get; set; }
/// <summary>
/// Custom 自定义短信接口
/// </summary>
public CustomSMSSettings Custom { get; set; }
}
public sealed class SMSSettings
{
/// <summary>
/// SdkAppId
/// </summary>
public string SdkAppId { get; set; }
/// <summary>
/// AccessKey ID
/// </summary>
public string AccessKeyId { get; set; }
/// <summary>
/// AccessKey Secret
/// </summary>
public string AccessKeySecret { get; set; }
/// <summary>
/// Templates
/// </summary>
public List<SmsTemplate> Templates { get; set; }
/// <summary>
/// GetTemplate
/// </summary>
public SmsTemplate GetTemplate(string id = "0")
{
foreach (var template in Templates)
{
if (template.Id == id) { return template; }
}
return null;
}
}
public class SmsTemplate
{
public string Id { get; set; } = string.Empty;
public string SignName { get; set; }
public string TemplateCode { get; set; }
public string Content { get; set; }
}
/// <summary>
/// 自定义短信配置
/// </summary>
public sealed class CustomSMSSettings
{
/// <summary>
/// 是否启用自定义短信接口
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// API 接口地址模板
/// <para>支持占位符: {mobile} - 手机号, {content} - 短信内容, {code} - 验证码</para>
/// </summary>
/// <remarks>示例: https://api.xxxx.com/sms?u=xxxx&amp;key=59e03f49c3dbb5033&amp;m={mobile}&amp;c={content}</remarks>
public string ApiUrl { get; set; }
/// <summary>
/// 请求方法 (GET/POST)
/// </summary>
public string Method { get; set; } = "GET";
/// <summary>
/// POST 请求的 Content-Type (application/json 或 application/x-www-form-urlencoded)
/// 默认: application/x-www-form-urlencoded
/// </summary>
public string ContentType { get; set; } = "application/x-www-form-urlencoded";
/// <summary>
/// POST 请求的数据模板(支持占位符)
/// </summary>
/// <remarks>
/// JSON 格式示例: {"mobile":"{mobile}","content":"{content}","apikey":"your_key"} <br />
/// Form 格式示例: mobile={mobile}&amp;content={content}&amp;apikey=your_key
/// </remarks>
public string PostData { get; set; }
/// <summary>
/// 成功响应标识(用于判断发送是否成功)
/// 如果响应内容包含此字符串,则认为发送成功
/// </summary>
public string SuccessFlag { get; set; } = "0";
/// <summary>
/// 短信模板列表
/// </summary>
public List<SmsTemplate> Templates { get; set; }
/// <summary>
/// 获取模板
/// </summary>
public SmsTemplate GetTemplate(string id = "0")
{
foreach (var template in Templates)
{
if (template.Id == id) { return template; }
}
return null;
}
}
+18
View File
@@ -0,0 +1,18 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 雪花Id配置选项
/// </summary>
public sealed class SnowIdOptions : IdGeneratorOptions, IConfigurableOptions
{
/// <summary>
/// 缓存前缀
/// </summary>
public string WorkerPrefix { get; set; }
}
+60
View File
@@ -0,0 +1,60 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using OnceMi.AspNetCore.OSS;
namespace Admin.NET.Core;
/// <summary>
/// 文件上传配置选项
/// </summary>
public sealed class UploadOptions : IConfigurableOptions
{
/// <summary>
/// 路径
/// </summary>
public string Path { get; set; }
/// <summary>
/// 大小
/// </summary>
public long MaxSize { get; set; }
/// <summary>
/// 上传格式
/// </summary>
public List<string> ContentType { get; set; }
/// <summary>
/// 启用文件MD5验证
/// </summary>
/// <remarks>防止重复上传</remarks>
public bool EnableMd5 { get; set; }
}
/// <summary>
/// 对象存储配置选项
/// </summary>
public sealed class OSSProviderOptions : OSSOptions, IConfigurableOptions
{
/// <summary>
/// 是否启用OSS存储
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 自定义桶名称 不能直接使用Provider来替代桶名称
/// 例:阿里云 1.只能包括小写字母,数字,短横线(-)2.必须以小写字母或者数字开头 3.长度必须在3-63字节之间
/// </summary>
public string Bucket { get; set; }
/// <summary>
/// 自定义Host
/// 拼接外链的Host,若空则使用Endpoint拼接
/// </summary>
/// <remarks></remarks>
public string CustomHost { get; set; }
}
+43
View File
@@ -0,0 +1,43 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 微信相关配置选项
/// </summary>
public sealed class WechatOptions : IConfigurableOptions
{
// 公众号
public string WechatAppId { get; set; }
public string WechatAppSecret { get; set; }
/// <summary>
/// 微信公众号服务器配置中的令牌(Token)
/// </summary>
public string WechatToken { get; set; }
/// <summary>
/// 微信公众号服务器配置中的消息加解密密钥(EncodingAESKey)
/// </summary>
public string WechatEncodingAESKey { get; set; }
// 小程序
public string WxOpenAppId { get; set; }
public string WxOpenAppSecret { get; set; }
/// <summary>
/// 小程序消息推送中的令牌(Token)
/// </summary>
public string WxToken { get; set; }
/// <summary>
/// 小程序消息推送中的消息加解密密钥(EncodingAESKey)
/// </summary>
public string WxEncodingAESKey { get; set; }
}
+18
View File
@@ -0,0 +1,18 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
namespace Admin.NET.Core;
/// <summary>
/// 微信支付配置选项
/// </summary>
public sealed class WechatPayOptions : WechatTenpayClientOptions, IConfigurableOptions
{
/// <summary>
/// 微信公众平台AppId、开放平台AppId、小程序AppId、企业微信CorpId
/// </summary>
public string AppId { get; set; }
}