diff --git a/Directory.Packages.props b/Directory.Packages.props
index 590345a..9c37558 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -6,13 +6,10 @@
-
-
-
\ No newline at end of file
diff --git a/Fengling.Platform.Infrastructure/DesignTimeApplicationDbContextFactory.cs b/Fengling.Platform.Infrastructure/DesignTimeApplicationDbContextFactory.cs
deleted file mode 100644
index 8fe4613..0000000
--- a/Fengling.Platform.Infrastructure/DesignTimeApplicationDbContextFactory.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-namespace Fengling.Platform.Infrastructure;
-
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Design;
-using Microsoft.Extensions.DependencyInjection;
-
-public class DesignTimeApplicationDbContextFactory : IDesignTimeDbContextFactory
-{
- public PlatformDbContext CreateDbContext(string[] args)
- {
- IServiceCollection services = new ServiceCollection();
- services.AddMediatR(c =>
- c.RegisterServicesFromAssemblies(typeof(DesignTimeApplicationDbContextFactory).Assembly));
- services.AddDbContext(options =>
- {
- options.UseNpgsql("Host=localhost;Database=fengling_platform;Username=postgres;Password=postgres",
- b =>
- {
- b.MigrationsAssembly(typeof(DesignTimeApplicationDbContextFactory).Assembly.FullName);
- });
- options.UseOpenIddict();
- });
- var provider = services.BuildServiceProvider();
- var dbContext = provider.CreateScope().ServiceProvider.GetRequiredService();
- return dbContext;
- }
-}
diff --git a/Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj b/Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj
index 4f648d5..5fd2bf2 100644
--- a/Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj
+++ b/Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj
@@ -5,17 +5,13 @@
enable
enable
true
- false
-
-
-
diff --git a/Fengling.Platform.Infrastructure/Migrations/20260221065049_Initial.Designer.cs b/Fengling.Platform.Infrastructure/Migrations/20260221065049_Initial.Designer.cs
deleted file mode 100644
index d2e5722..0000000
--- a/Fengling.Platform.Infrastructure/Migrations/20260221065049_Initial.Designer.cs
+++ /dev/null
@@ -1,565 +0,0 @@
-//
-using System;
-using System.Collections.Generic;
-using Fengling.Platform.Infrastructure;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Fengling.Platform.Infrastructure.Migrations
-{
- [DbContext(typeof(PlatformDbContext))]
- [Migration("20260221065049_Initial")]
- partial class Initial
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "10.0.0")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.RoleAggregate.ApplicationRole", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("CreatedTime")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Description")
- .HasMaxLength(200)
- .HasColumnType("character varying(200)");
-
- b.Property("DisplayName")
- .HasColumnType("text");
-
- b.Property("IsSystem")
- .HasColumnType("boolean");
-
- b.Property("Name")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.PrimitiveCollection>("Permissions")
- .HasColumnType("text[]");
-
- b.Property("TenantId")
- .HasColumnType("bigint");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedName")
- .IsUnique()
- .HasDatabaseName("RoleNameIndex");
-
- b.ToTable("AspNetRoles", (string)null);
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.TenantAggregate.Tenant", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ContactEmail")
- .IsRequired()
- .HasMaxLength(100)
- .HasColumnType("character varying(100)");
-
- b.Property("ContactName")
- .IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("ContactPhone")
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Description")
- .HasMaxLength(500)
- .HasColumnType("character varying(500)");
-
- b.Property("ExpiresAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("IsDeleted")
- .HasColumnType("boolean");
-
- b.Property("MaxUsers")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(100)
- .HasColumnType("character varying(100)");
-
- b.Property("RowVersion")
- .HasColumnType("bigint");
-
- b.Property("Status")
- .HasColumnType("integer");
-
- b.Property("TenantCode")
- .IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("UpdatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("Status");
-
- b.HasIndex("TenantCode")
- .IsUnique();
-
- b.ToTable("Platform_Tenants", (string)null);
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.UserAggregate.AccessLog", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Action")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Duration")
- .HasColumnType("integer");
-
- b.Property("ErrorMessage")
- .HasColumnType("text");
-
- b.Property("IpAddress")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("Method")
- .HasMaxLength(10)
- .HasColumnType("character varying(10)");
-
- b.Property("RequestData")
- .HasColumnType("text");
-
- b.Property("Resource")
- .HasMaxLength(200)
- .HasColumnType("character varying(200)");
-
- b.Property("ResponseData")
- .HasColumnType("text");
-
- b.Property("Status")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("TenantId")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("UserAgent")
- .HasMaxLength(500)
- .HasColumnType("character varying(500)");
-
- b.Property("UserName")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.HasKey("Id");
-
- b.HasIndex("Action");
-
- b.HasIndex("CreatedAt");
-
- b.HasIndex("Status");
-
- b.HasIndex("TenantId");
-
- b.HasIndex("UserName");
-
- b.ToTable("AccessLogs");
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AccessFailedCount")
- .HasColumnType("integer");
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("CreatedTime")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Email")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("EmailConfirmed")
- .HasColumnType("boolean");
-
- b.Property("IsDeleted")
- .HasColumnType("boolean");
-
- b.Property("LockoutEnabled")
- .HasColumnType("boolean");
-
- b.Property("LockoutEnd")
- .HasColumnType("timestamp with time zone");
-
- b.Property("NormalizedEmail")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedUserName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("PasswordHash")
- .HasColumnType("text");
-
- b.Property("PhoneNumber")
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("PhoneNumberConfirmed")
- .HasColumnType("boolean");
-
- b.Property("RealName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("SecurityStamp")
- .HasColumnType("text");
-
- b.Property("TwoFactorEnabled")
- .HasColumnType("boolean");
-
- b.Property("UpdatedTime")
- .HasColumnType("timestamp with time zone");
-
- b.Property("UserName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedEmail")
- .HasDatabaseName("EmailIndex");
-
- b.HasIndex("NormalizedUserName")
- .IsUnique()
- .HasDatabaseName("UserNameIndex");
-
- b.HasIndex("PhoneNumber")
- .IsUnique();
-
- b.ToTable("AspNetUsers", (string)null);
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.UserAggregate.AuditLog", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Action")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Description")
- .HasMaxLength(500)
- .HasColumnType("character varying(500)");
-
- b.Property("ErrorMessage")
- .HasColumnType("text");
-
- b.Property("IpAddress")
- .IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("NewValue")
- .HasColumnType("text");
-
- b.Property("OldValue")
- .HasColumnType("text");
-
- b.Property("Operation")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("Operator")
- .IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("Status")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("TargetId")
- .HasColumnType("bigint");
-
- b.Property("TargetName")
- .HasMaxLength(100)
- .HasColumnType("character varying(100)");
-
- b.Property("TargetType")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("TenantId")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.HasKey("Id");
-
- b.HasIndex("Action");
-
- b.HasIndex("CreatedAt");
-
- b.HasIndex("Operation");
-
- b.HasIndex("Operator");
-
- b.HasIndex("TenantId");
-
- b.ToTable("AuditLogs");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClaimType")
- .HasColumnType("text");
-
- b.Property("ClaimValue")
- .HasColumnType("text");
-
- b.Property("RoleId")
- .HasColumnType("bigint");
-
- b.HasKey("Id");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetRoleClaims", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClaimType")
- .HasColumnType("text");
-
- b.Property("ClaimValue")
- .HasColumnType("text");
-
- b.Property("UserId")
- .HasColumnType("bigint");
-
- b.HasKey("Id");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserClaims", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
- {
- b.Property("LoginProvider")
- .HasColumnType("text");
-
- b.Property("ProviderKey")
- .HasColumnType("text");
-
- b.Property("ProviderDisplayName")
- .HasColumnType("text");
-
- b.Property("UserId")
- .HasColumnType("bigint");
-
- b.HasKey("LoginProvider", "ProviderKey");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserLogins", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
- {
- b.Property("UserId")
- .HasColumnType("bigint");
-
- b.Property("RoleId")
- .HasColumnType("bigint");
-
- b.HasKey("UserId", "RoleId");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetUserRoles", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
- {
- b.Property("UserId")
- .HasColumnType("bigint");
-
- b.Property("LoginProvider")
- .HasColumnType("text");
-
- b.Property("Name")
- .HasColumnType("text");
-
- b.Property("Value")
- .HasColumnType("text");
-
- b.HasKey("UserId", "LoginProvider", "Name");
-
- b.ToTable("AspNetUserTokens", (string)null);
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", b =>
- {
- b.OwnsOne("Fengling.Platform.Domain.AggregatesModel.TenantAggregate.TenantInfo", "TenantInfo", b1 =>
- {
- b1.Property("ApplicationUserId")
- .HasColumnType("bigint");
-
- b1.Property("TenantCode")
- .HasColumnType("text")
- .HasColumnName("TenantCode");
-
- b1.Property("TenantId")
- .HasColumnType("bigint")
- .HasColumnName("TenantId");
-
- b1.Property("TenantName")
- .HasColumnType("text")
- .HasColumnName("TenantName");
-
- b1.HasKey("ApplicationUserId");
-
- b1.ToTable("AspNetUsers");
-
- b1.WithOwner()
- .HasForeignKey("ApplicationUserId");
- });
-
- b.Navigation("TenantInfo");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
- {
- b.HasOne("Fengling.Platform.Domain.AggregatesModel.RoleAggregate.ApplicationRole", null)
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
- {
- b.HasOne("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
- {
- b.HasOne("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
- {
- b.HasOne("Fengling.Platform.Domain.AggregatesModel.RoleAggregate.ApplicationRole", null)
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
- {
- b.HasOne("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/Fengling.Platform.Infrastructure/Migrations/20260221065049_Initial.cs b/Fengling.Platform.Infrastructure/Migrations/20260221065049_Initial.cs
deleted file mode 100644
index e4373cc..0000000
--- a/Fengling.Platform.Infrastructure/Migrations/20260221065049_Initial.cs
+++ /dev/null
@@ -1,391 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Fengling.Platform.Infrastructure.Migrations
-{
- ///
- public partial class Initial : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.CreateTable(
- name: "AccessLogs",
- columns: table => new
- {
- Id = table.Column(type: "bigint", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- UserName = table.Column(type: "character varying(50)", maxLength: 50, nullable: true),
- TenantId = table.Column(type: "character varying(50)", maxLength: 50, nullable: true),
- Action = table.Column(type: "character varying(20)", maxLength: 20, nullable: false),
- Resource = table.Column(type: "character varying(200)", maxLength: 200, nullable: true),
- Method = table.Column(type: "character varying(10)", maxLength: 10, nullable: true),
- IpAddress = table.Column(type: "character varying(50)", maxLength: 50, nullable: true),
- UserAgent = table.Column(type: "character varying(500)", maxLength: 500, nullable: true),
- Status = table.Column(type: "character varying(20)", maxLength: 20, nullable: false),
- Duration = table.Column(type: "integer", nullable: false),
- RequestData = table.Column(type: "text", nullable: true),
- ResponseData = table.Column(type: "text", nullable: true),
- ErrorMessage = table.Column(type: "text", nullable: true),
- CreatedAt = table.Column(type: "timestamp with time zone", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AccessLogs", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetRoles",
- columns: table => new
- {
- Id = table.Column(type: "bigint", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- Description = table.Column(type: "character varying(200)", maxLength: 200, nullable: true),
- CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
- TenantId = table.Column(type: "bigint", nullable: true),
- IsSystem = table.Column(type: "boolean", nullable: false),
- DisplayName = table.Column(type: "text", nullable: true),
- Permissions = table.Column>(type: "text[]", nullable: true),
- Name = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
- NormalizedName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
- ConcurrencyStamp = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetRoles", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetUsers",
- columns: table => new
- {
- Id = table.Column(type: "bigint", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- RealName = table.Column(type: "text", nullable: false),
- TenantId = table.Column(type: "bigint", nullable: true),
- TenantCode = table.Column(type: "text", nullable: true),
- TenantName = table.Column(type: "text", nullable: true),
- CreatedTime = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedTime = table.Column(type: "timestamp with time zone", nullable: true),
- IsDeleted = table.Column(type: "boolean", nullable: false),
- UserName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
- NormalizedUserName = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
- Email = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
- NormalizedEmail = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
- EmailConfirmed = table.Column(type: "boolean", nullable: false),
- PasswordHash = table.Column(type: "text", nullable: true),
- SecurityStamp = table.Column(type: "text", nullable: true),
- ConcurrencyStamp = table.Column(type: "text", nullable: true),
- PhoneNumber = table.Column(type: "character varying(20)", maxLength: 20, nullable: true),
- PhoneNumberConfirmed = table.Column(type: "boolean", nullable: false),
- TwoFactorEnabled = table.Column(type: "boolean", nullable: false),
- LockoutEnd = table.Column(type: "timestamp with time zone", nullable: true),
- LockoutEnabled = table.Column(type: "boolean", nullable: false),
- AccessFailedCount = table.Column(type: "integer", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetUsers", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "AuditLogs",
- columns: table => new
- {
- Id = table.Column(type: "bigint", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- Operator = table.Column(type: "character varying(50)", maxLength: 50, nullable: false),
- TenantId = table.Column(type: "character varying(50)", maxLength: 50, nullable: true),
- Operation = table.Column(type: "character varying(20)", maxLength: 20, nullable: false),
- Action = table.Column(type: "character varying(20)", maxLength: 20, nullable: false),
- TargetType = table.Column(type: "character varying(50)", maxLength: 50, nullable: true),
- TargetId = table.Column(type: "bigint", nullable: true),
- TargetName = table.Column(type: "character varying(100)", maxLength: 100, nullable: true),
- IpAddress = table.Column(type: "character varying(50)", maxLength: 50, nullable: false),
- Description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true),
- OldValue = table.Column(type: "text", nullable: true),
- NewValue = table.Column(type: "text", nullable: true),
- ErrorMessage = table.Column(type: "text", nullable: true),
- Status = table.Column(type: "character varying(20)", maxLength: 20, nullable: false),
- CreatedAt = table.Column(type: "timestamp with time zone", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AuditLogs", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "Platform_Tenants",
- columns: table => new
- {
- Id = table.Column(type: "bigint", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- TenantCode = table.Column(type: "character varying(50)", maxLength: 50, nullable: false),
- Name = table.Column(type: "character varying(100)", maxLength: 100, nullable: false),
- ContactName = table.Column(type: "character varying(50)", maxLength: 50, nullable: false),
- ContactEmail = table.Column(type: "character varying(100)", maxLength: 100, nullable: false),
- ContactPhone = table.Column(type: "character varying(20)", maxLength: 20, nullable: true),
- MaxUsers = table.Column(type: "integer", nullable: true),
- CreatedAt = table.Column(type: "timestamp with time zone", nullable: false),
- UpdatedAt = table.Column(type: "timestamp with time zone", nullable: true),
- ExpiresAt = table.Column(type: "timestamp with time zone", nullable: true),
- Description = table.Column(type: "character varying(500)", maxLength: 500, nullable: true),
- Status = table.Column(type: "integer", nullable: false),
- IsDeleted = table.Column(type: "boolean", nullable: false),
- RowVersion = table.Column(type: "bigint", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Platform_Tenants", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetRoleClaims",
- columns: table => new
- {
- Id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- RoleId = table.Column(type: "bigint", nullable: false),
- ClaimType = table.Column(type: "text", nullable: true),
- ClaimValue = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
- table.ForeignKey(
- name: "FK_AspNetRoleClaims_AspNetRoles_RoleId",
- column: x => x.RoleId,
- principalTable: "AspNetRoles",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetUserClaims",
- columns: table => new
- {
- Id = table.Column(type: "integer", nullable: false)
- .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
- UserId = table.Column(type: "bigint", nullable: false),
- ClaimType = table.Column(type: "text", nullable: true),
- ClaimValue = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
- table.ForeignKey(
- name: "FK_AspNetUserClaims_AspNetUsers_UserId",
- column: x => x.UserId,
- principalTable: "AspNetUsers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetUserLogins",
- columns: table => new
- {
- LoginProvider = table.Column(type: "text", nullable: false),
- ProviderKey = table.Column(type: "text", nullable: false),
- ProviderDisplayName = table.Column(type: "text", nullable: true),
- UserId = table.Column(type: "bigint", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey });
- table.ForeignKey(
- name: "FK_AspNetUserLogins_AspNetUsers_UserId",
- column: x => x.UserId,
- principalTable: "AspNetUsers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetUserRoles",
- columns: table => new
- {
- UserId = table.Column(type: "bigint", nullable: false),
- RoleId = table.Column(type: "bigint", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId });
- table.ForeignKey(
- name: "FK_AspNetUserRoles_AspNetRoles_RoleId",
- column: x => x.RoleId,
- principalTable: "AspNetRoles",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_AspNetUserRoles_AspNetUsers_UserId",
- column: x => x.UserId,
- principalTable: "AspNetUsers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "AspNetUserTokens",
- columns: table => new
- {
- UserId = table.Column(type: "bigint", nullable: false),
- LoginProvider = table.Column(type: "text", nullable: false),
- Name = table.Column(type: "text", nullable: false),
- Value = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name });
- table.ForeignKey(
- name: "FK_AspNetUserTokens_AspNetUsers_UserId",
- column: x => x.UserId,
- principalTable: "AspNetUsers",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateIndex(
- name: "IX_AccessLogs_Action",
- table: "AccessLogs",
- column: "Action");
-
- migrationBuilder.CreateIndex(
- name: "IX_AccessLogs_CreatedAt",
- table: "AccessLogs",
- column: "CreatedAt");
-
- migrationBuilder.CreateIndex(
- name: "IX_AccessLogs_Status",
- table: "AccessLogs",
- column: "Status");
-
- migrationBuilder.CreateIndex(
- name: "IX_AccessLogs_TenantId",
- table: "AccessLogs",
- column: "TenantId");
-
- migrationBuilder.CreateIndex(
- name: "IX_AccessLogs_UserName",
- table: "AccessLogs",
- column: "UserName");
-
- migrationBuilder.CreateIndex(
- name: "IX_AspNetRoleClaims_RoleId",
- table: "AspNetRoleClaims",
- column: "RoleId");
-
- migrationBuilder.CreateIndex(
- name: "RoleNameIndex",
- table: "AspNetRoles",
- column: "NormalizedName",
- unique: true);
-
- migrationBuilder.CreateIndex(
- name: "IX_AspNetUserClaims_UserId",
- table: "AspNetUserClaims",
- column: "UserId");
-
- migrationBuilder.CreateIndex(
- name: "IX_AspNetUserLogins_UserId",
- table: "AspNetUserLogins",
- column: "UserId");
-
- migrationBuilder.CreateIndex(
- name: "IX_AspNetUserRoles_RoleId",
- table: "AspNetUserRoles",
- column: "RoleId");
-
- migrationBuilder.CreateIndex(
- name: "EmailIndex",
- table: "AspNetUsers",
- column: "NormalizedEmail");
-
- migrationBuilder.CreateIndex(
- name: "IX_AspNetUsers_PhoneNumber",
- table: "AspNetUsers",
- column: "PhoneNumber",
- unique: true);
-
- migrationBuilder.CreateIndex(
- name: "UserNameIndex",
- table: "AspNetUsers",
- column: "NormalizedUserName",
- unique: true);
-
- migrationBuilder.CreateIndex(
- name: "IX_AuditLogs_Action",
- table: "AuditLogs",
- column: "Action");
-
- migrationBuilder.CreateIndex(
- name: "IX_AuditLogs_CreatedAt",
- table: "AuditLogs",
- column: "CreatedAt");
-
- migrationBuilder.CreateIndex(
- name: "IX_AuditLogs_Operation",
- table: "AuditLogs",
- column: "Operation");
-
- migrationBuilder.CreateIndex(
- name: "IX_AuditLogs_Operator",
- table: "AuditLogs",
- column: "Operator");
-
- migrationBuilder.CreateIndex(
- name: "IX_AuditLogs_TenantId",
- table: "AuditLogs",
- column: "TenantId");
-
- migrationBuilder.CreateIndex(
- name: "IX_Platform_Tenants_Status",
- table: "Platform_Tenants",
- column: "Status");
-
- migrationBuilder.CreateIndex(
- name: "IX_Platform_Tenants_TenantCode",
- table: "Platform_Tenants",
- column: "TenantCode",
- unique: true);
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "AccessLogs");
-
- migrationBuilder.DropTable(
- name: "AspNetRoleClaims");
-
- migrationBuilder.DropTable(
- name: "AspNetUserClaims");
-
- migrationBuilder.DropTable(
- name: "AspNetUserLogins");
-
- migrationBuilder.DropTable(
- name: "AspNetUserRoles");
-
- migrationBuilder.DropTable(
- name: "AspNetUserTokens");
-
- migrationBuilder.DropTable(
- name: "AuditLogs");
-
- migrationBuilder.DropTable(
- name: "Platform_Tenants");
-
- migrationBuilder.DropTable(
- name: "AspNetRoles");
-
- migrationBuilder.DropTable(
- name: "AspNetUsers");
- }
- }
-}
diff --git a/Fengling.Platform.Infrastructure/Migrations/20260221071055_OpenIddict.Designer.cs b/Fengling.Platform.Infrastructure/Migrations/20260221071055_OpenIddict.Designer.cs
deleted file mode 100644
index 7ab9aed..0000000
--- a/Fengling.Platform.Infrastructure/Migrations/20260221071055_OpenIddict.Designer.cs
+++ /dev/null
@@ -1,809 +0,0 @@
-//
-using System;
-using System.Collections.Generic;
-using Fengling.Platform.Infrastructure;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Fengling.Platform.Infrastructure.Migrations
-{
- [DbContext(typeof(PlatformDbContext))]
- [Migration("20260221071055_OpenIddict")]
- partial class OpenIddict
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "10.0.0")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.RoleAggregate.ApplicationRole", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("CreatedTime")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Description")
- .HasMaxLength(200)
- .HasColumnType("character varying(200)");
-
- b.Property("DisplayName")
- .HasColumnType("text");
-
- b.Property("IsSystem")
- .HasColumnType("boolean");
-
- b.Property("Name")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.PrimitiveCollection>("Permissions")
- .HasColumnType("text[]");
-
- b.Property("TenantId")
- .HasColumnType("bigint");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedName")
- .IsUnique()
- .HasDatabaseName("RoleNameIndex");
-
- b.ToTable("AspNetRoles", (string)null);
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.TenantAggregate.Tenant", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ContactEmail")
- .IsRequired()
- .HasMaxLength(100)
- .HasColumnType("character varying(100)");
-
- b.Property("ContactName")
- .IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("ContactPhone")
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Description")
- .HasMaxLength(500)
- .HasColumnType("character varying(500)");
-
- b.Property("ExpiresAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("IsDeleted")
- .HasColumnType("boolean");
-
- b.Property("MaxUsers")
- .HasColumnType("integer");
-
- b.Property("Name")
- .IsRequired()
- .HasMaxLength(100)
- .HasColumnType("character varying(100)");
-
- b.Property("RowVersion")
- .HasColumnType("bigint");
-
- b.Property("Status")
- .HasColumnType("integer");
-
- b.Property("TenantCode")
- .IsRequired()
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("UpdatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("Status");
-
- b.HasIndex("TenantCode")
- .IsUnique();
-
- b.ToTable("Platform_Tenants", (string)null);
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.UserAggregate.AccessLog", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("Action")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Duration")
- .HasColumnType("integer");
-
- b.Property("ErrorMessage")
- .HasColumnType("text");
-
- b.Property("IpAddress")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("Method")
- .HasMaxLength(10)
- .HasColumnType("character varying(10)");
-
- b.Property("RequestData")
- .HasColumnType("text");
-
- b.Property("Resource")
- .HasMaxLength(200)
- .HasColumnType("character varying(200)");
-
- b.Property("ResponseData")
- .HasColumnType("text");
-
- b.Property("Status")
- .IsRequired()
- .HasMaxLength(20)
- .HasColumnType("character varying(20)");
-
- b.Property("TenantId")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.Property("UserAgent")
- .HasMaxLength(500)
- .HasColumnType("character varying(500)");
-
- b.Property("UserName")
- .HasMaxLength(50)
- .HasColumnType("character varying(50)");
-
- b.HasKey("Id");
-
- b.HasIndex("Action");
-
- b.HasIndex("CreatedAt");
-
- b.HasIndex("Status");
-
- b.HasIndex("TenantId");
-
- b.HasIndex("UserName");
-
- b.ToTable("AccessLogs");
- });
-
- modelBuilder.Entity("Fengling.Platform.Domain.AggregatesModel.UserAggregate.ApplicationUser", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("bigint");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("AccessFailedCount")
- .HasColumnType("integer");
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("CreatedTime")
- .HasColumnType("timestamp with time zone");
-
- b.Property("Email")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property