优化常用菜单功能以支持拼接路由地址
在用户系统模块的常用菜单服务中,优化了菜单地址的拼接逻辑。修复了菜单路由地址处理方法,菜单数据现在将根据其层级结构正确地拼接路由地址。这确保了前端路由的正确解析和导航。
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.service.permission.MenuService;
|
||||
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 org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -107,17 +108,27 @@ public class CommonlyUsedServiceImpl implements CommonlyUsedService {
|
||||
}
|
||||
|
||||
List<CommonlyUsedRespVO> commonlyUsedRespVOS = new ArrayList<>();
|
||||
Map<Long, MenuDO> menuMap = menuList.stream().collect(Collectors.toMap(MenuDO::getId, a -> a));
|
||||
for (MenuDO menuDO : menuList) {
|
||||
menuDO.setSelectedFlag(false);
|
||||
if (menuIds.contains(String.valueOf(menuDO.getId()))) {
|
||||
menuDO.setSelectedFlag(true);
|
||||
List<CommonlyUsedDO> menus = map.get("2" + "_" + menuDO.getId());
|
||||
CommonlyUsedDO commonlyUsedDO = menus.get(0);
|
||||
CommonlyUsedRespVO commonlyUsedRespVO = BeanUtil.copyProperties(commonlyUsedDO, CommonlyUsedRespVO.class);
|
||||
commonlyUsedRespVO.setImg(menuDO.getIcon());
|
||||
commonlyUsedRespVO.setName(menuDO.getName());
|
||||
commonlyUsedRespVO.setRouting(menuDO.getPath());
|
||||
commonlyUsedRespVOS.add(commonlyUsedRespVO);
|
||||
// -- 是菜单的才返回回去
|
||||
if (menuDO.getType() == 2) {
|
||||
List<CommonlyUsedDO> menus = map.get("2" + "_" + menuDO.getId());
|
||||
CommonlyUsedDO commonlyUsedDO = menus.get(0);
|
||||
CommonlyUsedRespVO commonlyUsedRespVO = BeanUtil.copyProperties(commonlyUsedDO, CommonlyUsedRespVO.class);
|
||||
commonlyUsedRespVO.setImg(menuDO.getIcon());
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归拼接路由
|
||||
*
|
||||
* @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
|
||||
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> newList = BeanUtils.toBean(list, CommonlyUsedDO.class);
|
||||
|
||||
if (CollectionUtil.isEmpty(oldList)) {
|
||||
for (CommonlyUsedDO commonlyUsedDO : newList) {
|
||||
commonlyUsedDO.setUserId(userId);
|
||||
}
|
||||
commonlyUsedMapper.insertBatch(newList);
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user