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,