SystemAuthorityRepository.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Hotline.Settings;
  2. using SqlSugar;
  3. using XF.Domain.Dependency;
  4. namespace Hotline.Repository.SqlSugar.System
  5. {
  6. public class SystemAuthorityRepository : BaseRepository<SystemAuthority>, ISystemAuthorityRepository, IScopeDependency
  7. {
  8. public SystemAuthorityRepository(ISugarUnitOfWork<HotlineDbContext> uow) : base(uow)
  9. {
  10. }
  11. /// <summary>
  12. /// 获取当前用户所有菜单
  13. /// </summary>
  14. /// <param name="roles"></param>
  15. /// <returns></returns>
  16. public async Task<IReadOnlyList<SystemMenu>> GetMyMenu(string[] roles)
  17. {
  18. var list = await Db.Queryable<SystemAuthority>()
  19. .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
  20. var menuarr = new List<string>();
  21. foreach (var item in list)
  22. {
  23. menuarr.AddRange(item.SystemMenuArr);
  24. }
  25. var newmenu = menuarr.Distinct().ToList();
  26. return await Db.Queryable<SystemMenu>().Where(x => menuarr.Contains(x.PermissionCode)).OrderBy(x => x.DisplayOrder).ToTreeAsync(x => x.children, it => it.ParentId, "");
  27. }
  28. /// <summary>
  29. /// 获取当前用户的所有功能点
  30. /// </summary>
  31. /// <param name="roles"></param>
  32. /// <returns></returns>
  33. public async Task<IReadOnlyList<string>> GetMyButton(string[] roles)
  34. {
  35. var list = await Db.Queryable<SystemAuthority>()
  36. .Where(x => roles.Contains(x.RoleCode)).ToListAsync();
  37. var buttonarr = new List<string>();
  38. foreach (var item in list)
  39. {
  40. buttonarr.AddRange(item.SystemButtonArr);
  41. }
  42. return buttonarr.Distinct().ToList();
  43. }
  44. /// <summary>
  45. /// 获取当前用户所有功能点(包含菜单和按钮)
  46. /// </summary>
  47. /// <param name="roles"></param>
  48. /// <returns></returns>
  49. public IReadOnlyList<string> GetPermission(List<string> roles)
  50. {
  51. var list = Db.Queryable<SystemAuthority>()
  52. .Where(x => roles.Contains(x.RoleCode)).ToList();
  53. var permissionarr = new List<string>();
  54. foreach (var item in list)
  55. {
  56. permissionarr.AddRange(item.SystemMenuArr);
  57. permissionarr.AddRange(item.SystemButtonArr);
  58. }
  59. return permissionarr.Distinct().ToList();
  60. }
  61. }
  62. }