SysRoleMenuService.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证。
  2. //
  3. // 必须在法律法规允许的范围内正确使用,严禁将其用于非法、欺诈、恶意或侵犯他人合法权益的目的。
  4. namespace Admin.NET.Core.Service;
  5. /// <summary>
  6. /// 系统角色菜单服务
  7. /// </summary>
  8. public class SysRoleMenuService : ITransient
  9. {
  10. private readonly SqlSugarRepository<SysRoleMenu> _sysRoleMenuRep;
  11. private readonly SysCacheService _sysCacheService;
  12. public SysRoleMenuService(SqlSugarRepository<SysRoleMenu> sysRoleMenuRep,
  13. SysCacheService sysCacheService)
  14. {
  15. _sysRoleMenuRep = sysRoleMenuRep;
  16. _sysCacheService = sysCacheService;
  17. }
  18. /// <summary>
  19. /// 根据角色Id集合获取菜单Id集合
  20. /// </summary>
  21. /// <param name="roleIdList"></param>
  22. /// <returns></returns>
  23. public async Task<List<long>> GetRoleMenuIdList(List<long> roleIdList)
  24. {
  25. return await _sysRoleMenuRep.AsQueryable()
  26. .Where(u => roleIdList.Contains(u.RoleId))
  27. .Select(u => u.MenuId).ToListAsync();
  28. }
  29. /// <summary>
  30. /// 授权角色菜单
  31. /// </summary>
  32. /// <param name="input"></param>
  33. /// <returns></returns>
  34. public async Task GrantRoleMenu(RoleMenuInput input)
  35. {
  36. await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == input.Id);
  37. var menus = input.MenuIdList.Select(u => new SysRoleMenu
  38. {
  39. RoleId = input.Id,
  40. MenuId = u
  41. }).ToList();
  42. await _sysRoleMenuRep.InsertRangeAsync(menus);
  43. // 清除缓存
  44. // _sysCacheService.RemoveByPrefixKey(CacheConst.KeyUserMenu);
  45. _sysCacheService.RemoveByPrefixKey(CacheConst.KeyUserButton);
  46. }
  47. /// <summary>
  48. /// 根据菜单Id集合删除角色菜单
  49. /// </summary>
  50. /// <param name="menuIdList"></param>
  51. /// <returns></returns>
  52. public async Task DeleteRoleMenuByMenuIdList(List<long> menuIdList)
  53. {
  54. await _sysRoleMenuRep.DeleteAsync(u => menuIdList.Contains(u.MenuId));
  55. }
  56. /// <summary>
  57. /// 根据角色Id删除角色菜单
  58. /// </summary>
  59. /// <param name="roleId"></param>
  60. /// <returns></returns>
  61. public async Task DeleteRoleMenuByRoleId(long roleId)
  62. {
  63. await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == roleId);
  64. }
  65. }