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

@@ -0,0 +1,45 @@
using TakeoutSaaS.Domain.Stores.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Stores.Entities;
/// <summary>
/// 门店配送设置聚合。
/// </summary>
public sealed class StoreDeliverySetting : MultiTenantEntityBase
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 配送模式。
/// </summary>
public StoreDeliveryMode Mode { get; set; } = StoreDeliveryMode.Polygon;
/// <summary>
/// 配送时效加成(分钟)。
/// </summary>
public int EtaAdjustmentMinutes { get; set; }
/// <summary>
/// 免配送费门槛。
/// </summary>
public decimal? FreeDeliveryThreshold { get; set; }
/// <summary>
/// 每小时配送上限。
/// </summary>
public int HourlyCapacityLimit { get; set; } = 100;
/// <summary>
/// 最大配送距离(公里)。
/// </summary>
public decimal MaxDeliveryDistance { get; set; } = 5m;
/// <summary>
/// 半径梯度配置 JSON。
/// </summary>
public string? RadiusTiersJson { get; set; }
}

View File

@@ -37,6 +37,16 @@ public sealed class StoreDeliveryZone : MultiTenantEntityBase
/// </summary>
public int? EstimatedMinutes { get; set; }
/// <summary>
/// 区域颜色。
/// </summary>
public string? Color { get; set; }
/// <summary>
/// 优先级(数值越小越优先)。
/// </summary>
public int Priority { get; set; } = 100;
/// <summary>
/// 排序值。
/// </summary>

View File

@@ -0,0 +1,29 @@
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Stores.Entities;
/// <summary>
/// 门店堂食基础设置。
/// </summary>
public sealed class StoreDineInSetting : MultiTenantEntityBase
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 是否启用堂食。
/// </summary>
public bool Enabled { get; set; } = true;
/// <summary>
/// 默认用餐时长(分钟)。
/// </summary>
public int DefaultDiningMinutes { get; set; } = 90;
/// <summary>
/// 超时提醒阈值(分钟)。
/// </summary>
public int OvertimeReminderMinutes { get; set; } = 10;
}

View File

@@ -47,4 +47,24 @@ public sealed class StoreFee : MultiTenantEntityBase
/// 免配送费门槛。
/// </summary>
public decimal? FreeDeliveryThreshold { get; set; }
/// <summary>
/// 是否启用餐具费。
/// </summary>
public bool CutleryFeeEnabled { get; set; }
/// <summary>
/// 餐具费金额。
/// </summary>
public decimal CutleryFeeAmount { get; set; }
/// <summary>
/// 是否启用加急费。
/// </summary>
public bool RushFeeEnabled { get; set; }
/// <summary>
/// 加急费金额。
/// </summary>
public decimal RushFeeAmount { get; set; }
}

View File

@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Domain.Stores.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Stores.Entities;
@@ -33,6 +34,16 @@ public sealed class StorePickupSetting : MultiTenantEntityBase
/// </summary>
public int? MaxQuantityPerOrder { get; set; }
/// <summary>
/// 自提配置模式。
/// </summary>
public StorePickupMode Mode { get; set; } = StorePickupMode.Big;
/// <summary>
/// 精细规则 JSON。
/// </summary>
public string? FineRuleJson { get; set; }
/// <summary>
/// 并发控制字段。
/// </summary>

View File

@@ -0,0 +1,44 @@
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Stores.Entities;
/// <summary>
/// 门店员工班次模板。
/// </summary>
public sealed class StoreStaffTemplate : MultiTenantEntityBase
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 早班开始时间。
/// </summary>
public TimeSpan MorningStartTime { get; set; } = new(9, 0, 0);
/// <summary>
/// 早班结束时间。
/// </summary>
public TimeSpan MorningEndTime { get; set; } = new(14, 0, 0);
/// <summary>
/// 晚班开始时间。
/// </summary>
public TimeSpan EveningStartTime { get; set; } = new(14, 0, 0);
/// <summary>
/// 晚班结束时间。
/// </summary>
public TimeSpan EveningEndTime { get; set; } = new(21, 0, 0);
/// <summary>
/// 全天班开始时间。
/// </summary>
public TimeSpan FullStartTime { get; set; } = new(9, 0, 0);
/// <summary>
/// 全天班结束时间。
/// </summary>
public TimeSpan FullEndTime { get; set; } = new(21, 0, 0);
}

View File

@@ -0,0 +1,40 @@
using TakeoutSaaS.Domain.Stores.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Stores.Entities;
/// <summary>
/// 门店员工每周排班。
/// </summary>
public sealed class StoreStaffWeeklySchedule : MultiTenantEntityBase
{
/// <summary>
/// 门店 ID。
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 员工 ID。
/// </summary>
public long StaffId { get; set; }
/// <summary>
/// 星期0=周一6=周日)。
/// </summary>
public int DayOfWeek { get; set; }
/// <summary>
/// 班次类型。
/// </summary>
public StoreStaffShiftType ShiftType { get; set; } = StoreStaffShiftType.Off;
/// <summary>
/// 开始时间(休息时为空)。
/// </summary>
public TimeSpan? StartTime { get; set; }
/// <summary>
/// 结束时间(休息时为空)。
/// </summary>
public TimeSpan? EndTime { get; set; }
}

View File

@@ -0,0 +1,17 @@
namespace TakeoutSaaS.Domain.Stores.Enums;
/// <summary>
/// 门店配送配置模式。
/// </summary>
public enum StoreDeliveryMode
{
/// <summary>
/// 多边形配送范围。
/// </summary>
Polygon = 0,
/// <summary>
/// 半径梯度配送。
/// </summary>
Radius = 1
}

View File

@@ -0,0 +1,17 @@
namespace TakeoutSaaS.Domain.Stores.Enums;
/// <summary>
/// 门店自提模式。
/// </summary>
public enum StorePickupMode
{
/// <summary>
/// 大时段模式。
/// </summary>
Big = 0,
/// <summary>
/// 精细规则模式。
/// </summary>
Fine = 1
}

View File

@@ -0,0 +1,27 @@
namespace TakeoutSaaS.Domain.Stores.Enums;
/// <summary>
/// 员工班次类型。
/// </summary>
public enum StoreStaffShiftType
{
/// <summary>
/// 早班。
/// </summary>
Morning = 0,
/// <summary>
/// 晚班。
/// </summary>
Evening = 1,
/// <summary>
/// 全天班。
/// </summary>
Full = 2,
/// <summary>
/// 休息。
/// </summary>
Off = 3
}