AdminRightList.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Data;
  6. using MySystem.Models.Bs;
  7. using Library;
  8. namespace MySystem
  9. {
  10. public class AdminRightList
  11. {
  12. public WebCMSEntities db = new WebCMSEntities();
  13. #region 获取权限数据
  14. public List<AdminRightListItem> GetRight(string myrole, string rightString)
  15. {
  16. List<AdminRightListItem> menuList1 = new List<AdminRightListItem>();
  17. List<RightDic> list = db.RightDic.ToList();
  18. List<MenuRight> btnList = db.MenuRight.ToList();
  19. List<RightDic> Level1 = list.Where(m => m.RightLevel == 1).OrderByDescending(m => m.Sort).ToList();
  20. foreach (RightDic sub1 in Level1)
  21. {
  22. AdminRightListItem menu1 = new AdminRightListItem();
  23. menu1.path = sub1.Path;
  24. menu1.name = sub1.Name;
  25. // menu1.component = sub1.Component;
  26. menu1.meta = new AdminRightListItemMeta();
  27. // menu1.meta.title = sub1.Title;
  28. menu1.meta.icon = sub1.Icon;
  29. menu1.meta.auths = GetAuths(btnList.Where(m => m.MenuId.StartsWith(sub1.Id)).OrderBy(m => m.MenuId).ToList().Select(m => m.MenuId).ToList(), rightString, sub1.OtherRight);
  30. if (menu1.meta.roles == null) menu1.meta.roles = new List<string>(){ "1" };
  31. if (!menu1.meta.roles.Contains(myrole) && rightString.Contains("," + sub1.Id + ",")) menu1.meta.roles.Add(myrole);
  32. List<AdminRightListItem> menuList2 = new List<AdminRightListItem>();
  33. List<RightDic> Level2 = list.Where(m => m.RightLevel == 2 && m.Id.StartsWith(sub1.Id)).OrderByDescending(m => m.Sort).ToList();
  34. if (Level2.Count > 0)
  35. {
  36. foreach (RightDic sub2 in Level2)
  37. {
  38. AdminRightListItem menu2 = new AdminRightListItem();
  39. menu2.path = sub2.Path.Replace("\r", "");
  40. menu2.name = sub2.Name;
  41. // menu2.component = sub2.Component;
  42. menu2.meta = new AdminRightListItemMeta();
  43. // menu2.meta.title = sub2.Title;
  44. menu2.meta.icon = sub2.Icon;
  45. menu2.meta.auths = GetAuths(btnList.Where(m => m.MenuId.StartsWith(sub2.Id)).OrderBy(m => m.MenuId).ToList().Select(m => m.MenuId).ToList(), rightString, sub2.OtherRight);
  46. if (menu2.meta.roles == null) menu2.meta.roles = new List<string>(){ "1" };
  47. if (!menu2.meta.roles.Contains(myrole) && rightString.Contains("," + sub2.Id + ",")) menu2.meta.roles.Add(myrole);
  48. List<RightDic> Level3 = list.Where(m => m.RightLevel == 3 && m.Id.StartsWith(sub2.Id)).OrderByDescending(m => m.Sort).ToList();
  49. if (Level3.Count > 0)
  50. {
  51. List<AdminRightListItem> menuList3 = new List<AdminRightListItem>();
  52. foreach (RightDic sub3 in Level3)
  53. {
  54. AdminRightListItem menu3 = new AdminRightListItem();
  55. menu3.path = sub3.Path.Replace("\r", "");
  56. menu3.name = sub3.Name;
  57. // menu3.component = sub3.Component;
  58. menu3.meta = new AdminRightListItemMeta();
  59. // menu3.meta.title = sub3.Title;
  60. menu3.meta.icon = sub3.Icon;
  61. menu3.meta.auths = GetAuths(btnList.Where(m => m.MenuId.StartsWith(sub3.Id)).OrderBy(m => m.MenuId).ToList().Select(m => m.MenuId).ToList(), rightString, sub3.OtherRight);
  62. if (menu3.meta.roles == null) menu3.meta.roles = new List<string>(){ "1" };
  63. if (!menu3.meta.roles.Contains(myrole) && rightString.Contains("," + sub3.Id + ",")) menu3.meta.roles.Add(myrole);
  64. menuList3.Add(menu3);
  65. }
  66. menu2.children = menuList3;
  67. }
  68. menuList2.Add(menu2);
  69. }
  70. menu1.children = menuList2;
  71. }
  72. menuList1.Add(menu1);
  73. }
  74. return menuList1;
  75. }
  76. private List<string> GetAuths(List<string> auths, string rightString, string otherRight)
  77. {
  78. List<string> result = new List<string>();
  79. if(auths.Count <= 0)
  80. {
  81. return result;
  82. }
  83. var rute = auths[0].Substring(0, auths[0].LastIndexOf("_"));
  84. foreach (string auth in auths)
  85. {
  86. if (rightString.Contains(auth))
  87. {
  88. result.Add(auth.Substring(auth.LastIndexOf("_") + 1));
  89. }
  90. }
  91. if (!string.IsNullOrEmpty(otherRight))
  92. {
  93. var other = otherRight.Split("\n");
  94. foreach (var right in other)
  95. {
  96. var a = right.Substring(0, right.LastIndexOf("_"));
  97. var check = rute + "_" + a;
  98. if (rightString.Contains(check))
  99. {
  100. result.Add(a);
  101. }
  102. }
  103. }
  104. return result;
  105. }
  106. private string GetEnName(string str)
  107. {
  108. return new PublicFunction().TranslateZHToEn(str).Replace(" ", "").Replace("'", "");
  109. }
  110. #endregion
  111. }
  112. }