优化常用菜单功能以支持拼接路由地址
在用户系统模块的常用菜单服务中,优化了菜单地址的拼接逻辑。修复了菜单路由地址处理方法,菜单数据现在将根据其层级结构正确地拼接路由地址。这确保了前端路由的正确解析和导航。
This commit is contained in:
parent
2fbd8fcd0a
commit
4042b6a3bc
@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
|
|||||||
import cn.iocoder.yudao.module.system.dal.mysql.commonlyused.CommonlyUsedMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.commonlyused.CommonlyUsedMapper;
|
||||||
import cn.iocoder.yudao.module.system.service.permission.MenuService;
|
import cn.iocoder.yudao.module.system.service.permission.MenuService;
|
||||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||||
|
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -107,17 +108,27 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<CommonlyUsedRespVO> commonlyUsedRespVOS = new ArrayList<>();
|
List<CommonlyUsedRespVO> commonlyUsedRespVOS = new ArrayList<>();
|
||||||
|
Map<Long, MenuDO> menuMap = menuList.stream().collect(Collectors.toMap(MenuDO::getId, a -> a));
|
||||||
for (MenuDO menuDO : menuList) {
|
for (MenuDO menuDO : menuList) {
|
||||||
menuDO.setSelectedFlag(false);
|
menuDO.setSelectedFlag(false);
|
||||||
if (menuIds.contains(String.valueOf(menuDO.getId()))) {
|
if (menuIds.contains(String.valueOf(menuDO.getId()))) {
|
||||||
menuDO.setSelectedFlag(true);
|
menuDO.setSelectedFlag(true);
|
||||||
List<CommonlyUsedDO> menus = map.get("2" + "_" + menuDO.getId());
|
// -- 是菜单的才返回回去
|
||||||
CommonlyUsedDO commonlyUsedDO = menus.get(0);
|
if (menuDO.getType() == 2) {
|
||||||
CommonlyUsedRespVO commonlyUsedRespVO = BeanUtil.copyProperties(commonlyUsedDO, CommonlyUsedRespVO.class);
|
List<CommonlyUsedDO> menus = map.get("2" + "_" + menuDO.getId());
|
||||||
commonlyUsedRespVO.setImg(menuDO.getIcon());
|
CommonlyUsedDO commonlyUsedDO = menus.get(0);
|
||||||
commonlyUsedRespVO.setName(menuDO.getName());
|
CommonlyUsedRespVO commonlyUsedRespVO = BeanUtil.copyProperties(commonlyUsedDO, CommonlyUsedRespVO.class);
|
||||||
commonlyUsedRespVO.setRouting(menuDO.getPath());
|
commonlyUsedRespVO.setImg(menuDO.getIcon());
|
||||||
commonlyUsedRespVOS.add(commonlyUsedRespVO);
|
commonlyUsedRespVO.setName(menuDO.getName());
|
||||||
|
// -- 这里的路由需要拼接
|
||||||
|
List<String> routingList = new ArrayList<>();
|
||||||
|
routingList.add(menuDO.getPath());
|
||||||
|
this.recursiveConcatenationOfRoutingAddresses(routingList, menuDO, menuMap);
|
||||||
|
//list反转
|
||||||
|
String routing = String.join("/", Lists.reverse(routingList));
|
||||||
|
commonlyUsedRespVO.setRouting(routing);
|
||||||
|
commonlyUsedRespVOS.add(commonlyUsedRespVO);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,6 +153,23 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService {
|
|||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归拼接路由
|
||||||
|
*
|
||||||
|
* @param routingList
|
||||||
|
* @param menuDO
|
||||||
|
* @param menuMap
|
||||||
|
*/
|
||||||
|
private void recursiveConcatenationOfRoutingAddresses(List<String> routingList, MenuDO menuDO, Map<Long, MenuDO> menuMap) {
|
||||||
|
if (menuDO.getParentId() == 0L) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//获取上级
|
||||||
|
MenuDO parentMenuDO = menuMap.get(menuDO.getParentId());
|
||||||
|
routingList.add(parentMenuDO.getPath());
|
||||||
|
this.recursiveConcatenationOfRoutingAddresses(routingList, parentMenuDO, menuMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchUpdate(List<CommonlyUsedSaveReqVO> list) {
|
public void batchUpdate(List<CommonlyUsedSaveReqVO> list) {
|
||||||
@ -163,7 +191,11 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService {
|
|||||||
}
|
}
|
||||||
List<CommonlyUsedDO> oldList = commonlyUsedMapper.selectList(new LambdaQueryWrapper<CommonlyUsedDO>().eq(CommonlyUsedDO::getUserId, userId));
|
List<CommonlyUsedDO> oldList = commonlyUsedMapper.selectList(new LambdaQueryWrapper<CommonlyUsedDO>().eq(CommonlyUsedDO::getUserId, userId));
|
||||||
List<CommonlyUsedDO> newList = BeanUtils.toBean(list, CommonlyUsedDO.class);
|
List<CommonlyUsedDO> newList = BeanUtils.toBean(list, CommonlyUsedDO.class);
|
||||||
|
|
||||||
if (CollectionUtil.isEmpty(oldList)) {
|
if (CollectionUtil.isEmpty(oldList)) {
|
||||||
|
for (CommonlyUsedDO commonlyUsedDO : newList) {
|
||||||
|
commonlyUsedDO.setUserId(userId);
|
||||||
|
}
|
||||||
commonlyUsedMapper.insertBatch(newList);
|
commonlyUsedMapper.insertBatch(newList);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user