using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Yi.Framework.Model.Models; namespace Yi.Framework.Core { public static class TreeMenuBuild { /// /// 过滤所有已经删除的菜单 /// /// /// public static menu Normal(menu menu_data) { for (int i = menu_data.children.Count() - 1; i >= 0; i--) { if (menu_data.children[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted) { menu_data.children.Remove(menu_data.children[i]); } else if (menu_data.children[i] != null) { Normal(menu_data.children[i]); } } return menu_data; } public static menu ShowFormat(menu menu_data, List allMenuIds) { return Format(Show(menu_data, allMenuIds)); } /// /// 过滤用户不展示及已删除及未拥有的菜单 /// /// /// /// private static menu Show(menu menu_data, List allMenuIds) { for (int i = menu_data.children.Count() - 1; i >= 0; i--) { if (!allMenuIds.Contains(menu_data.children[i].id) || menu_data.children[i].is_delete == (short)Common.Enum.DelFlagEnum.Deleted || menu_data.children[i].is_show == (short)Common.Enum.ShowFlagEnum.NoShow) { menu_data.children.Remove(menu_data.children[i]); } else { Show(menu_data.children[i], allMenuIds); } } return menu_data; } /// /// 为了匹配前端格式,通常和show方法一起 /// /// /// private static menu Format(menu menu_data) { for (int i = menu_data.children.Count() - 1; i >= 0; i--) { if (menu_data.children[i].icon == null) { menu_data.children[i].icon = "mdi-view-dashboard"; } if (menu_data.children != null || menu_data.children.Count() != 0) { Format(menu_data.children[i]); } } if (menu_data.children.Count() == 0) { menu_data.children = null; } return menu_data; } public static menu Sort(menu menu_data) { if (menu_data.children != null) { for (int i = menu_data.children.Count() - 1; i >= 0; i--) { menu_data.children = menu_data.children.AsEnumerable().OrderByDescending(u => u.sort).ToList(); if (menu_data.children != null || menu_data.children.Count() != 0) { Sort(menu_data.children[i]); } } } return menu_data; } } }