Merge commit '2563624936e0ab7ad910e556bf9dd77efbd62786' into net6.0

* commit '2563624936e0ab7ad910e556bf9dd77efbd62786':
  fix一个用户拥有多个角色菜单重复问题
This commit is contained in:
不做码农 2022-05-30 09:28:26 +08:00
commit c759d1bccb

View File

@ -30,7 +30,7 @@ namespace ZR.Repository.System
} }
/// <summary> /// <summary>
/// 根据用户查询系统菜单列表(菜单管理) /// 根据用户查询系统菜单列表
/// </summary> /// </summary>
/// <param name="menu"></param> /// <param name="menu"></param>
/// <param name="roles">用户角色集合</param> /// <param name="roles">用户角色集合</param>
@ -38,15 +38,16 @@ namespace ZR.Repository.System
public List<SysMenu> SelectTreeMenuListByRoles(MenuQueryDto menu, List<long> roles) public List<SysMenu> SelectTreeMenuListByRoles(MenuQueryDto menu, List<long> roles)
{ {
var roleMenus = Context.Queryable<SysRoleMenu>() var roleMenus = Context.Queryable<SysRoleMenu>()
.Where(r => roles.Contains(r.Role_id)); .Where(r => roles.Contains(r.Role_id))
.Select(f => f.Menu_id).Distinct().ToList();
return Context.Queryable<SysMenu>() return Context.Queryable<SysMenu>()
.InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id) .Where(c => roleMenus.Contains(c.MenuId))
.WhereIF(!string.IsNullOrEmpty(menu.MenuName), (c, j) => c.MenuName.Contains(menu.MenuName)) .WhereIF(!string.IsNullOrEmpty(menu.MenuName), (c) => c.MenuName.Contains(menu.MenuName))
.WhereIF(!string.IsNullOrEmpty(menu.Visible), (c, j) => c.visible == menu.Visible) .WhereIF(!string.IsNullOrEmpty(menu.Visible), (c) => c.visible == menu.Visible)
.WhereIF(!string.IsNullOrEmpty(menu.Status), (c, j) => c.status == menu.Status) .WhereIF(!string.IsNullOrEmpty(menu.Status), (c) => c.status == menu.Status)
.WhereIF(!string.IsNullOrEmpty(menu.MenuTypeIds), c => menu.MenuTypeIdArr.Contains(c.menuType)) .WhereIF(!string.IsNullOrEmpty(menu.MenuTypeIds), c => menu.MenuTypeIdArr.Contains(c.menuType))
.OrderBy((c, j) => new { c.parentId, c.orderNum }) .OrderBy((c) => new { c.parentId, c.orderNum })
.Select(c => c) .Select(c => c)
.ToTree(it => it.children, it => it.parentId, 0); .ToTree(it => it.children, it => it.parentId, 0);
} }
@ -87,27 +88,6 @@ namespace ZR.Repository.System
.ToList(); .ToList();
} }
#region
///// <summary>
///// 根据用户角色获取左侧菜单树
///// </summary>
///// <param name="roleIds"></param>
///// <returns></returns>
//public List<SysMenu> SelectMenuTreeByRoleIds(List<long> roleIds)
//{
// var menuTypes = new string[] { "M", "C" };
// return Context.Queryable<SysMenu>()
// .Where((menu) =>
// menuTypes.Contains(menu.menuType)
// && menu.status == "0"
// && SqlFunc.Subqueryable<SysRoleMenu>().Where(s => roleIds.Contains(s.Role_id) && s.Menu_id == menu.MenuId).Any())
// .OrderBy((menu) => new { menu.parentId, menu.orderNum })
// .Select((menu) => menu).ToList();
//}
#endregion
/// <summary> /// <summary>
/// 获取菜单详情 /// 获取菜单详情
/// </summary> /// </summary>