feat(menu): 添加菜单树构建功能和相关接口
This commit is contained in:
@@ -15,8 +15,8 @@ namespace Yi.Framework.Rbac.Application.Contracts.Dtos.Role
|
||||
|
||||
public int OrderNum { get; set; }
|
||||
|
||||
public List<Guid> DeptIds { get; set; }
|
||||
public List<Guid>? DeptIds { get; set; }
|
||||
|
||||
public List<Guid> MenuIds { get; set; }
|
||||
public List<Guid>? MenuIds { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SqlSugar;
|
||||
using Volo.Abp.Application.Dtos;
|
||||
using Yi.Framework.Ddd.Application;
|
||||
@@ -5,6 +6,7 @@ using Yi.Framework.Rbac.Application.Contracts.Dtos.Menu;
|
||||
using Yi.Framework.Rbac.Application.Contracts.IServices;
|
||||
using Yi.Framework.Rbac.Domain.Entities;
|
||||
using Yi.Framework.Rbac.Domain.Shared.Consts;
|
||||
using Yi.Framework.Rbac.Domain.Shared.Dtos;
|
||||
using Yi.Framework.SqlSugarCore.Abstractions;
|
||||
|
||||
namespace Yi.Framework.Rbac.Application.Services.System
|
||||
@@ -43,5 +45,31 @@ namespace Yi.Framework.Rbac.Application.Services.System
|
||||
|
||||
return await MapToGetListOutputDtosAsync(entities);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有菜单
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[Route("menu/list")]
|
||||
public async Task<List<MenuGetListOutputDto>> GetAllListAsync(MenuGetListInputVo input)
|
||||
{
|
||||
var entities = await _repository._DbQueryable.WhereIF(!string.IsNullOrEmpty(input.MenuName), x => x.MenuName.Contains(input.MenuName!))
|
||||
.WhereIF(input.State is not null, x => x.State == input.State)
|
||||
.Where(x=>x.MenuSource==input.MenuSource)
|
||||
.OrderByDescending(x => x.OrderNum)
|
||||
.ToListAsync();
|
||||
return await MapToGetListOutputDtosAsync(entities);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取菜单树
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<MenuTreeDto>> GetTreeAsync()
|
||||
{
|
||||
var menuList = await _repository._DbQueryable.ToListAsync();
|
||||
return menuList.TreeDtoBuild();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using Yi.Framework.Core.Helper;
|
||||
using Yi.Framework.Rbac.Domain.Shared.Enums;
|
||||
|
||||
namespace Yi.Framework.Rbac.Domain.Shared.Dtos;
|
||||
|
||||
public class MenuTreeDto: TreeHelper.ITreeModel<MenuTreeDto>
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid ParentId { get; set; }
|
||||
public int OrderNum { get; set; }
|
||||
public string MenuName { get; set; } = string.Empty;
|
||||
public MenuTypeEnum MenuType { get; set; } = MenuTypeEnum.Menu;
|
||||
public string? MenuIcon { get; set; }
|
||||
|
||||
public List<MenuTreeDto>? Children { get; set; }
|
||||
}
|
||||
@@ -285,5 +285,30 @@ namespace Yi.Framework.Rbac.Domain.Entities
|
||||
|
||||
return rootRouters;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 构建菜单树表
|
||||
/// </summary>
|
||||
/// <param name="menus"></param>
|
||||
/// <returns></returns>
|
||||
public static List<MenuTreeDto> TreeDtoBuild(this List<MenuAggregateRoot> menus)
|
||||
{
|
||||
List<MenuTreeDto> treeDtos = new();
|
||||
foreach (var m in menus)
|
||||
{
|
||||
var treeDto = new MenuTreeDto
|
||||
{
|
||||
Id = m.Id,
|
||||
ParentId = m.ParentId,
|
||||
OrderNum = m.OrderNum,
|
||||
MenuName = m.MenuName,
|
||||
MenuType = m.MenuType,
|
||||
MenuIcon = m.MenuIcon
|
||||
};
|
||||
treeDtos.Add(treeDto);
|
||||
}
|
||||
|
||||
return TreeHelper.SetTree(treeDtos);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user