HomeController.cs 4.24 KB
using HHECS.Application.Service;
using HHECS.Model.ClassComparer;
using HHECS.Model.Entities;
using HHECS.Web.Models;
using HHECS.WebCommon.Entities;
using HHECS.WebCommon.Http;
using HHECS.WebCommon.Json;
using HHECS.WebCommon.SystemHelp.Log;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace HHECS.Web.Controllers
{
    //[Authorize]
    public class HomeController : BaseController
    {

        private readonly PermissionService _permissionService;

        public HomeController(PermissionService permissionService)
        {
            _permissionService = permissionService;
        }

        public IActionResult Index()
        {
            ResponseEnumJosn();
            return View();
        }

        public ActionResult Welcome()
        {
            return View();
        }

        public IActionResult Privacy()
        {
            return View();
        }



        [HttpGet]
        public string GetMenuList()
        {
            return ExceptionsHelp.Instance.Execute(() =>
            {
                var response = new Response();
                var result = _permissionService.GetAllPermission("WEB");
                var permissions = User.Roles.SelectMany(t => t.Permissions).Distinct(new PermissionComparer()).ToList();
                WebMenu webMenu = new WebMenu();
                webMenu.homeInfo = new HomeInfo() { title = "首页", href = "/Home/Welcome" };
                webMenu.logoInfo = new LogoInfo() { title = "华恒机器人系统有限公司", image = "../images/logo.png", href = "" };
                webMenu.menuInfo = new List<MenuInfoItem>();
                List<Permission> tempPermissions = new List<Permission>();
                tempPermissions = result.Data.OrderBy(t => t.OrderNum).ToList();
                _permissionService.Combine(tempPermissions.FindAll(t => t.ParentId == null), tempPermissions);
                List<Permission> treePermissionDtos = tempPermissions.FindAll(t => t.ParentId == null).ToList();
                foreach (var module in treePermissionDtos)
                {
                    MenuInfoItem menuInfoItem = new MenuInfoItem()
                    {
                        title = module.PermissionName,
                        icon = "fa fa-address-book",
                        href = "",
                        target = "_self",
                        child = new List<ChildItem>()
                    };
                    foreach (var dir in module.Childrens)
                    {
                        ChildItem childItem = new ChildItem()
                        {
                            title = dir.PermissionName,
                            icon = dir.Icon,//"fa fa-address-book",
                            href = "",
                            target = "_self",
                            child = new List<MenuItem>()
                        };
                        foreach (var menu in dir.Childrens)
                        {
                            MenuItem menuItem = new MenuItem()
                            {
                                title = menu.PermissionName,
                                icon = menu.Icon,//"fa fa-user",
                                href = menu.WebUrl,
                                target = "_self",
                            };
                            if (permissions.FindAll(t => t.Id == menu.Id).Count > 0 && menu.Visible)
                            {
                                childItem.child.Add(menuItem);
                            }
                        }
                        if (permissions.FindAll(t => t.Id == dir.Id).Count > 0 && dir.Visible)
                        {
                            menuInfoItem.child.Add(childItem);
                        }
                    }
                    webMenu.menuInfo.Add(menuInfoItem);
                }
                response.Result = webMenu.ToJson();
                return response.ToJson();
            });
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}