From 6858816c5106173c03804402ef8e50cb213309d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=BD=87=E9=98=B3?= Date: Mon, 13 Nov 2023 17:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E5=89=8D=E4=BA=BA=E5=91=98=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=96=B0=E5=A2=9E=E8=A7=92=E8=89=B2=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=B7=B1=E6=9C=89?= =?UTF-8?q?=E7=9A=84=E6=9D=83=E9=99=90=EF=BC=8C=E8=B6=85=E7=AE=A1=E9=99=A4?= =?UTF-8?q?=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SystemControllerController.cs | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/24Hour/Controllers/system/SystemControllerController.cs b/24Hour/Controllers/system/SystemControllerController.cs index ef5e406..94f958b 100644 --- a/24Hour/Controllers/system/SystemControllerController.cs +++ b/24Hour/Controllers/system/SystemControllerController.cs @@ -943,7 +943,7 @@ namespace _24Hour.Controllers.system _db.BeginTran(); //删除角色下的菜单 await _db.Deleteable(list).ExecuteCommandAsync(); - var RoleMenulist = RoleMenudata.RoleMenuIds.Split(","); + var RoleMenulist = RoleMenudata.RoleMenuIds.Split(",").ToList(); var menulist = new List(); if (RoleMenulist.Length > 0) { @@ -1465,15 +1465,64 @@ namespace _24Hour.Controllers.system [Route("QueryMenuTree")] public async Task QueryMenuTree(App_Sys_MenuInput Menudata) { + var roleids = new List(); + if (_userdata.phone != "admin") + { + var userroleinfo = await _db.Queryable().FirstAsync(x => x.roleuserId == _userdata.Id); + roleids = await _db.Queryable() + .WhereIF(!userroleinfo.roleId.IsNull(), q => q.roleId == userroleinfo.roleId) + .Where(q => q.IsDelete == 0).Select(x => x.menuId).ToListAsync(); + } var treelist = await _db.Queryable() .WhereIF(!Menudata.name.IsNull(), q => q.name.Contains(Menudata.name)) .WhereIF(!Menudata.title.IsNull(), q => q.title.Contains(Menudata.title)) - .Where(q => q.IsDelete == 0).OrderBy(q => q.sortnum, OrderByType.Asc).ToTreeAsync(it => it.children, it => it.pid, null); + .Where(q => q.IsDelete == 0) + .OrderBy(q => q.sortnum, OrderByType.Asc) + .ToTreeAsync(it => it.children, it => it.pid, null); + if (_userdata.phone != "admin") + { + foreach (var item in treelist) + { + if (roleids.Contains(item.Id)) + { + if (item.children != null) + { + item.children = item.children.Where(x => roleids.Contains(x.Id)).ToList(); + } + } + else + { + if (item.children == null) + { + item.IsDelete = -1; + } + else + { + if (item.children.Any(x => roleids.Contains(x.Id))) + { + item.children = item.children.Where(x => roleids.Contains(x.Id)).ToList(); + } + else + { + item.IsDelete = -1; + } + } + } + } + treelist = treelist.Where(x => x.IsDelete != -1).ToList(); + + result.IsSucceed = true; + result.result = treelist; + return result; + } + else + { result.IsSucceed = true; result.result = treelist; return result; } + } /// /// 菜单分页查询 ///