From 83485c3d73d33d57356380140133b12d970b1e8f Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Tue, 1 Aug 2023 10:19:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=92=E8=89=B2=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E4=B8=B4=E6=97=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/vo/menu/MenuAuthTreeVO.java | 118 ++++++++++++++++++ .../com/cool/store/service/MenuService.java | 3 +- .../store/service/impl/MenuServiceImpl.java | 5 +- 3 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MenuAuthTreeVO.java diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MenuAuthTreeVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MenuAuthTreeVO.java new file mode 100644 index 000000000..de60e859f --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/menu/MenuAuthTreeVO.java @@ -0,0 +1,118 @@ +package com.cool.store.vo.menu; + +import com.cool.store.entity.SysMenuDO; +import com.cool.store.enums.MenuTypeEnum; +import com.google.common.collect.Lists; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * describe: + * + * @author zhouyiping + * @date 2020/09/22 + */ +@Data +public class MenuAuthTreeVO { + + @ApiModelProperty("请求地址(前端路由)") + private String path; + + @ApiModelProperty("菜单编号") + private String code; + + @ApiModelProperty("菜单名称") + private String name; + + @ApiModelProperty("菜单id") + private Long id; + + @ApiModelProperty("父级菜单") + private Long parentId; + + @ApiModelProperty("是否新开页面") + private String target; + + @ApiModelProperty("组件") + private String component; + + @ApiModelProperty("图标'") + private String icon; + + @ApiModelProperty("常用功能图标") + private String commonFunctionsIcon; + + @ApiModelProperty("菜单类型 1菜单 2权限") + private Integer menuType; + + @ApiModelProperty("权限列表") + private List authorityList; + + @ApiModelProperty("子菜单") + private List children; + + public static List dealMenuTree(Long rootId, List menuList) { + if(CollectionUtils.isEmpty(menuList)){ + return Lists.newArrayList(); + } + Map> parentGroup = ListUtils.emptyIfNull(menuList).stream().collect(Collectors.groupingBy(SysMenuDO::getParentId)); + List menuDOList = parentGroup.get(rootId); + if (CollectionUtils.isEmpty(menuDOList)) { + return Collections.emptyList(); + } + List voList = convertVO(menuDOList); + List treeVOList = new LinkedList<>(voList); + for (MenuAuthTreeVO data : treeVOList) { + getChild(data, parentGroup); + } + return treeVOList; + } + + public static List convertVO(List menuList) { + menuList = menuList.stream().sorted(Comparator.comparing(SysMenuDO::getSort)).collect(Collectors.toList()); + List resultList = new ArrayList<>(); + for (SysMenuDO menu : menuList) { + MenuAuthTreeVO vo = new MenuAuthTreeVO(); + vo.setId(menu.getId()); + vo.setParentId(menu.getParentId()); + vo.setName(menu.getName()); + vo.setCode(menu.getType()); + vo.setPath(menu.getPath()); + vo.setComponent(menu.getComponent()); + vo.setTarget(menu.getTarget()); + vo.setIcon(menu.getIcon()); + vo.setMenuType(menu.getMenuType()); + vo.setCommonFunctionsIcon(menu.getCommonFunctionsIcon()); + resultList.add(vo); + } + return resultList; + } + + public static void getChild(MenuAuthTreeVO data, Map> parentGroup) { + List sysMenuDOList = parentGroup.get(data.getId()); + List parentMenuList = ListUtils.emptyIfNull(sysMenuDOList).stream().filter(menu -> MenuTypeEnum.MENU.getCode().equals(menu.getMenuType())).collect(Collectors.toList()); + List parentAuthList = ListUtils.emptyIfNull(sysMenuDOList).stream().filter(menu -> MenuTypeEnum.AUTH.getCode().equals(menu.getMenuType())).collect(Collectors.toList()); + //属于菜单下时候 + if (CollectionUtils.isNotEmpty(parentMenuList)) { + List voList = convertVO(parentMenuList); + List authorityList = convertVO(parentMenuList); + data.setAuthorityList(authorityList); + List menuList = voList.stream().filter(vo -> MenuTypeEnum.MENU.getCode().equals(vo.getMenuType())).collect(Collectors.toList()); + data.setChildren(menuList); + voList.forEach(child -> { + getChild(child, parentGroup); + }); + } + //数据是权限的的时候 + if (CollectionUtils.isNotEmpty(parentAuthList)) { + List authorityList = convertVO(parentAuthList); + data.setAuthorityList(authorityList); + } + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/MenuService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/MenuService.java index d3c48188e..d9fc443b7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/MenuService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/MenuService.java @@ -2,6 +2,7 @@ package com.cool.store.service; import com.cool.store.dto.menu.AddMenuDTO; import com.cool.store.enums.MenuTypeEnum; +import com.cool.store.vo.menu.MenuAuthTreeVO; import com.cool.store.vo.menu.MenuTreeVO; import java.util.List; @@ -26,7 +27,7 @@ public interface MenuService { * 获取所有的菜单 * @return */ - List getAllMenus(); + List getAllMenus(); /** * 新增菜单 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java index eb3c98a8b..08d28d46a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java @@ -9,6 +9,7 @@ import com.cool.store.entity.SysRoleMenuDO; import com.cool.store.enums.MenuTypeEnum; import com.cool.store.enums.PlatFormTypeEnum; import com.cool.store.service.MenuService; +import com.cool.store.vo.menu.MenuAuthTreeVO; import com.cool.store.vo.menu.MenuTreeVO; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; @@ -53,9 +54,9 @@ public class MenuServiceImpl implements MenuService { } @Override - public List getAllMenus() { + public List getAllMenus() { List menuList= sysMenuDAO.selectMenuAll(null, PlatFormTypeEnum.PC.getCode()); - return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList); + return MenuAuthTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList); } @Override