feat: 套餐管理与配额校验能力

This commit is contained in:
2025-12-03 20:17:55 +08:00
parent ea33e6fefe
commit 19137f3cf7
25 changed files with 996 additions and 4 deletions

View File

@@ -0,0 +1,71 @@
using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
/// <summary>
/// 创建租户套餐命令。
/// </summary>
public sealed record CreateTenantPackageCommand : IRequest<TenantPackageDto>
{
/// <summary>
/// 套餐名称。
/// </summary>
public string Name { get; init; } = string.Empty;
/// <summary>
/// 套餐描述。
/// </summary>
public string? Description { get; init; }
/// <summary>
/// 套餐类型。
/// </summary>
public TenantPackageType PackageType { get; init; } = TenantPackageType.Standard;
/// <summary>
/// 月付价格。
/// </summary>
public decimal? MonthlyPrice { get; init; }
/// <summary>
/// 年付价格。
/// </summary>
public decimal? YearlyPrice { get; init; }
/// <summary>
/// 最大门店数。
/// </summary>
public int? MaxStoreCount { get; init; }
/// <summary>
/// 最大账号数。
/// </summary>
public int? MaxAccountCount { get; init; }
/// <summary>
/// 存储上限GB
/// </summary>
public int? MaxStorageGb { get; init; }
/// <summary>
/// 短信额度。
/// </summary>
public int? MaxSmsCredits { get; init; }
/// <summary>
/// 配送单上限。
/// </summary>
public int? MaxDeliveryOrders { get; init; }
/// <summary>
/// 权益明细 JSON。
/// </summary>
public string? FeaturePoliciesJson { get; init; }
/// <summary>
/// 是否可售。
/// </summary>
public bool IsActive { get; init; } = true;
}