|
|
@@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@@ -63,13 +64,13 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
|
|
|
|
|
|
@Override
|
|
|
public List<SysMenu> getRoleMenuTree(String systemCode, String userId) {
|
|
|
- SysUserRole sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
|
|
|
+ List<SysUserRole> sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
|
|
|
// modify by lipf ,2026年4月3日08:52:05, 解决NPE 异常
|
|
|
if(sysUserRole == null){
|
|
|
log.info("租户[{}]下的用户[{}]角色为空",systemCode, userId);
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
- List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
|
|
|
+ List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.stream().map(x->x.getRoleId()).toList());
|
|
|
List<SysMenu> sysMenus = new ArrayList<>();
|
|
|
for (SysMenu menu : menus) {
|
|
|
if (menu.getParentId() == null || menu.getParentId().equalsIgnoreCase("0")) {
|
|
|
@@ -97,8 +98,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
|
|
|
LambdaQueryWrapper<SysMenu> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
lambdaQueryWrapper.eq(SysMenu::getType,"2");
|
|
|
List<SysMenu> sysMenus = baseMapper.selectList(lambdaQueryWrapper);
|
|
|
- SysUserRole sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
|
|
|
- List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.getRoleId());
|
|
|
+ List<SysUserRole> sysUserRole = sysUserRoleMapper.selectByUserIdAndSysCodeOne(userId,systemCode);
|
|
|
+ List<SysMenu> menus = this.getMenuByRoleId(sysUserRole.stream().map(x->x.getRoleId()).toList());
|
|
|
|
|
|
List<String> perms = new ArrayList<>();
|
|
|
sysMenus.forEach(item->{
|
|
|
@@ -154,9 +155,18 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SysMenu> getMenuByRoleId(String roleId) {
|
|
|
- List<SysMenu> menuByRoleId = sysMenuMapper.getMenuByRoleId(roleId);
|
|
|
- return menuByRoleId;
|
|
|
+ public List<SysMenu> getMenuByRoleId(List<String> roleIds) {
|
|
|
+ List<SysMenu> menuByRoleId = sysMenuMapper.getMenuByRoleId(roleIds);
|
|
|
+ List<SysMenu> distinctMenuList = menuByRoleId.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ SysMenu::getId,
|
|
|
+ Function.identity(),
|
|
|
+ (existing, replacement) -> existing
|
|
|
+ ))
|
|
|
+ .values()
|
|
|
+ .stream()
|
|
|
+ .toList();
|
|
|
+ return distinctMenuList;
|
|
|
}
|
|
|
|
|
|
private void findChildren(List<SysMenu> SysMenus, List<SysMenu> menus, int menuType) {
|