using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Abp.Domain.Entities; using Abp.Domain.Entities.Auditing; using VberZero.BaseSystem.Users; namespace VberZero.BaseSystem.Roles; [Table("Sys_Roles")] public class Role : FullAuditedEntity, IFullAudited, IMayHaveTenant { public const int MaxDisplayNameLength = 64; public const int MaxNameLength = 32; public const int MaxDescriptionLength = 5000; public virtual int? TenantId { get; set; } [Required] [StringLength(MaxNameLength)] public virtual string Name { get; set; } [Required] [StringLength(MaxDisplayNameLength)] public virtual string DisplayName { get; set; } /// /// 账户类型 /// public virtual VzDefinition.AccountType AccountType { get; set; } /// /// 用户级别 /// public virtual VzDefinition.UserType UserType { get; set; } [StringLength(MaxDescriptionLength)] public string Description { get; set; } public virtual bool IsStatic { get; set; } public virtual bool IsDefault { get; set; } public const int MaxConcurrencyStampLength = 128; /// /// 此角色的唯一名称。 /// [Required] [StringLength(MaxNameLength)] public virtual string NormalizedName { get; set; } [ForeignKey("RoleId")] public virtual ICollection Claims { get; set; } /// /// 每当角色持久化到库时必须更改的随机值 /// [StringLength(MaxConcurrencyStampLength)] public virtual string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString(); public virtual User DeleterUser { get; set; } public virtual User CreatorUser { get; set; } public virtual User LastModifierUser { get; set; } [ForeignKey("RoleId")] public virtual ICollection Permissions { get; set; } public Role() { Name = Guid.NewGuid().ToString("N"); SetNormalizedName(); AccountType = VzDefinition.AccountType.Client; UserType = VzDefinition.UserType.Ordinary; } public Role(int? tenantId, string displayName) : this() { TenantId = tenantId; DisplayName = displayName; SetNormalizedName(); } public Role(int? tenantId, string name, string displayName) : this(tenantId, displayName) { Name = name; SetNormalizedName(); } public virtual void SetNormalizedName() { NormalizedName = Name.ToUpperInvariant(); } public override string ToString() { return $"[Role {Id}, Name={Name}]"; } }