Пример #1
0
        public override Task <MenusRoleReponse> GetMenusByRole(MenusRoleRequest request, ServerCallContext context)
        {
            var result = new MenusRoleReponse();
            var tree   = GetRoleOfMenus(request.RoleId);

            result.Datas.Add(new MenusByRole {
                Id = 0, Icon = "home", Title = "首页", Path = "/index"
            });


            tree.ForEach(item =>
            {
                var model = new MenusByRole {
                    Id = item.Id, Title = item.Title, Icon = item.Icon ?? "", Path = ""
                };

                if (item.Children.Count > 0)
                {
                    item.Children.ForEach(child =>
                    {
                        model.Children.Add(new MenusByRole
                        {
                            Id    = child.Id,
                            Icon  = child.Icon ?? "",
                            Path  = child.Path + "?id=" + child.Id,
                            Title = child.Title
                        });
                    });
                }

                result.Datas.Add(model);
            });

            return(Task.FromResult(result));
        }
Пример #2
0
        public override Task <RoleMenuReponse> GetMenusSetRole(MenusRoleRequest request, ServerCallContext context)
        {
            var result = new RoleMenuReponse();

            var datas     = _menu.GetAll().OrderBy(item => item.Id).AsNoTracking().ToList();
            var listMenus = new List <RoleMenuDto>();

            datas.ForEach(item =>
            {
                listMenus.Add(new RoleMenuDto
                {
                    ParentId = item.ParentId,
                    Id       = item.Id,
                    Title    = item.Name,
                    Icon     = item.Icon,
                    Path     = item.Url,
                    Operates = item.Operates,
                    Children = new List <RoleMenuDto>()
                });
            });

            var tree = listMenus.Where(item => item.ParentId == 99999).ToList();

            var operates = _operate
                           .GetAll()
                           .AsNoTracking()
                           .Select(item => new
            {
                item.Id,
                item.Name,
                item.Unique
            }).ToList();

            tree.ForEach(item => { BuildMeunsRecursiveTree(listMenus, item); });
            tree.ForEach(item =>
            {
                var model = new MenuModel {
                    Id = $"{item.Id}_0", Lable = item.Title
                };

                if (item.Children.Count > 0)
                {
                    item.Children.ForEach(child =>
                    {
                        var operateModel = new MenuModel {
                            Id = $"{child.Id}_0", Lable = child.Title
                        };
                        model.Children.Add(operateModel);
                        operates.ForEach(op =>
                        {
                            if (JsonConvert.DeserializeObject <List <int> >(child.Operates).Contains(op.Id))
                            {
                                operateModel.Children.Add(new MenuModel {
                                    Id = $"{child.Id}_{op.Id}", Lable = op.Name
                                });
                            }
                        });
                    });
                }
                result.List.Add(model);
            });
            var roleMenus = GetRoleOfMenus(request.RoleId);

            roleMenus.ForEach(item =>
            {
                if (item.Children.Count > 0)
                {
                    item.Children.ForEach(child =>
                    {
                        JsonConvert.DeserializeObject <List <int> >(child.Operates).ForEach(operateId =>
                        {
                            operates.ForEach(op =>
                            {
                                if (op.Id != operateId)
                                {
                                    return;
                                }
                                result.MenuIds.Add($"{child.Id}_{op.Id}");
                            });
                        });
                    });
                }
            });

            return(Task.FromResult(result));
        }