first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using F9WebAiTest.Domain.Enums.SYS.RBAC;
|
||||
using F9WebAiTest.Domain.Events.SYS.RBAC;
|
||||
|
||||
namespace F9WebAiTest.Domain.Entities.SYS.RBAC;
|
||||
|
||||
/// <summary>角色:一组权限的集合。</summary>
|
||||
[Table(Name = "sys_rbac_roles")]
|
||||
public class Role : AggregateRoot
|
||||
{
|
||||
[Column(Name = "name")]
|
||||
public string Name { get; private set; } // 如 "财务专员", "系统管理员"
|
||||
|
||||
[Column(Name = "code")]
|
||||
public string Code { get; private set; } // 如:role:xxxx
|
||||
|
||||
[Column(Name = "sort_order")]
|
||||
public int SortOrder { get; private set; }
|
||||
|
||||
[Column(Name = "description")]
|
||||
public string Description { get; private set; }
|
||||
|
||||
[Column(Name = "is_active")]
|
||||
public bool IsActive { get; private set; }
|
||||
|
||||
private readonly List<long> _permissionIds = [];
|
||||
public IReadOnlyCollection<long> PermissionIds => _permissionIds.AsReadOnly();
|
||||
|
||||
public Role() { }
|
||||
|
||||
public Role(long id, string name, string code, int sortOrder, string description)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
Code = code;
|
||||
SortOrder = sortOrder;
|
||||
IsActive = true;
|
||||
Description = description;
|
||||
CreatedAt = DateTime.Now;
|
||||
}
|
||||
|
||||
public void Activate() => IsActive = true;
|
||||
public void Deactivate() => IsActive = false;
|
||||
|
||||
public void AddPermission(long permissionId, Resource_Type_Enum type)
|
||||
{
|
||||
if (!_permissionIds.Contains(permissionId))
|
||||
_permissionIds.Add(permissionId);
|
||||
|
||||
if (type == Resource_Type_Enum.菜单)
|
||||
AddDomainEvent(new RoleMenu_ChangedDomainEvent(Id));
|
||||
else if (type == Resource_Type_Enum.部门)
|
||||
AddDomainEvent(new RoleDepartment_ChangedDomainEvent(Id));
|
||||
}
|
||||
|
||||
public void RemovePermission(long permissionId, Resource_Type_Enum type)
|
||||
{
|
||||
_permissionIds.Remove(permissionId);
|
||||
|
||||
if (type == Resource_Type_Enum.菜单)
|
||||
AddDomainEvent(new RoleMenu_ChangedDomainEvent(Id));
|
||||
else if (type == Resource_Type_Enum.部门)
|
||||
AddDomainEvent(new RoleDepartment_ChangedDomainEvent(Id));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user