SysRoleMenuService.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using Furion.DependencyInjection;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace Admin.NET.Core.Service
  6. {
  7. /// <summary>
  8. /// 系统角色菜单服务
  9. /// </summary>
  10. public class SysRoleMenuService : ITransient
  11. {
  12. private readonly SqlSugarRepository<SysRoleMenu> _sysRoleMenuRep;
  13. public SysRoleMenuService(SqlSugarRepository<SysRoleMenu> sysRoleMenuRep)
  14. {
  15. _sysRoleMenuRep = sysRoleMenuRep;
  16. }
  17. /// <summary>
  18. /// 根据角色Id集合获取菜单Id集合
  19. /// </summary>
  20. /// <param name="roleIdList"></param>
  21. /// <returns></returns>
  22. public async Task<List<long>> GetRoleMenuIdList(List<long> roleIdList)
  23. {
  24. return await _sysRoleMenuRep.AsQueryable()
  25. .Where(u => roleIdList.Contains(u.RoleId))
  26. .Select(u => u.MenuId).ToListAsync();
  27. }
  28. /// <summary>
  29. /// 根据角色Id集合获取菜单树
  30. /// </summary>
  31. /// <param name="roleIdList"></param>
  32. /// <returns></returns>
  33. public async Task<List<SysMenu>> GetRoleMenu(List<long> roleIdList)
  34. {
  35. var menuIdList = await _sysRoleMenuRep.AsQueryable()
  36. .Where(u => roleIdList.Contains(u.RoleId))
  37. .Select(u => u.MenuId).ToListAsync();
  38. return await _sysRoleMenuRep.ChangeRepository<SqlSugarRepository<SysMenu>>().AsQueryable()
  39. .Where(u => menuIdList.Contains(u.Id))
  40. .ToTreeAsync(u => u.Children, u => u.Pid, 0);
  41. }
  42. /// <summary>
  43. /// 授权角色菜单
  44. /// </summary>
  45. /// <param name="input"></param>
  46. /// <returns></returns>
  47. [SqlSugarUnitOfWork]
  48. public async Task GrantRoleMenu(RoleMenuInput input)
  49. {
  50. await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == input.Id);
  51. var menus = input.MenuIdList.Select(u => new SysRoleMenu
  52. {
  53. RoleId = input.Id,
  54. MenuId = u
  55. }).ToList();
  56. await _sysRoleMenuRep.InsertRangeAsync(menus);
  57. }
  58. /// <summary>
  59. /// 根据菜单Id集合删除角色菜单
  60. /// </summary>
  61. /// <param name="menuIdList"></param>
  62. /// <returns></returns>
  63. public async Task DeleteRoleMenuByMenuIdList(List<long> menuIdList)
  64. {
  65. await _sysRoleMenuRep.DeleteAsync(u => menuIdList.Contains(u.MenuId));
  66. }
  67. /// <summary>
  68. /// 根据角色Id删除角色菜单
  69. /// </summary>
  70. /// <param name="roleId"></param>
  71. /// <returns></returns>
  72. public async Task DeleteRoleMenuByRoleId(long roleId)
  73. {
  74. await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == roleId);
  75. }
  76. }
  77. }