Ejemplo n.º 1
0
        /// <summary>
        /// 获取菜单权限   待优化代码
        /// </summary>
        /// <param name="menuId"></param>
        /// <returns></returns>
        public async Task <MessageModel <List <SysMenuPowerGroupVM> > > GetMenuPowerGroups(string menuId)
        {
            if (string.IsNullOrWhiteSpace(menuId))
            {
                return(MessageModel <List <SysMenuPowerGroupVM> > .Fail("未传入菜单ID"));
            }

            //查询菜单是否存在
            var sysMenu = await _sysMenuRepository.QueryById(menuId);

            if (sysMenu != null && sysMenu.Status != 2)
            {
                //查询菜单的权限组
                var sysMenuPowerGroups = await _dal.Query(d => d.SysMenuID == menuId && d.Status == 1);

                //var resultR=from sysMenuPowersG in sysMenuPowerGroups.sys


                var arrayPowerGroups = sysMenuPowerGroups.Select(s => s.SysPowerGroupID).ToArray();

                var sysPowers = await _sysPowerRepository.Query(d => (arrayPowerGroups).Contains(d.SysPowerGroupID) && d.Status == 1);

                var returnMenuPowerGroupsVM = new List <SysMenuPowerGroupVM>();
                foreach (var item in sysMenuPowerGroups)
                {
                    //var sysMenuPowerGroupVM = new SysMenuPowerGroupVM();

                    var sysMenuPowerGroupVM = new SysMenuPowerGroupVM()
                    {
                        ID     = item.ID,
                        Status = item.Status,

                        CreateID   = item.CreateID,
                        CreateTime = item.CreateTime,
                        Creator    = item.Creator,

                        SysMenuID       = item.SysMenuID,
                        SysPowerGroupID = item.SysPowerGroupID
                    };
                    //mapper 有错误,我也不知道为啥
                    //try
                    //{
                    //    var source = new Source<SysMenuPowerGroup> { Value = item };
                    //    var destination = _mapper.Map<Destination<SysMenuPowerGroupVM>>(source);
                    //    sysMenuPowerGroupVM = destination.Value;
                    //}
                    //catch (Exception ex)
                    //{

                    //    throw;
                    //}


                    //sysMenuPowerGroupVM.SysMenu = sysMenu;
                    sysMenuPowerGroupVM.SysPowers = sysPowers.Where(d => d.SysPowerGroupID == item.SysPowerGroupID).ToList();

                    sysMenuPowerGroupVM.SysPowerGroup = await _sysPowerGroupRepository.QueryById(item.SysPowerGroupID);

                    returnMenuPowerGroupsVM.Add(sysMenuPowerGroupVM);
                }

                return(MessageModel <List <SysMenuPowerGroupVM> > .Success(returnMenuPowerGroupsVM));
            }

            return(MessageModel <List <SysMenuPowerGroupVM> > .Fail("菜单已不存在"));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 实现 菜单树
        /// </summary>
        /// <param name="parentId"></param>
        /// <returns></returns>
        public async Task <MessageModel <SysMenuTreeVM> > GetMenuTree(string parentId = "")
        {
            if (string.IsNullOrWhiteSpace(parentId))
            {
                parentId = default(Guid).ToString();
            }

            var sysMenus = await _dal.Query(d => d.Status == 1);//里面是没有根节点的,因为根节点是虚拟的



            var sysMenuTrees = (from child in sysMenus
                                //where child.IsDeleted == false
                                orderby child.OrderNo
                                select new SysMenuTreeVM
            {
                ID = child.ID,
                MenuId = child.MenuId,
                Name = child.Name,
                Url = child.Url,
                PathUrl = child.PathUrl,
                Description = child.Description,
                Icon = child.Icon,
                OrderNo = child.OrderNo,
                IsShow = child.IsShow,
                ParentId = child.ParentId,

                CreateID = child.CreateID,
                CreateTime = child.CreateTime,
                Creator = child.Creator,
                ModifyID = child.ModifyID,
                Modifier = child.Modifier,
                ModifyTime = child.ModifyTime,
                Status = child.Status,



                //PowerGroups = _mapper.Map<Destination<List<SysMenuPowerGroupVM>>>(new Source<SysMenuPowerGroup> { Value = _sysMenuPowerGRepository.Query() }).Value;

                //转换
                //将数据转化为T
                //                           var source = new Source<SysUser> { Value = sysUserInfo };
                //var t = _mapper.Map<Destination<SysUserVM>>(source);

                //data = MessageModel<SysUserVM>.Success(t.Value);
            }).ToList();

            //虚拟一个根节点
            SysMenuTreeVM rootRoot = new SysMenuTreeVM
            {
                ID          = default(Guid).ToString(),
                ParentId    = default(Guid).ToString(),
                Name        = "根节点",
                ParentArray = new List <String> {//不知道这块还给不给这个,还是赋值为空,待验证
                    default(Guid).ToString()
                }
            };

            sysMenuTrees = sysMenuTrees.OrderBy(d => d.OrderNo).ToList();

            //查询出所有菜单权限组
            var allSysMenuPowerGs = await _sysMenuPowerGRepository.Query(mg => mg.Status == 1);

            //查询出所有的权限组
            var allSysPowerGroups = await _sysPowerGroupRepository.Query(g => g.Status == 1);

            //查询每个节点的父节点 数组
            foreach (var item in sysMenuTrees)
            {
                if (!default(Guid).ToString().Equals(item.ID))
                {
                    //
                    List <string> pidArray = new List <string>();

                    //pidArray.Add(item.ID);//不要自己

                    var parent = sysMenuTrees.FirstOrDefault(d => d.ID == item.ParentId);

                    while (parent != null)
                    {
                        pidArray.Add(parent.ID);
                        parent = sysMenuTrees.FirstOrDefault(d => d.ID == parent.ParentId);
                    }

                    //补上根节点
                    pidArray.Add(default(Guid).ToString());
                    pidArray.Reverse();

                    item.ParentArray = pidArray;


                    //给每个节点加上权限组
                    item.PowerGroups = (from child in allSysPowerGroups
                                        join mppg in allSysMenuPowerGs on child.ID equals mppg.SysPowerGroupID
                                        where mppg.SysMenuID == item.ID
                                        orderby child.OrderNo
                                        select new SysPowerGroupVM
                    {
                        ID = child.ID,
                        Name = child.Name,
                        OrderNo = child.OrderNo,

                        CreateID = child.CreateID,
                        CreateTime = child.CreateTime,
                        Creator = child.Creator,
                        ModifyID = child.ModifyID,
                        Modifier = child.Modifier,
                        ModifyTime = child.ModifyTime,
                        Status = child.Status,
                    }).ToList();
                }
            }

            LoopToAppendChildren(sysMenuTrees, rootRoot, parentId);//不是很懂是如何传递回rootRoot的

            var messageModel = MessageModel <SysMenuTreeVM> .Success();

            if (messageModel.success)
            {
                messageModel.data = rootRoot;
                messageModel.msg  = "获取成功";
            }

            return(messageModel);
        }