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 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 SqlSugar;
|
||||||
using Volo.Abp.Application.Dtos;
|
using Volo.Abp.Application.Dtos;
|
||||||
using Yi.Framework.Ddd.Application;
|
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.Application.Contracts.IServices;
|
||||||
using Yi.Framework.Rbac.Domain.Entities;
|
using Yi.Framework.Rbac.Domain.Entities;
|
||||||
using Yi.Framework.Rbac.Domain.Shared.Consts;
|
using Yi.Framework.Rbac.Domain.Shared.Consts;
|
||||||
|
using Yi.Framework.Rbac.Domain.Shared.Dtos;
|
||||||
using Yi.Framework.SqlSugarCore.Abstractions;
|
using Yi.Framework.SqlSugarCore.Abstractions;
|
||||||
|
|
||||||
namespace Yi.Framework.Rbac.Application.Services.System
|
namespace Yi.Framework.Rbac.Application.Services.System
|
||||||
@@ -43,5 +45,31 @@ namespace Yi.Framework.Rbac.Application.Services.System
|
|||||||
|
|
||||||
return await MapToGetListOutputDtosAsync(entities);
|
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;
|
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