feat: 完成门店管理剩余接口并补齐文档注释
All checks were successful
Build and Deploy TenantApi / build-and-deploy (push) Successful in 46s

This commit is contained in:
2026-02-17 14:54:35 +08:00
parent 3a94348cca
commit 1b185af718
45 changed files with 13333 additions and 91 deletions

View File

@@ -148,6 +148,14 @@ public sealed class TakeoutAppDbContext(
/// </summary>
public DbSet<StoreDeliveryZone> StoreDeliveryZones => Set<StoreDeliveryZone>();
/// <summary>
/// 门店配送设置。
/// </summary>
public DbSet<StoreDeliverySetting> StoreDeliverySettings => Set<StoreDeliverySetting>();
/// <summary>
/// 门店堂食设置。
/// </summary>
public DbSet<StoreDineInSetting> StoreDineInSettings => Set<StoreDineInSetting>();
/// <summary>
/// 门店桌台区域。
/// </summary>
public DbSet<StoreTableArea> StoreTableAreas => Set<StoreTableArea>();
@@ -168,6 +176,14 @@ public sealed class TakeoutAppDbContext(
/// </summary>
public DbSet<StorePickupSlot> StorePickupSlots => Set<StorePickupSlot>();
/// <summary>
/// 门店班次模板。
/// </summary>
public DbSet<StoreStaffTemplate> StoreStaffTemplates => Set<StoreStaffTemplate>();
/// <summary>
/// 门店每周排班。
/// </summary>
public DbSet<StoreStaffWeeklySchedule> StoreStaffWeeklySchedules => Set<StoreStaffWeeklySchedule>();
/// <summary>
/// 商品分类。
/// </summary>
public DbSet<ProductCategory> ProductCategories => Set<ProductCategory>();
@@ -411,11 +427,15 @@ public sealed class TakeoutAppDbContext(
ConfigureStoreBusinessHour(modelBuilder.Entity<StoreBusinessHour>());
ConfigureStoreHoliday(modelBuilder.Entity<StoreHoliday>());
ConfigureStoreDeliveryZone(modelBuilder.Entity<StoreDeliveryZone>());
ConfigureStoreDeliverySetting(modelBuilder.Entity<StoreDeliverySetting>());
ConfigureStoreDineInSetting(modelBuilder.Entity<StoreDineInSetting>());
ConfigureStoreTableArea(modelBuilder.Entity<StoreTableArea>());
ConfigureStoreTable(modelBuilder.Entity<StoreTable>());
ConfigureStoreEmployeeShift(modelBuilder.Entity<StoreEmployeeShift>());
ConfigureStorePickupSetting(modelBuilder.Entity<StorePickupSetting>());
ConfigureStorePickupSlot(modelBuilder.Entity<StorePickupSlot>());
ConfigureStoreStaffTemplate(modelBuilder.Entity<StoreStaffTemplate>());
ConfigureStoreStaffWeeklySchedule(modelBuilder.Entity<StoreStaffWeeklySchedule>());
ConfigureProductCategory(modelBuilder.Entity<ProductCategory>());
ConfigureProduct(modelBuilder.Entity<Product>());
ConfigureProductAttributeGroup(modelBuilder.Entity<ProductAttributeGroup>());
@@ -603,6 +623,10 @@ public sealed class TakeoutAppDbContext(
builder.Property(x => x.FixedPackagingFee).HasPrecision(10, 2);
builder.Property(x => x.PackagingFeeTiersJson).HasColumnType("text");
builder.Property(x => x.FreeDeliveryThreshold).HasPrecision(10, 2);
builder.Property(x => x.CutleryFeeEnabled).HasDefaultValue(false);
builder.Property(x => x.CutleryFeeAmount).HasPrecision(10, 2);
builder.Property(x => x.RushFeeEnabled).HasDefaultValue(false);
builder.Property(x => x.RushFeeAmount).HasPrecision(10, 2);
builder.HasIndex(x => new { x.TenantId, x.StoreId }).IsUnique();
builder.HasIndex(x => x.TenantId);
}
@@ -981,9 +1005,34 @@ public sealed class TakeoutAppDbContext(
builder.Property(x => x.PolygonGeoJson).HasColumnType("text").IsRequired();
builder.Property(x => x.MinimumOrderAmount).HasPrecision(18, 2);
builder.Property(x => x.DeliveryFee).HasPrecision(18, 2);
builder.Property(x => x.Color).HasMaxLength(32);
builder.Property(x => x.Priority).HasDefaultValue(100);
builder.HasIndex(x => new { x.TenantId, x.StoreId, x.ZoneName });
}
private static void ConfigureStoreDeliverySetting(EntityTypeBuilder<StoreDeliverySetting> builder)
{
builder.ToTable("store_delivery_settings");
builder.HasKey(x => x.Id);
builder.Property(x => x.StoreId).IsRequired();
builder.Property(x => x.Mode).HasConversion<int>();
builder.Property(x => x.FreeDeliveryThreshold).HasPrecision(10, 2);
builder.Property(x => x.MaxDeliveryDistance).HasPrecision(10, 2);
builder.Property(x => x.RadiusTiersJson).HasColumnType("text");
builder.HasIndex(x => new { x.TenantId, x.StoreId }).IsUnique();
}
private static void ConfigureStoreDineInSetting(EntityTypeBuilder<StoreDineInSetting> builder)
{
builder.ToTable("store_dinein_settings");
builder.HasKey(x => x.Id);
builder.Property(x => x.StoreId).IsRequired();
builder.Property(x => x.Enabled).HasDefaultValue(true);
builder.Property(x => x.DefaultDiningMinutes).HasDefaultValue(90);
builder.Property(x => x.OvertimeReminderMinutes).HasDefaultValue(10);
builder.HasIndex(x => new { x.TenantId, x.StoreId }).IsUnique();
}
private static void ConfigureStoreTableArea(EntityTypeBuilder<StoreTableArea> builder)
{
builder.ToTable("store_table_areas");
@@ -1022,6 +1071,8 @@ public sealed class TakeoutAppDbContext(
builder.HasKey(x => x.Id);
builder.Property(x => x.StoreId).IsRequired();
builder.Property(x => x.DefaultCutoffMinutes).HasDefaultValue(30);
builder.Property(x => x.Mode).HasConversion<int>();
builder.Property(x => x.FineRuleJson).HasColumnType("text");
builder.Property(x => x.RowVersion)
.IsConcurrencyToken();
builder.HasIndex(x => new { x.TenantId, x.StoreId }).IsUnique();
@@ -1040,6 +1091,34 @@ public sealed class TakeoutAppDbContext(
builder.HasIndex(x => new { x.TenantId, x.StoreId, x.Name });
}
private static void ConfigureStoreStaffTemplate(EntityTypeBuilder<StoreStaffTemplate> builder)
{
builder.ToTable("store_staff_templates");
builder.HasKey(x => x.Id);
builder.Property(x => x.StoreId).IsRequired();
builder.Property(x => x.MorningStartTime).IsRequired();
builder.Property(x => x.MorningEndTime).IsRequired();
builder.Property(x => x.EveningStartTime).IsRequired();
builder.Property(x => x.EveningEndTime).IsRequired();
builder.Property(x => x.FullStartTime).IsRequired();
builder.Property(x => x.FullEndTime).IsRequired();
builder.HasIndex(x => new { x.TenantId, x.StoreId }).IsUnique();
}
private static void ConfigureStoreStaffWeeklySchedule(EntityTypeBuilder<StoreStaffWeeklySchedule> builder)
{
builder.ToTable("store_staff_weekly_schedules");
builder.HasKey(x => x.Id);
builder.Property(x => x.StoreId).IsRequired();
builder.Property(x => x.StaffId).IsRequired();
builder.Property(x => x.DayOfWeek).IsRequired();
builder.Property(x => x.ShiftType).HasConversion<int>();
builder.Property(x => x.StartTime);
builder.Property(x => x.EndTime);
builder.HasIndex(x => new { x.TenantId, x.StoreId, x.StaffId, x.DayOfWeek }).IsUnique();
builder.HasIndex(x => new { x.TenantId, x.StoreId, x.DayOfWeek });
}
private static void ConfigureProductAttributeGroup(EntityTypeBuilder<ProductAttributeGroup> builder)
{
builder.ToTable("product_attribute_groups");