提交 744b1b54 编写于 作者: 郝先瑞

refactor: 菜单代码优化和添加菜单权限接口

上级 58406422
......@@ -21,7 +21,7 @@ import java.util.List;
* 菜单路由控制器
*
* @author haoxr
* @date 2020-11-06
* @date 2020/11/06
*/
@Api(tags = "菜单接口")
@RestController
......@@ -33,8 +33,8 @@ public class SysMenuController {
private final SysMenuService menuService;
private final SysPermissionService permissionService;
@ApiOperation(value = "菜单表格(Table)列表")
@GetMapping("/list")
@ApiOperation(value = "菜单权限列表")
@GetMapping("/authorization-list")
public Result list(
@ApiParam(value = "菜单名称", type = "query") String name
) {
......@@ -42,7 +42,7 @@ public class SysMenuController {
return Result.success(menuList);
}
@ApiOperation(value = "菜单表格(Table)列表")
@ApiOperation(value = "菜单表格树形列表")
@GetMapping("/table")
public Result listTableMenus(
@ApiParam(value = "菜单名称", type = "query") String name
......@@ -51,17 +51,17 @@ public class SysMenuController {
return Result.success(menuList);
}
@ApiOperation(value = "菜单下拉(Select)列表")
@ApiOperation(value = "菜单下拉列表")
@GetMapping("/select")
public Result listSelectMenus() {
List<OptionVO> menus = menuService.listMenus();
return Result.success(menus);
}
@ApiOperation(value = "菜单路由(Route)列表")
@ApiOperation(value = "菜单路由列表")
@GetMapping("/route")
public Result getRouteList() {
List<RouteVO> routeList = menuService.listNextRoutes();
List<RouteVO> routeList = menuService.listRoutes();
return Result.success(routeList);
}
......
......@@ -49,7 +49,7 @@ public interface SysMenuService extends IService<SysMenu> {
*
* @return
*/
List<RouteVO> listNextRoutes();
List<RouteVO> listRoutes();
/**
*
......
......@@ -9,6 +9,7 @@ import com.youlai.admin.common.constant.SystemConstants;
import com.youlai.admin.common.enums.MenuTypeEnum;
import com.youlai.admin.mapper.SysMenuMapper;
import com.youlai.admin.pojo.entity.SysMenu;
import com.youlai.admin.pojo.entity.SysPermission;
import com.youlai.admin.pojo.vo.menu.TableMenuVO;
import com.youlai.admin.pojo.vo.menu.RouteVO;
import com.youlai.admin.service.SysMenuService;
......@@ -38,9 +39,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
/**
* 菜单表格树形列表
*
* @param name 菜单名称
* @return
*/
@Override
public List<TableMenuVO> listTableMenus(String name) {
......@@ -64,17 +62,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
}
/**
* 菜单下拉列表
*/
@Override
public List<OptionVO> listMenus() {
List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>().orderByAsc(SysMenu::getSort));
List<OptionVO> menus = recursionMenus(SystemConstants.ROOT_MENU_ID, menuList);
return menus;
}
/**
* 保存菜单路由
*/
......@@ -100,17 +87,24 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return result;
}
/**
* 菜单下拉数据
*/
@Override
public List<OptionVO> listMenus() {
List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>().orderByAsc(SysMenu::getSort));
List<OptionVO> menus = recursionMenus(SystemConstants.ROOT_MENU_ID, menuList);
return menus;
}
/**
* 获取路由列表(适配Vue3的vue-next-router)
*
* @return
* 路由列表
*/
@Override
@Cacheable(cacheNames = "system", key = "'routes'")
public List<RouteVO> listNextRoutes() {
public List<RouteVO> listRoutes() {
List<SysMenu> menuList = this.baseMapper.listRoutes();
List<RouteVO> list = recursionNextRoute(SystemConstants.ROOT_MENU_ID, menuList);
List<RouteVO> list = recurRoutes(SystemConstants.ROOT_MENU_ID, menuList);
return list;
}
......@@ -121,7 +115,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
* @param menuList 菜单列表
* @return
*/
private List<RouteVO> recursionNextRoute(Long parentId, List<SysMenu> menuList) {
private List<RouteVO> recurRoutes(Long parentId, List<SysMenu> menuList) {
List<RouteVO> list = new ArrayList<>();
Optional.ofNullable(menuList).ifPresent(menus -> menus.stream().filter(menu -> menu.getParentId().equals(parentId))
.forEach(menu -> {
......@@ -130,9 +124,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
MenuTypeEnum menuTypeEnum = menu.getType();
if (MenuTypeEnum.MENU.equals(menuTypeEnum)) {
routeVO.setName(menu.getPath()); // 根据name路由跳转 this.$router.push({path:xxx})
routeVO.setName(menu.getPath()); // 根据name路由跳转 this.$router.push({name:xxx})
}
routeVO.setPath(menu.getPath()); // 根据path路由跳转 this.$router.push({name:xxx})
routeVO.setPath(menu.getPath()); // 根据path路由跳转 this.$router.push({path:xxx})
routeVO.setRedirect(menu.getRedirect());
routeVO.setComponent(menu.getComponent());
routeVO.setRedirect(menu.getRedirect());
......@@ -145,8 +139,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
meta.setKeepAlive(true);
routeVO.setMeta(meta);
List<RouteVO> children = recursionNextRoute(menu.getId(), menuList);
List<RouteVO> children = recurRoutes(menu.getId(), menuList);
routeVO.setChildren(children);
list.add(routeVO);
}));
return list;
......@@ -161,8 +156,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
*/
@Override
public List<OptionVO> listMenuPerms(String name) {
List<OptionVO> menus = this.listMenus();
return null;
List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>().orderByAsc(SysMenu::getSort));
List<SysPermission> permList = permissionService.list();
List<OptionVO> menus = recursionMenuPerms(SystemConstants.ROOT_MENU_ID, menuList, permList);
return menus;
}
/**
......@@ -201,6 +198,30 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return menus;
}
/**
* 递归生成菜单下拉层级列表
*
* @param parentId 父级ID
* @param menuList 菜单列表
* @return
*/
private static List<OptionVO> recursionMenuPerms(Long parentId, List<SysMenu> menuList, List<SysPermission> permList) {
List<OptionVO> menus = Optional.ofNullable(menuList).orElse(new ArrayList<>()).stream()
.filter(menu -> menu.getParentId().equals(parentId))
.map(menu -> {
OptionVO option = new OptionVO("m_" + menu.getId(), menu.getName());
List<OptionVO> children = recursionMenuPerms(menu.getId(), menuList, permList);
List<OptionVO> permChildren = permList.stream().filter(perm -> perm.getMenuId().equals(menu.getId()))
.map(perm -> new OptionVO("p_" + perm.getId(), perm.getName()))
.collect(Collectors.toList());
children.addAll(permChildren);
option.setChildren(children);
return option;
}).collect(Collectors.toList());
return menus;
}
/**
* 清理路由缓存
......@@ -210,5 +231,4 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
public void cleanCache() {
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册