From 89c8236f99d1fca19fc14e8eee8c2caf6ddb9bf7 Mon Sep 17 00:00:00 2001 From: kon1z Date: Thu, 16 Oct 2025 22:03:06 +0800 Subject: [PATCH] =?UTF-8?q?chore=20=E9=87=8D=E6=9E=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=BF=81=E7=A7=BB=E9=80=BB=E8=BE=91=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=AE=9E=E4=BD=93=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminHttpApiHostModule.cs | 8 ++++ .../AdminApplicationAutoMapperProfile.cs | 1 + .../ApplicationServices/OrderAppService.cs | 1 + .../KonSoft.Admin.Domain/Entities/Order.cs | 1 + .../{Entities => ValueObjects}/AddressInfo.cs | 2 +- .../EntityFrameworkCore/AdminDbContext.cs | 10 ++-- ...licationDbContextModelBuilderExtensions.cs | 23 +++++---- .../EfCore/PendingEfCoreMigrationsChecker.cs | 48 +++++++++---------- 8 files changed, 51 insertions(+), 43 deletions(-) rename modules/admin/src/KonSoft.Admin.Domain/{Entities => ValueObjects}/AddressInfo.cs (96%) diff --git a/microservices/KonSoft.Admin.HttpApi.Host/AdminHttpApiHostModule.cs b/microservices/KonSoft.Admin.HttpApi.Host/AdminHttpApiHostModule.cs index 77d82c6..55b58ff 100644 --- a/microservices/KonSoft.Admin.HttpApi.Host/AdminHttpApiHostModule.cs +++ b/microservices/KonSoft.Admin.HttpApi.Host/AdminHttpApiHostModule.cs @@ -1,9 +1,11 @@ +using KonSoft.Admin.DbMigrations; using KonSoft.Admin.EntityFrameworkCore; using KonSoft.Shared.Hosting.AspNetCore; using KonSoft.Shared.Hosting.Microservices; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.BackgroundJobs; using Volo.Abp.Modularity; @@ -74,4 +76,10 @@ public class AdminHttpApiHostModule : AbpModule app.UseAbpSerilogEnrichers(); app.UseConfiguredEndpoints(); } + + public override async Task OnPostApplicationInitializationAsync(ApplicationInitializationContext context) + { + await context.ServiceProvider.GetRequiredService() + .CheckAndApplyDatabaseMigrationsAsync(); + } } \ No newline at end of file diff --git a/modules/admin/src/KonSoft.Admin.Application/AdminApplicationAutoMapperProfile.cs b/modules/admin/src/KonSoft.Admin.Application/AdminApplicationAutoMapperProfile.cs index 35a9d65..115d8b3 100644 --- a/modules/admin/src/KonSoft.Admin.Application/AdminApplicationAutoMapperProfile.cs +++ b/modules/admin/src/KonSoft.Admin.Application/AdminApplicationAutoMapperProfile.cs @@ -1,6 +1,7 @@ using AutoMapper; using KonSoft.Admin.Dtos; using KonSoft.Admin.Entities; +using KonSoft.Admin.ValueObjects; namespace KonSoft.Admin; diff --git a/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs b/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs index 57115ea..2accfa3 100644 --- a/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs +++ b/modules/admin/src/KonSoft.Admin.Application/ApplicationServices/OrderAppService.cs @@ -6,6 +6,7 @@ using KonSoft.Admin.Dtos; using KonSoft.Admin.Entities; using KonSoft.Admin.IApplicationServices; using KonSoft.Admin.IRepositories; +using KonSoft.Admin.ValueObjects; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; diff --git a/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs b/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs index 4498c09..2617fee 100644 --- a/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs +++ b/modules/admin/src/KonSoft.Admin.Domain/Entities/Order.cs @@ -1,5 +1,6 @@ using System; using KonSoft.Admin.Enums; +using KonSoft.Admin.ValueObjects; using Volo.Abp.Domain.Entities.Auditing; namespace KonSoft.Admin.Entities; diff --git a/modules/admin/src/KonSoft.Admin.Domain/Entities/AddressInfo.cs b/modules/admin/src/KonSoft.Admin.Domain/ValueObjects/AddressInfo.cs similarity index 96% rename from modules/admin/src/KonSoft.Admin.Domain/Entities/AddressInfo.cs rename to modules/admin/src/KonSoft.Admin.Domain/ValueObjects/AddressInfo.cs index a1e20d4..2b649e3 100644 --- a/modules/admin/src/KonSoft.Admin.Domain/Entities/AddressInfo.cs +++ b/modules/admin/src/KonSoft.Admin.Domain/ValueObjects/AddressInfo.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using Volo.Abp.Domain.Values; -namespace KonSoft.Admin.Entities; +namespace KonSoft.Admin.ValueObjects; /// /// 地址 diff --git a/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/AdminDbContext.cs b/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/AdminDbContext.cs index 6437a22..655c2b5 100644 --- a/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/AdminDbContext.cs +++ b/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/AdminDbContext.cs @@ -1,4 +1,4 @@ -using KonSoft.Admin.Entities; +using KonSoft.Admin.EntityFrameworkCore.Configures; using Microsoft.EntityFrameworkCore; using Volo.Abp.AuditLogging.EntityFrameworkCore; using Volo.Abp.BackgroundJobs.EntityFrameworkCore; @@ -41,6 +41,8 @@ public class AdminDbContext : builder.ConfigureOpenIddict(); builder.ConfigureFeatureManagement(); builder.ConfigureTenantManagement(); + + builder.ConfigureApplication(); } public DbSet Users { get; set; } @@ -55,10 +57,4 @@ public class AdminDbContext : public DbSet Tenants { get; set; } public DbSet TenantConnectionStrings { get; set; } - - - public DbSet Orders { get; set; } - public DbSet ServiceCategories { get; set; } - public DbSet HouseholdWorkers { get; set; } - } \ No newline at end of file diff --git a/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/Configures/ApplicationDbContextModelBuilderExtensions.cs b/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/Configures/ApplicationDbContextModelBuilderExtensions.cs index 7c00abd..9ce82bf 100644 --- a/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/Configures/ApplicationDbContextModelBuilderExtensions.cs +++ b/modules/admin/src/KonSoft.Admin.EntityFrameworkCore/EntityFrameworkCore/Configures/ApplicationDbContextModelBuilderExtensions.cs @@ -1,6 +1,6 @@ -using System.Diagnostics.CodeAnalysis; -using KonSoft.Admin.Entities; +using KonSoft.Admin.Entities; using Microsoft.EntityFrameworkCore; +using System.Diagnostics.CodeAnalysis; using Volo.Abp; namespace KonSoft.Admin.EntityFrameworkCore.Configures; @@ -15,20 +15,23 @@ public static class ApplicationDbContextModelBuilderExtensions { b.ToTable(AdminConsts.DbTablePrefix + nameof(Order) + AdminConsts.DbSchema); - b.OwnsOne(o => o.Address, a => - { - a.Property(p => p.ContactName).HasColumnName("ContactName").HasMaxLength(50); - a.Property(p => p.ContactPhone).HasColumnName("ContactPhone").HasMaxLength(20); - a.Property(p => p.DetailAddress).HasColumnName("DetailAddress").HasMaxLength(200); - a.Property(p => p.City).HasColumnName("City").HasMaxLength(50); - a.Property(p => p.District).HasColumnName("District").HasMaxLength(50); - }); + b.ComplexProperty(e => e.Address); }); + builder.Entity(b => + { + b.ToTable(AdminConsts.DbTablePrefix + nameof(Product) + AdminConsts.DbSchema); + }); + + builder.Entity(b => + { + b.ToTable(AdminConsts.DbTablePrefix + nameof(HouseholdWorker) + AdminConsts.DbSchema); + }); builder.Entity(b => { b.ToTable(AdminConsts.DbTablePrefix + nameof(ServiceCategory) + AdminConsts.DbSchema); }); + } } \ No newline at end of file diff --git a/shared/KonSoft.Shared.Hosting.Microservices/DbMigrations/EfCore/PendingEfCoreMigrationsChecker.cs b/shared/KonSoft.Shared.Hosting.Microservices/DbMigrations/EfCore/PendingEfCoreMigrationsChecker.cs index fdc1aff..dadf1df 100644 --- a/shared/KonSoft.Shared.Hosting.Microservices/DbMigrations/EfCore/PendingEfCoreMigrationsChecker.cs +++ b/shared/KonSoft.Shared.Hosting.Microservices/DbMigrations/EfCore/PendingEfCoreMigrationsChecker.cs @@ -71,40 +71,38 @@ public abstract class PendingEfCoreMigrationsChecker : ITransientDep protected virtual async Task LockAndApplyDatabaseMigrationsAsync() { - await using (var handle = await DistributedLockProvider.TryAcquireAsync("Migration_" + DatabaseName)) + await using var handle = await DistributedLockProvider.TryAcquireAsync("Migration_" + DatabaseName); + Log.Information($"Lock is acquired for db migration and seeding on database named: {DatabaseName}..."); + + if (handle is null) { - Log.Information($"Lock is acquired for db migration and seeding on database named: {DatabaseName}..."); + Log.Information($"Handle is null because of the locking for : {DatabaseName}"); + return; + } - if (handle is null) + using (CurrentTenant.Change(null)) + { + // Create database tables if needed + using (var uow = UnitOfWorkManager.Begin(true, false)) { - Log.Information($"Handle is null because of the locking for : {DatabaseName}"); - return; - } + var dbContext = ServiceProvider.GetRequiredService(); - using (CurrentTenant.Change(null)) - { - // Create database tables if needed - using (var uow = UnitOfWorkManager.Begin(true, false)) + var pendingMigrations = await dbContext + .Database + .GetPendingMigrationsAsync(); + + if (pendingMigrations.Any()) { - var dbContext = ServiceProvider.GetRequiredService(); - - var pendingMigrations = await dbContext - .Database - .GetPendingMigrationsAsync(); - - if (pendingMigrations.Any()) - { - await dbContext.Database.MigrateAsync(); - } - - await uow.CompleteAsync(); + await dbContext.Database.MigrateAsync(); } - await ServiceProvider.GetRequiredService() - .SeedAsync(); + await uow.CompleteAsync(); } - Log.Information($"Lock is released for db migration and seeding on database named: {DatabaseName}..."); + await ServiceProvider.GetRequiredService() + .SeedAsync(); } + + Log.Information($"Lock is released for db migration and seeding on database named: {DatabaseName}..."); } } \ No newline at end of file