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; } + } /// /// 菜单分页查询 ///