using MediatR;
using TakeoutSaaS.Application.App.Tenants.Dto;
using TakeoutSaaS.Domain.Tenants.Enums;
namespace TakeoutSaaS.Application.App.Tenants.Commands;
///
/// 更新租户套餐命令。
///
public sealed record UpdateTenantPackageCommand : IRequest
{
///
/// 套餐 ID。
///
public long TenantPackageId { get; init; }
///
/// 套餐名称。
///
public string Name { get; init; } = string.Empty;
///
/// 套餐描述。
///
public string? Description { get; init; }
///
/// 套餐类型。
///
public TenantPackageType PackageType { get; init; } = TenantPackageType.Standard;
///
/// 月付价格。
///
public decimal? MonthlyPrice { get; init; }
///
/// 年付价格。
///
public decimal? YearlyPrice { get; init; }
///
/// 最大门店数。
///
public int? MaxStoreCount { get; init; }
///
/// 最大账号数。
///
public int? MaxAccountCount { get; init; }
///
/// 存储上限(GB)。
///
public int? MaxStorageGb { get; init; }
///
/// 短信额度。
///
public int? MaxSmsCredits { get; init; }
///
/// 配送单上限。
///
public int? MaxDeliveryOrders { get; init; }
///
/// 权益明细 JSON。
///
public string? FeaturePoliciesJson { get; init; }
///
/// 是否仍启用(平台控制)。
///
public bool IsActive { get; init; } = true;
///
/// 是否对外可见(展示页/套餐列表可见性)。
///
public bool IsPublicVisible { get; init; } = true;
///
/// 是否允许新租户购买/选择(仅影响新购)。
///
public bool IsAllowNewTenantPurchase { get; init; } = true;
///
/// 发布状态(草稿/已发布)。
///
public TenantPackagePublishStatus? PublishStatus { get; init; }
///
/// 是否推荐展示(运营推荐标识)。
///
public bool IsRecommended { get; init; }
///
/// 套餐标签(用于展示与对比页)。
///
public string[] Tags { get; init; } = [];
///
/// 展示排序,数值越小越靠前。
///
public int SortOrder { get; init; } = 0;
}