苏飞论坛

标题: 【通用权限管理系统】当前用户的子菜单业务逻辑 [打印本页]

作者: 范范    时间: 2017-12-18 21:23
标题: 【通用权限管理系统】当前用户的子菜单业务逻辑
【通用权限管理系统】当前用户的子菜单业务逻辑


导读部分



购买http://www.sufeinet.com/thread-19360-1-1.html
讨论区http://www.sufeinet.com/forum-181-1.html
教程目录http://www.sufeinet.com/thread-19363-1-1.html



教程部分



此处,主要处理当前登录用户的子菜单业务逻辑处理
即: 登录后,点击顶部的主菜单,获取左侧子菜单内容的业务逻辑处理

逻辑代码如下:
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   角色菜单表




作者: 范范    时间: 2017-12-18 21:26
此业务逻辑,是权限管理中的一个重点,不同用户,获取不同菜单的主要业务逻辑部分
作者: 范范    时间: 2017-12-18 21:26
加油  
作者: 站长苏飞    时间: 2017-12-19 08:24
强烈支持楼主ing……




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4