Просмотр исходного кода

chore: 补充收藏菜单级联删除

喵你个旺呀 1 год назад
Родитель
Сommit
d890b0bb5e

+ 6 - 0
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -16,18 +16,21 @@ public class SysMenuService : IDynamicApiController, ITransient
     private readonly SqlSugarRepository<SysMenu> _sysMenuRep;
     private readonly SysRoleMenuService _sysRoleMenuService;
     private readonly SysUserRoleService _sysUserRoleService;
+    private readonly SysUserMenuService _sysUserMenuService;
     private readonly SysCacheService _sysCacheService;
 
     public SysMenuService(UserManager userManager,
         SqlSugarRepository<SysMenu> sysMenuRep,
         SysRoleMenuService sysRoleMenuService,
         SysUserRoleService sysUserRoleService,
+        SysUserMenuService sysUserMenuService,
         SysCacheService sysCacheService)
     {
         _userManager = userManager;
         _sysMenuRep = sysMenuRep;
         _sysRoleMenuService = sysRoleMenuService;
         _sysUserRoleService = sysUserRoleService;
+        _sysUserMenuService = sysUserMenuService;
         _sysCacheService = sysCacheService;
     }
 
@@ -191,6 +194,9 @@ public class SysMenuService : IDynamicApiController, ITransient
 
         // 级联删除角色菜单数据
         await _sysRoleMenuService.DeleteRoleMenuByMenuIdList(menuIdList);
+        
+        // 级联删除用户收藏菜单
+        await _sysUserMenuService.DeleteMenuList(menuIdList);
 
         // 清除缓存
         DeleteMenuCache();

+ 21 - 11
Admin.NET/Admin.NET.Core/Service/User/SysUserMenuService.cs

@@ -54,17 +54,6 @@ public class SysUserMenuService : IDynamicApiController, ITransient
         await _sysUserMenuRep.DeleteAsync(u => u.UserId == _userManager.UserId && input.MenuIdList.Contains(u.MenuId));
     }
 
-    /// <summary>
-    /// 清空当前用户收藏的菜单 🔖
-    /// </summary>
-    /// <returns></returns>
-    [ApiDescriptionSettings(Name = "ClearUserMenu"), HttpPost]
-    [DisplayName("清空当前用户收藏的菜单")]
-    public async Task ClearUserMenu()
-    {
-        await _sysUserMenuRep.DeleteAsync(u => u.UserId == _userManager.UserId);
-    }
-
     /// <summary>
     /// 获取当前用户收藏的菜单集合 🔖
     /// </summary>
@@ -88,4 +77,25 @@ public class SysUserMenuService : IDynamicApiController, ITransient
         return await _sysUserMenuRep.AsQueryable()
             .Where(u => u.UserId == _userManager.UserId).Select(u => u.MenuId).ToListAsync();
     }
+    
+    /// <summary>
+    /// 删除指定用户的收藏菜单
+    /// </summary>
+    /// <returns></returns>
+    [NonAction]
+    public async Task DeleteUserMenuList(long userId)
+    {
+        await _sysUserMenuRep.DeleteAsync(u => u.UserId == userId);
+    }
+
+    /// <summary>
+    /// 批量删除收藏菜单
+    /// </summary>
+    /// <param name="ids"></param>
+    [NonAction]
+    public async Task DeleteMenuList(List<long> ids)
+    {
+        if (ids == null || ids.Count == 0) return;
+        await _sysUserMenuRep.DeleteAsync(u => ids.Contains(u.MenuId));
+    }
 }

+ 6 - 0
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -18,6 +18,7 @@ public class SysUserService : IDynamicApiController, ITransient
     private readonly SysUserRoleService _sysUserRoleService;
     private readonly SysConfigService _sysConfigService;
     private readonly SysOnlineUserService _sysOnlineUserService;
+    private readonly SysUserMenuService _sysUserMenuService;
     private readonly SysCacheService _sysCacheService;
     private readonly SysUserLdapService _sysUserLdapService;
     private readonly SqlSugarRepository<SysUser> _sysUserRep;
@@ -32,6 +33,7 @@ public class SysUserService : IDynamicApiController, ITransient
         SysCacheService sysCacheService,
         SysUserLdapService sysUserLdapService,
         SqlSugarRepository<SysUser> sysUserRep,
+        SysUserMenuService sysUserMenuService,
         SysUserEventHandler sysUserEventHandler)
     {
         _userManager = userManager;
@@ -42,6 +44,7 @@ public class SysUserService : IDynamicApiController, ITransient
         _sysOnlineUserService = sysOnlineUserService;
         _sysCacheService = sysCacheService;
         _sysUserLdapService = sysUserLdapService;
+        _sysUserMenuService = sysUserMenuService;
         _sysUserRep = sysUserRep;
         _sysUserEventHandler = sysUserEventHandler;
     }
@@ -201,6 +204,9 @@ public class SysUserService : IDynamicApiController, ITransient
 
         // 删除域账号
         await _sysUserLdapService.DeleteUserLdapByUserId(input.Id);
+        
+        // 删除用户收藏菜单
+        await _sysUserMenuService.DeleteUserMenuList(input.Id);
 
         // 执行订阅事件
         _sysUserEventHandler.OnEvent(this, SysUserEventTypeEnum.Delete, input);