HomeController.cs 4.78 KB
using HHECS.DAQWebClient.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;

namespace HHECS.DAQWebClient.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

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

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

        [HttpGet]
        public IActionResult SystemMenu()
        {
            var systemMenuEntities = new List<SystemMenuEntity>();
            //using (SystemMenuDbContext dbContext = new SystemMenuDbContext())
            //{
            //    systemMenuEntities = dbContext.SystemMenus.Where(s => s.id > 0).ToList();
            //}

            SystemMenu rootNode = new SystemMenu()
            {
                Id = 0,
                Icon = "",
                Href = "",
                Title = "根目录",
            };

            GetTreeNodeListByNoLockedDTOArray(systemMenuEntities, rootNode);

            MenusInfoResultDTO menusInfoResultDTO = new MenusInfoResultDTO
            {
                MenuInfo = rootNode.Child,
                LogoInfo = new LogoInfo(),
                HomeInfo = new HomeInfo()
            };

            return new JsonResult(menusInfoResultDTO);
        }

        /// <summary>
        /// 递归处理数据
        /// </summary>
        /// <param name="systemMenuEntities"></param>
        /// <param name="rootNode"></param>
        private static void GetTreeNodeListByNoLockedDTOArray(List<SystemMenuEntity> systemMenuEntities, SystemMenu rootNode)
        {
            if (systemMenuEntities == null || systemMenuEntities.Count <= 0)
            {
                return;
            }

            var childreDataList = systemMenuEntities.Where(p => p.pid == rootNode.Id);
            if (childreDataList != null && childreDataList.Any())
            {
                rootNode.Child = new List<SystemMenu>();

                foreach (var item in childreDataList)
                {
                    SystemMenu treeNode = new SystemMenu()
                    {
                        Id = item.id,
                        Icon = item.icon,
                        Href = item.href,
                        Title = item.title,
                    };
                    rootNode.Child.Add(treeNode);
                }

                foreach (var item in rootNode.Child)
                {
                    GetTreeNodeListByNoLockedDTOArray(systemMenuEntities, item);
                }
            }
        }

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

    /// <summary>
    /// 菜单结果对象
    /// </summary>
    public class MenusInfoResultDTO
    {
        /// <summary>
        /// 权限菜单树
        /// </summary>
        public List<SystemMenu> MenuInfo { get; set; } = new List<SystemMenu>();

        /// <summary>
        /// logo
        /// </summary>
        public LogoInfo LogoInfo { get; set; } = new LogoInfo();

        /// <summary>
        /// Home
        /// </summary>
        public HomeInfo HomeInfo { get; set; } = new HomeInfo();
    }

    public class LogoInfo
    {
        public string Title { get; set; } = "一个牛逼的免费前端框架";
        public string Image { get; set; } = "images/logo.png";
        public string Href { get; set; } = "";
    }

    public class HomeInfo
    {
        public string Title { get; set; } = "首页";
        public string Href { get; set; } = "page/welcome-1.html?t=1";

    }

    /// <summary>
    /// 树结构对象
    /// </summary>
    public class SystemMenu
    {
        /// <summary>
        /// 数据ID
        /// </summary>
        public long Id { get; set; }

        /// <summary>
        /// 父级ID
        /// </summary>
        public long PId { get; set; }

        /// <summary>
        /// 节点名称
        /// </summary>
        public string Title { get; set; } = null!;

        /// <summary>
        /// 节点地址
        /// </summary>
        public string Href { get; set; } = null!;

        /// <summary>
        /// 新开Tab方式
        /// </summary>
        public string Target { get; set; } = "_self";

        /// <summary>
        /// 菜单图标样式
        /// </summary>
        public string Icon { get; set; } = null!;

        /// <summary>
        /// 排序
        /// </summary>
        public int Sort { get; set; }

        /// <summary>
        /// 子集
        /// </summary>
        public List<SystemMenu> Child { get; set; } = new List<SystemMenu>();
    }
}