using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;
namespace TakeoutSaaS.Domain.Tenants.Entities;
///
/// 租户套餐定义,描述不同等级的服务套餐。
///
public sealed class TenantPackage : AuditableEntityBase
{
///
/// 套餐名称。
///
public string Name { get; set; } = string.Empty;
///
/// 套餐描述。
///
public string? Description { get; set; }
///
/// 套餐类型。
///
public TenantPackageType PackageType { get; set; } = TenantPackageType.Free;
///
/// 月付价格。
///
public decimal? MonthlyPrice { get; set; }
///
/// 年付价格。
///
public decimal? YearlyPrice { get; set; }
///
/// 最大门店数。
///
public int? MaxStoreCount { get; set; }
///
/// 最大账号数。
///
public int? MaxAccountCount { get; set; }
///
/// 最大存储空间(GB)。
///
public int? MaxStorageGb { get; set; }
///
/// 最大短信额度。
///
public int? MaxSmsCredits { get; set; }
///
/// 最大配送订单数。
///
public int? MaxDeliveryOrders { get; set; }
///
/// 功能策略 JSON。
///
public string? FeaturePoliciesJson { get; set; }
///
/// 是否启用。
///
public bool IsActive { get; set; } = true;
///
/// 排序序号。
///
public int SortOrder { get; set; }
///
/// 是否允许新租户购买。
///
public bool IsAllowNewTenantPurchase { get; set; } = true;
///
/// 是否公开可见。
///
public bool IsPublicVisible { get; set; } = true;
///
/// 发布状态。
///
public TenantPackagePublishStatus PublishStatus { get; set; } = TenantPackagePublishStatus.Draft;
///
/// 是否推荐。
///
public bool IsRecommended { get; set; }
///
/// 标签列表。
///
public string[] Tags { get; set; } = [];
}