This commit is contained in:
南浔
2025-07-31 22:52:41 +08:00
73 changed files with 7108 additions and 16 deletions
+3
View File
@@ -13,6 +13,9 @@ namespace Apimanager_backend.Data
//自增
builder.Property(x => x.Id)
.ValueGeneratedOnAdd();
//设置唯一
builder.HasIndex(x => x.Endpoint)
.IsUnique();
//外键
builder.HasOne(x => x.Package)
.WithMany(u => u.Apis)
+10
View File
@@ -18,6 +18,10 @@ namespace Apimanager_backend.Data
public DbSet<OperationLog> OperationLogs { get; set; }
//订单表
public DbSet<Order> Orders { get; set; }
//API套餐关联表
public DbSet<ApiPackageItem> apiPackageItems { get; set; }
//用户已订购套餐表
public DbSet<UserPackage> UserPackages { get; set; }
//用户角色表
@@ -26,14 +30,20 @@ namespace Apimanager_backend.Data
public DbSet<Log> Logs { get; set; }
//系统配置表
public DbSet<SystemConfig> SystemConfigs { get; set; }
//支付配置
public DbSet<PaymentConfig> paymentConfigs { get; set; }
public ApiContext(DbContextOptions<ApiContext> options) : base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApiContext).Assembly);
// 配置全局查询筛选器
modelBuilder.Entity<User>().HasQueryFilter(u => !u.IsDelete);
modelBuilder.Entity<UserRole>()
.HasQueryFilter(ur => !ur.User.IsDelete);
modelBuilder.Entity<Api>().HasQueryFilter(a => !a.IsDelete);
modelBuilder.Entity<Apipackage>().HasQueryFilter(x => !x.IsDeleted);
modelBuilder.Entity<Order>().HasQueryFilter(x => !x.IsDeleted);
//配置日志表
modelBuilder.Entity<Log>().HasKey(x => x.Id);
modelBuilder.Entity<Log>()
@@ -0,0 +1,26 @@
using Apimanager_backend.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Apimanager_backend.Data
{
public class ApiPackageItemConfig : IEntityTypeConfiguration<ApiPackageItem>
{
public void Configure(EntityTypeBuilder<ApiPackageItem> builder)
{
//主键
builder.HasKey(x => x.Id);
//自增
builder.Property(x => x.Id)
.ValueGeneratedOnAdd();
//外键
builder.HasOne(x => x.Api)
.WithMany(u => u.ApiPackageItems)
.HasForeignKey(x => x.ApiId);
builder.HasOne(x => x.ApiPackage)
.WithMany(u => u.ApiPackageItems)
.HasForeignKey(x => x.ApiPackageId);
}
}
}
@@ -0,0 +1,22 @@
using Apimanager_backend.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Apimanager_backend.Data
{
public class PaymentConfigConfig : IEntityTypeConfiguration<PaymentConfig>
{
public void Configure(EntityTypeBuilder<PaymentConfig> builder)
{
builder.HasKey(x => x.Id);
builder.Property(x => x.Id)
.ValueGeneratedOnAdd();
builder.HasData(
new PaymentConfig() { Id = 1, Method = PaymentType.AliPay,PayType = PayType.Official, AppId = "", SecretKey = "", PublicKey = "", NotifyUrl = "", GatewayUrl = "", IsEnabled = false },
new PaymentConfig() { Id = 2, Method = PaymentType.WxPay, PayType = PayType.Official, AppId = "", SecretKey = "", PublicKey = "", NotifyUrl = "", GatewayUrl = "", IsEnabled = false },
new PaymentConfig() { Id = 3, Method = PaymentType.QQPay, PayType = PayType.Official, AppId = "", SecretKey = "", PublicKey = "", NotifyUrl = "", GatewayUrl = "", IsEnabled = false },
new PaymentConfig() { Id = 4, Method = PaymentType.Bank, PayType = PayType.Official, AppId = "", SecretKey = "", PublicKey = "", NotifyUrl = "", GatewayUrl = "", IsEnabled = false }
);
}
}
}
@@ -0,0 +1,26 @@
using System.Reflection;
using System.Runtime.Loader;
namespace Apimanager_backend.Data
{
// 隔离加载上下文
public class PluginLoadContext : AssemblyLoadContext
{
private readonly AssemblyDependencyResolver _resolver;
public PluginLoadContext(string pluginPath) : base(isCollectible: true)
{
_resolver = new AssemblyDependencyResolver(pluginPath);
}
protected override Assembly Load(AssemblyName assemblyName)
{
// 避免重复加载核心库
if (assemblyName.Name == "YourSharedContract")
return null;
string assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
return assemblyPath != null ? LoadFromAssemblyPath(assemblyPath) : null;
}
}
}