Commit 588bd021 by wyc

菜单管理修改一些方法

parent 10dd4724
...@@ -100,13 +100,17 @@ public ApiResponse DeleteSystemMenu(int menuID) ...@@ -100,13 +100,17 @@ public ApiResponse DeleteSystemMenu(int menuID)
{ {
try try
{ {
var sysMenus = _menuRepository.GetEntities(w => w.ID == menuID || w.ParentID == menuID); var allMenus = _menuRepository.GetEntities();
if (sysMenus == null) return new ApiResponse(ResponseType.NotFound, "未查到数据"); var currMenu = allMenus.FirstOrDefault(w => w.ID == menuID);
var sysMenusId = sysMenus.Select(w => w.ID).ToList(); if (currMenu == null) return new ApiResponse(ResponseType.NotFound, "未找到相关信息,请刷新后重试");
var sysRoleMenus = _rolemenuRepository.GetEntities(w => sysMenusId.Contains(w.MenuID)); var sysMenuIds = GetRelevanceMenuId(currMenu, allMenus, orientation: false);
_menuRepository.RemoveRange(sysMenus.ToArray()); sysMenuIds.Add(menuID);
if (sysRoleMenus.Any()) var sysRoleMenus = _rolemenuRepository.GetEntities(w => sysMenuIds.Contains(w.MenuID));
if (sysRoleMenus != null && sysRoleMenus.Any())
_rolemenuRepository.RemoveRange(sysRoleMenus.ToArray()); _rolemenuRepository.RemoveRange(sysRoleMenus.ToArray());
var sysMenus = _menuRepository.GetEntities(w => sysMenuIds.Contains(w.ID));
if (sysMenus != null && sysMenus.Any())
_menuRepository.RemoveRange(sysMenus.ToArray());
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
catch (Exception ex) catch (Exception ex)
...@@ -124,25 +128,19 @@ public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest) ...@@ -124,25 +128,19 @@ public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest)
{ {
try try
{ {
var allMenus = _menuRepository.GetEntities();
var currMenu = allMenus.FirstOrDefault(w => w.ID == roleRequest.MenuID);
if (currMenu == null) return new ApiResponse(ResponseType.NotFound, "未找到相关信息,请刷新后重试");
var menuIds = GetRelevanceMenuId(currMenu, allMenus, orientation: true);
menuIds.Add(roleRequest.MenuID);
var sysRoleMenus = _rolemenuRepository.GetEntities(w => w.MenuID == roleRequest.MenuID); var sysRoleMenus = _rolemenuRepository.GetEntities(w => w.MenuID == roleRequest.MenuID);
if (sysRoleMenus != null && sysRoleMenus.Any()) if (sysRoleMenus != null && sysRoleMenus.Any())
_rolemenuRepository.RemoveRange(sysRoleMenus.ToArray()); _rolemenuRepository.RemoveRange(sysRoleMenus.ToArray());
var sysMenu = _menuRepository.GetEntity(w => w.ID == roleRequest.MenuID);
var sysMenus = _menuRepository.GetEntities();
var sysMenuIds = new List<int>();
sysMenuIds.Add(sysMenu.ID);
var temps = new List<sys_role_menu>();
var parentId = sysMenu.ParentID; var temps = new List<sys_role_menu>();
while (roleRequest.TogetherAdd) foreach (var menuId in menuIds)
{
var tempSysMenu = sysMenus.FirstOrDefault(w => w.ID == parentId);
if (tempSysMenu.ParentID == 0) break;
sysMenuIds.Add(tempSysMenu.ID);
parentId = tempSysMenu.ParentID;
}
foreach (var menuId in sysMenuIds)
{ {
foreach (var roleID in roleRequest.RoleID) foreach (var roleID in roleRequest.RoleID)
{ {
...@@ -158,5 +156,33 @@ public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest) ...@@ -158,5 +156,33 @@ public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest)
return new ApiResponse(ResponseType.Fail, "添加失败"); return new ApiResponse(ResponseType.Fail, "添加失败");
} }
} }
/// <summary>
/// 递归查找指定菜单的所有上层菜单或下层菜单
/// </summary>
/// <param name="menuIds"></param>
/// <param name="currMenu"></param>
/// <param name="allMenus"></param>
/// <param name="orientation"></param>
private List<int> GetRelevanceMenuId(sys_menu currMenu, List<sys_menu> allMenus, bool orientation)
{
// orientation = true 向上找 false 乡下找
Func<int, sys_menu> getRelevanceMenu = orientation
? (menuIdOrParentId) => allMenus.FirstOrDefault(w => w.ID == menuIdOrParentId)
: (menuIdOrParentId) => allMenus.FirstOrDefault(w => w.ParentID == menuIdOrParentId);
if (currMenu.ParentID <= 0) return new List<int>();
var menuIdOrParentId = orientation ? currMenu.ParentID : currMenu.ID;
var tempSysMenu = getRelevanceMenu(menuIdOrParentId);
if (tempSysMenu == null) return new List<int>();
List<int> menuIds = new List<int>() { tempSysMenu.ID };
var relevanceMenuIds = GetRelevanceMenuId(tempSysMenu, allMenus, orientation);
if (relevanceMenuIds?.Any() == true) { menuIds.AddRange(relevanceMenuIds); }
return menuIds;
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment