😎修复非超管增加菜单后看不到问题

This commit is contained in:
zuohuaijun 2025-08-30 15:54:21 +08:00
parent a6466a3901
commit 49e206aa74
2 changed files with 21 additions and 4 deletions

View File

@ -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<SysMenu>();
CheckMenuParam(sysMenu);
await _sysMenuRep.InsertAsync(sysMenu);
var newMenuId = await _sysMenuRep.InsertReturnSnowflakeIdAsync(sysMenu);
// 将新增的菜单Id增加到当前账号角色菜单集合
await AddRoleMenuId(newMenuId);
}
/// <summary>
@ -251,4 +253,16 @@ public class SysMenuService : IDynamicApiController, ITransient
var roleIdList = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId);
return await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
}
/// <summary>
/// 当前账号增加菜单后更新对应角色菜单集合
/// </summary>
/// <returns></returns>
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);
}
}

View File

@ -34,10 +34,13 @@ public class SysRoleMenuService : ITransient
/// 授权角色菜单
/// </summary>
/// <param name="input"></param>
/// <param name="isDelete"></param>
/// <returns></returns>
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,