47 lines
1.2 KiB
C#
47 lines
1.2 KiB
C#
using AmtScanner.Api.Models;
|
|
|
|
namespace AmtScanner.Api.Services;
|
|
|
|
/// <summary>
|
|
/// 菜单服务接口
|
|
/// </summary>
|
|
public interface IMenuService
|
|
{
|
|
/// <summary>
|
|
/// 获取用户菜单(根据角色过滤)
|
|
/// </summary>
|
|
Task<List<MenuDto>> GetUserMenusAsync(int userId);
|
|
|
|
/// <summary>
|
|
/// 获取所有菜单
|
|
/// </summary>
|
|
Task<List<MenuDto>> GetAllMenusAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 菜单 DTO - 符合前端 AppRouteRecord 格式
|
|
/// </summary>
|
|
public class MenuDto
|
|
{
|
|
public int Id { get; set; }
|
|
public string Name { get; set; } = string.Empty;
|
|
public string Path { get; set; } = string.Empty;
|
|
public string? Component { get; set; }
|
|
public MenuMetaDto Meta { get; set; } = new();
|
|
public List<MenuDto> Children { get; set; } = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 菜单元数据 DTO - 符合前端 RouteMeta 格式
|
|
/// </summary>
|
|
public class MenuMetaDto
|
|
{
|
|
public string Title { get; set; } = string.Empty;
|
|
public string? Icon { get; set; }
|
|
public bool IsHide { get; set; }
|
|
public bool KeepAlive { get; set; }
|
|
public string? Link { get; set; }
|
|
public bool IsIframe { get; set; }
|
|
public List<string> Roles { get; set; } = new();
|
|
}
|