feat: add admin menu management crud
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Identity.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 管理端菜单定义。
|
||||
/// </summary>
|
||||
public sealed class MenuDefinition : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 父级菜单 ID,根节点为 0。
|
||||
/// </summary>
|
||||
public long ParentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 菜单名称(前端路由 name)。
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 路由路径。
|
||||
/// </summary>
|
||||
public string Path { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 组件路径(不含 .vue)。
|
||||
/// </summary>
|
||||
public string Component { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 标题。
|
||||
/// </summary>
|
||||
public string Title { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 图标标识。
|
||||
/// </summary>
|
||||
public string? Icon { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否 iframe。
|
||||
/// </summary>
|
||||
public bool IsIframe { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 外链或 iframe 地址。
|
||||
/// </summary>
|
||||
public string? Link { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否缓存。
|
||||
/// </summary>
|
||||
public bool KeepAlive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序。
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 访问该菜单所需的权限集合(逗号分隔)。
|
||||
/// </summary>
|
||||
public string RequiredPermissions { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Meta.permissions(逗号分隔)。
|
||||
/// </summary>
|
||||
public string MetaPermissions { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Meta.roles(逗号分隔)。
|
||||
/// </summary>
|
||||
public string MetaRoles { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 按钮权限列表 JSON(存储 MenuAuthItemDto 数组)。
|
||||
/// </summary>
|
||||
public string? AuthListJson { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using TakeoutSaaS.Domain.Identity.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Identity.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// 菜单仓储。
|
||||
/// </summary>
|
||||
public interface IMenuRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// 按租户获取菜单列表。
|
||||
/// </summary>
|
||||
Task<IReadOnlyList<MenuDefinition>> GetByTenantAsync(long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 根据 ID 查询菜单。
|
||||
/// </summary>
|
||||
Task<MenuDefinition?> FindByIdAsync(long id, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 新增菜单。
|
||||
/// </summary>
|
||||
Task AddAsync(MenuDefinition menu, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 更新菜单。
|
||||
/// </summary>
|
||||
Task UpdateAsync(MenuDefinition menu, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 删除菜单。
|
||||
/// </summary>
|
||||
Task DeleteAsync(long id, long tenantId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 持久化变更。
|
||||
/// </summary>
|
||||
Task SaveChangesAsync(CancellationToken cancellationToken = default);
|
||||
}
|
||||
Reference in New Issue
Block a user