diff --git a/BPA.SAAS.Manage.Application/System/Dtos/MenuRouteDtoOutput.cs b/BPA.SAAS.Manage.Application/System/Dtos/MenuRouteDtoOutput.cs new file mode 100644 index 0000000..57c1b80 --- /dev/null +++ b/BPA.SAAS.Manage.Application/System/Dtos/MenuRouteDtoOutput.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BPA.SAAS.Manage.Application.System.Dtos +{ + public class MenuRouteDtoOutput + { + + public string Id { get; set; } + /// + /// 组件 + /// + public string Component { get; set; } + /// + /// 路劲 + /// + public string Path { get; set; } + /// + /// 图标 + /// + public string Icon { get; set; } + /// + /// 名称 + /// + public string Name { get; set; } + /// + /// 路由 + /// + public List Routes { get; set; } + } + public class MenuRouteChildDtoOutput + { + public string Id { get; set; } + /// + /// 组件 + /// + public string Component { get; set; } + /// + /// 路劲 + /// + public string Path { get; set; } + /// + /// 名称 + /// + public string Name { get; set; } + /// + /// 路由 + /// + public List Routes { get; set; } + } +} diff --git a/BPA.SAAS.Manage.Application/System/Interface/IMenuService.cs b/BPA.SAAS.Manage.Application/System/Interface/IMenuService.cs index f0578bb..36106d7 100644 --- a/BPA.SAAS.Manage.Application/System/Interface/IMenuService.cs +++ b/BPA.SAAS.Manage.Application/System/Interface/IMenuService.cs @@ -14,6 +14,7 @@ namespace BPA.SAAS.Manage.Application.System.Interface Task Update(MenuDtoInput input); Task Delete(List input); Task> MenuTree(string getType); + Task> DymicMenuTree(); Task Enable(string Id); Task Disable(string Id); } diff --git a/BPA.SAAS.Manage.Application/System/MenuServices.cs b/BPA.SAAS.Manage.Application/System/MenuServices.cs index cd8548a..71718e4 100644 --- a/BPA.SAAS.Manage.Application/System/MenuServices.cs +++ b/BPA.SAAS.Manage.Application/System/MenuServices.cs @@ -54,13 +54,18 @@ namespace BPA.SAAS.Manage.Application.System /// /// 查询菜单树 /// - /// + /// /// - [HttpGet("/api/menu/menutree")] + [HttpGet("/api/menu/menutrees")] public async Task> MenuTree(string getType) { return await _menuService.MenuTree(getType); } + [HttpGet("/api/menu/menutree")] + public async Task> DymicMenuTree() + { + return await _menuService.DymicMenuTree(); + } [HttpGet("/api/menu/enable")] public async Task Enable(string Id) { diff --git a/BPA.SAAS.Manage.Application/System/Services/MenuService.cs b/BPA.SAAS.Manage.Application/System/Services/MenuService.cs index 4567a8e..f2aa9af 100644 --- a/BPA.SAAS.Manage.Application/System/Services/MenuService.cs +++ b/BPA.SAAS.Manage.Application/System/Services/MenuService.cs @@ -226,6 +226,50 @@ namespace BPA.SAAS.Manage.Application.System.Services } /// + /// 动态菜单(菜单树) + /// + /// + public async Task> DymicMenuTree() + { + var UserId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value; + var IsAdmin = App.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value; + var account = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value; + + if (UserId == null) + return null; + List AllMenus = new List(); + if (IsAdmin == "1" && account == "admin") + AllMenus =await _db.Queryable().Where(t => t.IsDeleted == 0 && t.Status == 0).OrderBy(t => t.Sort).ToListAsync(); + else + AllMenus =await _db.Queryable().LeftJoin((t, x) => t.Id == x.SysMenuId).LeftJoin((t, x, y) => x.SysRoleId == y.SysRoleId) + .Where((t, x, y) => y.SysUserId == UserId && t.Status == 0).Select(t => t).ToListAsync(); + //菜单去重 + AllMenus = AllMenus.Where((x, i) => AllMenus.FindIndex(z => z.Id == x.Id) == i).ToList(); + var data = AllMenus.Where(t => t.Pid == null || t.Pid == "").OrderBy(t => t.Sort).Select(t => new MenuRouteDtoOutput + { + Id = t.Id, + Component = t.Component, + Icon = t.Icon, + Name = t.Name, + Path = t.Router, + Routes = AllMenus.Where(x => x.Pid == t.Id).Select(x => new MenuRouteChildDtoOutput + { + Id = t.Id, + Component = x.Component, + Name = x.Name, + Path = x.Router, + Routes = AllMenus.Where(y => y.Pid == x.Id).Select(y => new MenuRouteChildDtoOutput + { + Id = t.Id, + Component = y.Component, + Name = y.Name, + Path = y.Router + }).ToList() + }).ToList() + }).ToList(); + return data; + } + /// /// 启用 /// /// diff --git a/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user b/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user index 96e7a74..cf47803 100644 --- a/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user +++ b/BPA.SAAS.Manage.Web.Entry/BPA.SAAS.Manage.Web.Entry.csproj.user @@ -4,6 +4,6 @@ ProjectDebugger - Docker + BPA.SAAS.Manage.Web.Entry \ No newline at end of file