导读部分
教程部分
此处,主要处理当前登录用户的子菜单业务逻辑处理 即: 登录后,点击顶部的主菜单,获取左侧子菜单内容的业务逻辑处理
逻辑代码如下: 1. 在角色菜单表中,获取当前角色下的所有菜单信息 2. 判断该角色菜单列表,如果为空,直接返回一个实例化的列表信息 3. 获取所有的子菜单列表 4. 在菜单表中,获取菜单列表,根据主菜单id,与当前的所有子菜单id进行查询
[C#] 纯文本查看 复制代码 /// <summary>
/// 获取子菜单列表,根据角色id,与主菜单id
/// </summary>
/// <param name="roleId"></param>
/// <param name="parentId"></param>
/// <returns></returns>
public List<Sys_MenuInfo> GetSonMenuByRoleId(int roleId, int parentId)
{
// 获取角色下的所有菜单信息
var roleMenuList = new Sys_MenuInRoleBLL().GetList("MenuID", string.Format("RoleID = {0}", roleId), "");
if (roleMenuList != null && roleMenuList.Any())
{
// 获取所有子菜单列表
var sonRoleMenuList = roleMenuList.Where(r => r.levelFlag == 0);
if (sonRoleMenuList != null && sonRoleMenuList.Any())
{
// 获取所有子菜单ids
var menuIds = sonRoleMenuList.Select(m => m.MenuID);
// 获取所有主菜单下存在的角色菜单信息
var menuList = GetList("", string.Format("MenuID in ({0}) AND ParentID = {1}", string.Join(",", menuIds), parentId), "");
// 返回信息
if (menuList == null) { return new List<Sys_MenuInfo>(); }
return menuList;
}
}
return new List<Sys_MenuInfo>();
}
以上代码,几位上面逻辑结构的代码处理,此处涉及了两个表内容 1. Sys_Menu 菜单表 2. Sys_MenuInRole 角色菜单表
|