using SqlSugar; using Volo.Abp.Domain.Entities.Auditing; namespace Yi.Framework.AiHub.Domain.Entities; /// /// 用户邀请码 /// [SugarTable("Ai_InviteCode")] [SugarIndex($"index_{nameof(UserId)}", nameof(UserId), OrderByType.Asc, true)] [SugarIndex($"index_{nameof(Code)}", nameof(Code), OrderByType.Asc, true)] public class InviteCodeAggregateRoot : FullAuditedAggregateRoot { public InviteCodeAggregateRoot() { } public InviteCodeAggregateRoot(Guid userId, string code) { UserId = userId; Code = code; IsUsed = false; IsUserInvited = false; UsedCount = 0; } /// /// 用户ID(邀请码拥有者) /// public Guid UserId { get; set; } /// /// 邀请码(唯一) /// [SugarColumn(Length = 50)] public string Code { get; set; } = string.Empty; /// /// 是否已被使用(一个邀请码只能被使用一次) /// public bool IsUsed { get; set; } /// /// 邀请码拥有者是否已被他人邀请(被邀请后不可再提供邀请码) /// public bool IsUserInvited { get; set; } /// /// 被使用次数(统计用) /// public int UsedCount { get; set; } /// /// 使用时间 /// public DateTime? UsedTime { get; set; } /// /// 使用人ID /// public Guid? UsedByUserId { get; set; } /// /// 备注信息 /// [SugarColumn(Length = 500, IsNullable = true)] public string? Remark { get; set; } /// /// 标记邀请码已被使用 /// /// 使用者ID public void MarkAsUsed(Guid usedByUserId) { IsUsed = true; UsedTime = DateTime.Now; UsedByUserId = usedByUserId; UsedCount++; } /// /// 标记用户已被邀请 /// public void MarkUserAsInvited() { IsUserInvited = true; } }