SysUserRoleService.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // 麻省理工学院许可证
  2. //
  3. // 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司 联系电话/微信:18020030720 QQ:515096995
  4. //
  5. // 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
  6. //
  7. // 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
  8. // 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
  9. namespace Admin.NET.Core.Service;
  10. /// <summary>
  11. /// 系统用户角色服务
  12. /// </summary>
  13. public class SysUserRoleService : ITransient
  14. {
  15. private readonly SqlSugarRepository<SysUserRole> _sysUserRoleRep;
  16. private readonly SysCacheService _sysCacheService;
  17. public SysUserRoleService(SqlSugarRepository<SysUserRole> sysUserRoleRep,
  18. SysCacheService sysCacheService)
  19. {
  20. _sysUserRoleRep = sysUserRoleRep;
  21. _sysCacheService = sysCacheService;
  22. }
  23. /// <summary>
  24. /// 授权用户角色
  25. /// </summary>
  26. /// <param name="input"></param>
  27. /// <returns></returns>
  28. public async Task GrantUserRole(UserRoleInput input)
  29. {
  30. await _sysUserRoleRep.DeleteAsync(u => u.UserId == input.UserId);
  31. if (input.RoleIdList == null || input.RoleIdList.Count < 1) return;
  32. var roles = input.RoleIdList.Select(u => new SysUserRole
  33. {
  34. UserId = input.UserId,
  35. RoleId = u
  36. }).ToList();
  37. await _sysUserRoleRep.InsertRangeAsync(roles);
  38. _sysCacheService.Remove(CacheConst.KeyUserButton + input.UserId);
  39. }
  40. /// <summary>
  41. /// 根据角色Id删除用户角色
  42. /// </summary>
  43. /// <param name="roleId"></param>
  44. /// <returns></returns>
  45. public async Task DeleteUserRoleByRoleId(long roleId)
  46. {
  47. await _sysUserRoleRep.AsQueryable()
  48. .Where(u => u.RoleId == roleId)
  49. .Select(u => u.UserId)
  50. .ForEachAsync(userId =>
  51. {
  52. _sysCacheService.Remove(CacheConst.KeyUserButton + userId);
  53. });
  54. await _sysUserRoleRep.DeleteAsync(u => u.RoleId == roleId);
  55. }
  56. /// <summary>
  57. /// 根据用户Id删除用户角色
  58. /// </summary>
  59. /// <param name="userId"></param>
  60. /// <returns></returns>
  61. public async Task DeleteUserRoleByUserId(long userId)
  62. {
  63. await _sysUserRoleRep.DeleteAsync(u => u.UserId == userId);
  64. _sysCacheService.Remove(CacheConst.KeyUserButton + userId);
  65. }
  66. /// <summary>
  67. /// 根据用户Id获取角色集合
  68. /// </summary>
  69. /// <param name="userId"></param>
  70. /// <returns></returns>
  71. public async Task<List<SysRole>> GetUserRoleList(long userId)
  72. {
  73. var sysUserRoleList = await _sysUserRoleRep.AsQueryable()
  74. .Includes(u => u.SysRole)
  75. .Where(u => u.UserId == userId).ToListAsync();
  76. return sysUserRoleList.Where(u => u.SysRole != null).Select(u => u.SysRole).ToList();
  77. }
  78. /// <summary>
  79. /// 根据用户Id获取角色Id集合
  80. /// </summary>
  81. /// <param name="userId"></param>
  82. /// <returns></returns>
  83. public async Task<List<long>> GetUserRoleIdList(long userId)
  84. {
  85. return await _sysUserRoleRep.AsQueryable()
  86. .Where(u => u.UserId == userId).Select(u => u.RoleId).ToListAsync();
  87. }
  88. /// <summary>
  89. /// 根据角色Id获取用户Id集合
  90. /// </summary>
  91. /// <param name="roleId"></param>
  92. /// <returns></returns>
  93. public async Task<List<long>> GetUserIdList(long roleId)
  94. {
  95. return await _sysUserRoleRep.AsQueryable()
  96. .Where(u => u.RoleId == roleId).Select(u => u.UserId).ToListAsync();
  97. }
  98. }