first commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
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_menus")]
|
||||
public class Menu : AggregateRoot
|
||||
{
|
||||
[Column(Name = "icon_svg")]
|
||||
public string IconSvg { get; private set; } // 图标
|
||||
|
||||
[Column(Name = "code")]
|
||||
public string Code { get; private set; } // 唯一标识
|
||||
|
||||
[Column(Name = "name")]
|
||||
public string Name { get; private set; } // 显示名称
|
||||
|
||||
[Column(Name = "menu_type")]
|
||||
public MenuType_Enum MenuType { get; private set; } // 菜单类型:分组/页面
|
||||
|
||||
[Column(Name = "assembly_name")]
|
||||
public string? AssemblyName { get; private set; }
|
||||
|
||||
[Column(Name = "type_full_name")]
|
||||
public string? TypeFullName { get; private set; }
|
||||
|
||||
[Column(Name = "parent_id")]
|
||||
public long ParentId { get; private set; } // 支持菜单层级
|
||||
|
||||
[Column(Name = "level")]
|
||||
public int Level { get; private set; } // 层级
|
||||
|
||||
[Column(Name = "is_active")]
|
||||
public bool IsActive { get; private set; }
|
||||
|
||||
[Column(Name = "sort_order")]
|
||||
public int SortOrder { get; private set; }
|
||||
|
||||
[Column(Name = "path")]
|
||||
public string Path { get; private set; } = ""; // Web 路由路径
|
||||
|
||||
[Column(Name = "component")]
|
||||
public string Component { get; private set; } = ""; // 前端组件路径
|
||||
|
||||
[Column(Name = "permission")]
|
||||
public string Permission { get; private set; } = ""; // 权限标识,如 sys:user:list
|
||||
|
||||
public Menu() { }
|
||||
|
||||
public Menu(long id, string name, string iconSvg, MenuType_Enum menuType = MenuType_Enum.默认,
|
||||
string? assemblyName = null, string? typeFullName = null, long parentId = 0, int sortOrder = 0, int parentLevel = 0)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
IconSvg = iconSvg;
|
||||
MenuType = menuType;
|
||||
AssemblyName = assemblyName;
|
||||
TypeFullName = typeFullName;
|
||||
ParentId = parentId;
|
||||
Level = parentId == 0 ? 1 : parentLevel + 1;
|
||||
IsActive = true;
|
||||
CreatedAt = DateTime.Now;
|
||||
SortOrder = sortOrder;
|
||||
AddDomainEvent(new Menu_ChangedDomainEvent(Id));
|
||||
}
|
||||
|
||||
public void GenerateNewCode() => Code = $"menu.{DateTime.Now.Ticks}";
|
||||
|
||||
/// <summary>设置 Web 路由信息(路径/组件/权限码)</summary>
|
||||
public void SetWebInfo(string path, string component, string permission)
|
||||
{
|
||||
Path = path ?? "";
|
||||
Component = component ?? "";
|
||||
Permission = permission ?? "";
|
||||
}
|
||||
|
||||
public IReadOnlySet<Permission_Type_Enum> SupportedPermissionType =>
|
||||
new HashSet<Permission_Type_Enum> { Permission_Type_Enum.Visble };
|
||||
|
||||
public void SoftDelete() => AddDomainEvent(new Menu_ChangedDomainEvent(Id));
|
||||
|
||||
public void Activate()
|
||||
{
|
||||
IsActive = true;
|
||||
AddDomainEvent(new Menu_ChangedDomainEvent(Id));
|
||||
}
|
||||
|
||||
public void Deactivate()
|
||||
{
|
||||
IsActive = false;
|
||||
AddDomainEvent(new Menu_ChangedDomainEvent(Id));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user