From 49e206aa743a558b300f1047de40023c0e7aa61b Mon Sep 17 00:00:00 2001 From: zuohuaijun Date: Sat, 30 Aug 2025 15:54:21 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8E=E4=BF=AE=E5=A4=8D=E9=9D=9E?= =?UTF-8?q?=E8=B6=85=E7=AE=A1=E5=A2=9E=E5=8A=A0=E8=8F=9C=E5=8D=95=E5=90=8E?= =?UTF-8?q?=E7=9C=8B=E4=B8=8D=E5=88=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Menu/SysMenuService.cs | 18 ++++++++++++++++-- .../Service/Role/SysRoleMenuService.cs | 7 +++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs b/Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs index 3c8bc2ab..2c30b58f 100644 --- a/Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs +++ b/Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs @@ -100,7 +100,7 @@ public class SysMenuService : IDynamicApiController, ITransient return _userManager.SuperAdmin ? await _sysMenuRep.AsQueryable().OrderBy(u => new { u.OrderNo, u.Id }) - .Distinct().Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0) : + .Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0) : await _sysMenuRep.AsQueryable().OrderBy(u => new { u.OrderNo, u.Id }) .Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray()); } @@ -136,7 +136,9 @@ public class SysMenuService : IDynamicApiController, ITransient var sysMenu = input.Adapt(); CheckMenuParam(sysMenu); - await _sysMenuRep.InsertAsync(sysMenu); + var newMenuId = await _sysMenuRep.InsertReturnSnowflakeIdAsync(sysMenu); + // 将新增的菜单Id增加到当前账号角色菜单集合 + await AddRoleMenuId(newMenuId); } /// @@ -251,4 +253,16 @@ public class SysMenuService : IDynamicApiController, ITransient var roleIdList = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId); return await _sysRoleMenuService.GetRoleMenuIdList(roleIdList); } + + /// + /// 当前账号增加菜单后更新对应角色菜单集合 + /// + /// + private async Task AddRoleMenuId(long menuId) + { + if (_userManager.SuperAdmin) return; + + var roleIdList = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId); + await _sysRoleMenuService.GrantRoleMenu(new RoleMenuInput() { Id = roleIdList[0], MenuIdList = [menuId] }, false); + } } \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Service/Role/SysRoleMenuService.cs b/Admin.NET/Admin.NET.Core/Service/Role/SysRoleMenuService.cs index 77ccca2c..76c2d54b 100644 --- a/Admin.NET/Admin.NET.Core/Service/Role/SysRoleMenuService.cs +++ b/Admin.NET/Admin.NET.Core/Service/Role/SysRoleMenuService.cs @@ -34,10 +34,13 @@ public class SysRoleMenuService : ITransient /// 授权角色菜单 /// /// + /// /// - public async Task GrantRoleMenu(RoleMenuInput input) + public async Task GrantRoleMenu(RoleMenuInput input, bool isDelete = true) { - await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == input.Id); + if (isDelete) + await _sysRoleMenuRep.DeleteAsync(u => u.RoleId == input.Id); + var menus = input.MenuIdList.Select(u => new SysRoleMenu { RoleId = input.Id,