Esempio n. 1
0
        public async Task <RoleAssigMenuViewModel> GetRoleAssigMenuViewModels(Guid RoleId)
        {
            #region 获取所有的菜单和按钮
            var list          = this._menuRepositoty.GetAll(x => x.IsDrop == false).ToList(); //获取所有的菜单列表
            var RoleAssigMenu = MyMappers.ObjectMapper.Map <List <SysMenu>, List <RoleAssigMenuViewModel> >(list);
            var buttonlist    = _buttonRepositoty.GetAll(x => x.IsDrop == false);             //获取所有的按钮列表
            //var RoleAssigButton = MyMappers.ObjectMapper.Map<List<SysButton>, List<RoleAssigButtonViewModel>>(buttonlist);
            RoleAssigMenuViewModel roleAssigMenuView = new RoleAssigMenuViewModel()
            {
                Id       = Guid.Empty,
                expand   = true,
                title    = "根节点",
                disabled = false,
                @checked = false,
            };
            var SysbuttonList = await _buttonRepositoty.GetAllListAsync(x => x.IsDrop == false);//获取所有的菜单按钮列表

            #endregion


            #region 获取该角色下的所有权限
            var roleRight = await _roleRightAssigRepository.GetAllListAsync(x => x.RoleId == RoleId);

            #endregion

            //调用递归事件
            CreateRoleAssigTree(RoleAssigMenu, roleAssigMenuView, SysbuttonList, roleRight);

            //dynamic var =  LinqTosql();

            return(roleAssigMenuView);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="AllroleAssig">所有菜单</param>
        /// <param name="roleAssigMenuView">根节点</param>
        /// <param name="sysMenuButtonList">菜单按钮列表数据</param>
        /// <param name="roleAssigButtonViews">按钮列表</param>
        /// /// <param name="sysRoleRights">已拥有的权限对象</param>
        public void CreateRoleAssigTree(List <RoleAssigMenuViewModel> AllroleAssig,
                                        RoleAssigMenuViewModel roleAssigMenuView,
                                        List <SysButton> sysButtonList,
                                        List <SysRoleRight> sysRoleRights
                                        )
        {
            var child = AllroleAssig.FindAll(m => m.ParentId == roleAssigMenuView.Id);

            if (child.Any())//判断是否存在子级
            {
                roleAssigMenuView.children.AddRange(child);
            }
            foreach (var item in child)
            {
                var buttonlist = sysButtonList.Where(x => x.MenuId == item.Id).Select(x => x.Id).ToList(); //获取到此菜单下的所有按钮Id
                #region                                                                                    //根据菜单ID判断角色权限内是否存在该菜单的权限(如果存在证明已有改权限)
                var model = sysRoleRights.Where(x => x.MenuId == item.Id).FirstOrDefault();
                if (model != null)
                {
                    item.@checked = true;
                }
                if (buttonlist.Any())
                {
                    var button  = sysButtonList.Where(x => x.MenuId == item.Id).ToList();//拿到该菜单下面的所有按钮
                    var nButton = new List <RoleAssigButtonViewModel>();
                    //判断是否存在角色权限表中
                    if (model != null)
                    {
                        foreach (var btnitem in button)
                        {
                            var buttons = model.ButtonIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.ToGuid()).ToList();
                            var btn     = buttons.Where(x => x == btnitem.Id).FirstOrDefault();
                            if (btn != Guid.Empty)
                            {
                                nButton.Add(new RoleAssigButtonViewModel {
                                    Id = btnitem.Id, @checked = true, lable = btnitem.Name
                                });
                            }
                            else
                            {
                                nButton.Add(new RoleAssigButtonViewModel {
                                    Id = btnitem.Id, @checked = false, lable = btnitem.Name
                                });
                            }
                        }
                    }
                    else
                    {
                        //如果不存在将所有的按钮设置为未选择状态
                        button.ForEach(x =>
                        {
                            nButton.Add(new RoleAssigButtonViewModel
                            {
                                Id       = x.Id,
                                @checked = false,
                                lable    = x.Name
                            });
                        });
                    }
                    item.ButtonsList.AddRange(nButton);
                }
                #endregion

                CreateRoleAssigTree(AllroleAssig, item, sysButtonList, sysRoleRights);
            }
        }