SysUserFavoritesService.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. namespace Admin.NET.Core.Service;
  2. /// <summary>
  3. /// 用户菜单快捷导航服务
  4. /// </summary>
  5. [ApiDescriptionSettings(Order = 500)]
  6. public class SysUserFavoritesService : IDynamicApiController, ITransient
  7. {
  8. private readonly SqlSugarRepository<SysUserFavorites> _sysUserFavoritesRep;
  9. private readonly SysCacheService _sysCacheService;
  10. public SysUserFavoritesService(SqlSugarRepository<SysUserFavorites> sysUserFavoritesRep,
  11. SysCacheService sysCacheService)
  12. {
  13. _sysUserFavoritesRep = sysUserFavoritesRep;
  14. _sysCacheService = sysCacheService;
  15. }
  16. /// <summary>
  17. /// 收藏菜单
  18. /// </summary>
  19. /// <param name="input"></param>
  20. /// <returns></returns>
  21. [UnitOfWork]
  22. public async Task GrantUserFavorites(UserFavoritesInput input)
  23. {
  24. await _sysUserFavoritesRep.DeleteAsync(u => u.UserId == input.UserId);
  25. if (input.MenuIdList == null || input.MenuIdList.Count < 1) return;
  26. var menus = input.MenuIdList.Select(u => new SysUserFavorites
  27. {
  28. UserId = input.UserId,
  29. MenuId = u
  30. }).ToList();
  31. await _sysUserFavoritesRep.InsertRangeAsync(menus);
  32. }
  33. /// <summary>
  34. /// 取消收藏菜单
  35. /// </summary>
  36. /// <param name="input"></param>
  37. /// <returns></returns>
  38. public async Task DeleteUserFavorites(UserFavoritesInput input)
  39. {
  40. await _sysUserFavoritesRep.DeleteAsync(u => u.UserId == input.UserId && input.MenuIdList.Contains(u.MenuId));
  41. }
  42. /// <summary>
  43. /// 根据用户Id删除收藏菜单
  44. /// </summary>
  45. /// <param name="userId"></param>
  46. /// <returns></returns>
  47. public async Task DeleteUserRoleByUserId(long userId)
  48. {
  49. await _sysUserFavoritesRep.DeleteAsync(u => u.UserId == userId);
  50. }
  51. /// <summary>
  52. /// 根据用户Id获取收藏菜单集合
  53. /// </summary>
  54. /// <param name="userId"></param>
  55. /// <returns></returns>
  56. public async Task<List<MenuOutput>> GetUserRoleList(long userId)
  57. {
  58. var sysUserRoleList = await _sysUserFavoritesRep.AsQueryable()
  59. .Includes(u => u.SysMenu)
  60. .Where(u => u.UserId == userId).ToListAsync();
  61. return sysUserRoleList.Where(u => u.SysMenu != null).Select(u => u.SysMenu).ToList().Adapt<List<MenuOutput>>();
  62. }
  63. /// <summary>
  64. /// 根据用户Id获取收藏菜单Id集合
  65. /// </summary>
  66. /// <param name="userId"></param>
  67. /// <returns></returns>
  68. public async Task<List<long>> GetUserRoleIdList(long userId)
  69. {
  70. return await _sysUserFavoritesRep.AsQueryable()
  71. .Where(u => u.UserId == userId).Select(u => u.MenuId).ToListAsync();
  72. }
  73. }