|
|
@@ -91,6 +91,61 @@ public interface AuthConvert {
|
|
|
return filterList(treeNodeMap.values(), node -> ID_ROOT.equals(node.getParentId()));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 将传入的menuId当作根节点,构建菜单树
|
|
|
+ *
|
|
|
+ * @param menuId
|
|
|
+ * @param menuList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ default List<AuthPermissionInfoRespVO.MenuVO> buildMenuTree(Long menuId, List<MenuDO> menuList) {
|
|
|
+ if (CollUtil.isEmpty(menuList)) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ // 移除按钮
|
|
|
+ menuList.removeIf(menu -> menu.getType().equals(MenuTypeEnum.BUTTON.getType()));
|
|
|
+ // 排序,保证菜单的有序性
|
|
|
+ menuList.sort(Comparator.comparing(MenuDO::getSort));
|
|
|
+ // 构建菜单树
|
|
|
+ Map<Long, AuthPermissionInfoRespVO.MenuVO> treeNodeMap = new LinkedHashMap<>();
|
|
|
+ List<AuthPermissionInfoRespVO.MenuVO> rootNodes = new ArrayList<>();
|
|
|
+ // 转换菜单项到树节点
|
|
|
+ menuList.forEach(menu -> {
|
|
|
+ AuthPermissionInfoRespVO.MenuVO node = AuthConvert.INSTANCE.convertTreeNode(menu);
|
|
|
+ treeNodeMap.put(menu.getId(), node);
|
|
|
+ // 检查是否为根节点
|
|
|
+ if (menu.getId().equals(menuId)) {
|
|
|
+ rootNodes.add(node);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 处理父子关系
|
|
|
+ rootNodes.forEach(rootNode -> {
|
|
|
+ rootNode.setChildren(new ArrayList<>());
|
|
|
+ treeNodeMap.values().stream()
|
|
|
+ .filter(node -> node.getParentId().equals(menuId) && !node.getParentId().equals(null)) // 排除已经是根节点的项
|
|
|
+ .forEach(childNode -> {
|
|
|
+ AuthPermissionInfoRespVO.MenuVO parentNode = treeNodeMap.get(childNode.getParentId());
|
|
|
+ if (parentNode != null) {
|
|
|
+ if (parentNode.getChildren() == null) {
|
|
|
+ parentNode.setChildren(new ArrayList<>());
|
|
|
+ }
|
|
|
+ parentNode.getChildren().add(childNode);
|
|
|
+ } else {
|
|
|
+ // 如果找不到父节点,则将其添加到根节点
|
|
|
+ rootNode.getChildren().add(childNode);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ // 否则,返回指定menuId的根节点
|
|
|
+ return Collections.singletonList(rootNodes.stream()
|
|
|
+ .filter(node -> node.getId().equals(menuId))
|
|
|
+ .findFirst()
|
|
|
+ .orElseThrow(() -> new IllegalArgumentException("指定的menuId未找到对应的根节点")));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
SocialUserBindReqDTO convert(Long userId, Integer userType, AuthSocialLoginReqVO reqVO);
|
|
|
|
|
|
SmsCodeSendReqDTO convert(AuthSmsSendReqVO reqVO);
|