Commit 588bd021 by wyc

菜单管理修改一些方法

parent 10dd4724
......@@ -100,13 +100,17 @@ public ApiResponse DeleteSystemMenu(int menuID)
{
try
{
var sysMenus = _menuRepository.GetEntities(w => w.ID == menuID || w.ParentID == menuID);
if (sysMenus == null) return new ApiResponse(ResponseType.NotFound, "未查到数据");
var sysMenusId = sysMenus.Select(w => w.ID).ToList();
var sysRoleMenus = _rolemenuRepository.GetEntities(w => sysMenusId.Contains(w.MenuID));
_menuRepository.RemoveRange(sysMenus.ToArray());
if (sysRoleMenus.Any())
var allMenus = _menuRepository.GetEntities();
var currMenu = allMenus.FirstOrDefault(w => w.ID == menuID);
if (currMenu == null) return new ApiResponse(ResponseType.NotFound, "未找到相关信息,请刷新后重试");
var sysMenuIds = GetRelevanceMenuId(currMenu, allMenus, orientation: false);
sysMenuIds.Add(menuID);
var sysRoleMenus = _rolemenuRepository.GetEntities(w => sysMenuIds.Contains(w.MenuID));
if (sysRoleMenus != null && sysRoleMenus.Any())
_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);
}
catch (Exception ex)
......@@ -124,25 +128,19 @@ public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest)
{
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);
if (sysRoleMenus != null && sysRoleMenus.Any())
_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;
while (roleRequest.TogetherAdd)
{
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)
var temps = new List<sys_role_menu>();
foreach (var menuId in menuIds)
{
foreach (var roleID in roleRequest.RoleID)
{
......@@ -158,5 +156,33 @@ public ApiResponse SetRoleSystemMenu(RoleRequest roleRequest)
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