using System.Text.Json.Serialization; using TakeoutSaaS.Domain.Tenants.Enums; using TakeoutSaaS.Shared.Abstractions.Serialization; namespace TakeoutSaaS.Application.App.Tenants.Dto; /// /// 租户套餐 DTO。 /// public sealed class TenantPackageDto { /// /// 套餐 ID。 /// [JsonConverter(typeof(SnowflakeIdJsonConverter))] public long Id { get; init; } /// /// 套餐名称。 /// public string Name { get; init; } = string.Empty; /// /// 描述。 /// public string? Description { get; init; } /// /// 套餐类型。 /// public TenantPackageType PackageType { get; init; } /// /// 月付价格。 /// 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; } /// /// 是否对外可见。 /// public bool IsPublicVisible { get; init; } /// /// 是否允许新租户购买/选择。 /// public bool IsAllowNewTenantPurchase { get; init; } /// /// 发布状态。 /// public TenantPackagePublishStatus PublishStatus { get; init; } /// /// 是否推荐展示(运营推荐标识)。 /// public bool IsRecommended { get; init; } /// /// 套餐标签(用于展示与对比页)。 /// public string[] Tags { get; init; } = []; /// /// 展示排序,数值越小越靠前。 /// public int SortOrder { get; init; } }