namespace TakeoutSaaS.Domain.Tenants.Entities; /// /// 账单明细项(值对象)。 /// 用于记录账单中的单项费用明细,如套餐费用、配额包费用等。 /// public sealed class BillingLineItem { /// /// 明细项类型(如:套餐费、配额包、其他费用)。 /// public string ItemType { get; set; } = string.Empty; /// /// 明细项描述。 /// public string Description { get; set; } = string.Empty; /// /// 数量。 /// public decimal Quantity { get; set; } /// /// 单价。 /// public decimal UnitPrice { get; set; } /// /// 金额(数量 × 单价)。 /// public decimal Amount { get; set; } /// /// 折扣率(0-1 之间,如 0.1 表示 10% 折扣)。 /// public decimal DiscountRate { get; set; } /// /// 创建账单明细项。 /// /// 明细项类型。 /// 描述。 /// 数量。 /// 单价。 /// 折扣率。 /// 账单明细项实例。 public static BillingLineItem Create( string itemType, string description, decimal quantity, decimal unitPrice, decimal discountRate = 0) { var amount = quantity * unitPrice * (1 - discountRate); return new BillingLineItem { ItemType = itemType, Description = description, Quantity = quantity, UnitPrice = unitPrice, Amount = amount, DiscountRate = discountRate }; } /// /// 计算折扣后的金额。 /// /// 折扣后金额。 public decimal CalculateDiscountedAmount() { return Quantity * UnitPrice * (1 - DiscountRate); } /// /// 获取折扣金额。 /// /// 折扣金额。 public decimal GetDiscountAmount() { return Quantity * UnitPrice * DiscountRate; } }