using SqlSugar; using Volo.Abp.Domain.Entities.Auditing; namespace Yi.Framework.AiHub.Domain.Entities; /// /// 尊享包聚合根 /// 用于给VIP扩展额外购买尊享token包 /// [SugarTable("Ai_PremiumPackage")] [SugarIndex($"index_{nameof(UserId)}", nameof(UserId), OrderByType.Asc)] public class PremiumPackageAggregateRoot : FullAuditedAggregateRoot { public PremiumPackageAggregateRoot() { } public PremiumPackageAggregateRoot(Guid userId, long totalTokens, string packageName) { UserId = userId; TotalTokens = totalTokens; RemainingTokens = totalTokens; PackageName = packageName; IsActive = true; } /// /// 用户ID /// public Guid UserId { get; set; } /// /// 包名称 /// public string PackageName { get; set; } /// /// 总用量(总token数) /// public long TotalTokens { get; set; } /// /// 剩余用量(剩余token数) /// public long RemainingTokens { get; set; } /// /// 已使用token数 /// public long UsedTokens { get; set; } /// /// 到期时间 /// public DateTime? ExpireDateTime { get; set; } /// /// 是否激活 /// public bool IsActive { get; set; } /// /// 购买金额 /// public decimal PurchaseAmount { get; set; } /// /// 备注 /// public string? Remark { get; set; } /// /// 消耗token /// /// 消耗的token数量 /// 是否消耗成功 public bool ConsumeTokens(long tokenCount) { RemainingTokens -= tokenCount; UsedTokens += tokenCount; return true; } /// /// 检查是否可用 /// /// 是否可用 public bool IsAvailable() { if (!IsActive) { return false; } if (RemainingTokens <= 0) { return false; } if (ExpireDateTime.HasValue && ExpireDateTime.Value < DateTime.Now) { return false; } return true; } /// /// 停用尊享包 /// public void Deactivate() { IsActive = false; } /// /// 激活尊享包 /// public void Activate() { IsActive = true; } /// /// 设置到期时间 /// /// 到期时间 public void SetExpireDateTime(DateTime expireDateTime) { ExpireDateTime = expireDateTime; } }