mirror of https://github.com/halo-dev/halo
feat: add treeByTeam tag for menu.
parent
a3bffe67a7
commit
c643e204f8
|
@ -50,6 +50,10 @@ public class MenuTagDirective implements TemplateDirectiveModel {
|
|||
String team = params.get("team").toString();
|
||||
env.setVariable("menus", builder.build().wrap(menuService.listByTeam(team, Sort.by(DESC, "priority"))));
|
||||
break;
|
||||
case "treeByTeam":
|
||||
String treeTeam = params.get("team").toString();
|
||||
env.setVariable("menus", builder.build().wrap(menuService.listByTeamAsTree(treeTeam, Sort.by(DESC, "priority"))));
|
||||
break;
|
||||
case "count":
|
||||
env.setVariable("count", builder.build().wrap(menuService.count()));
|
||||
break;
|
||||
|
|
|
@ -47,6 +47,15 @@ public interface MenuService extends CrudService<Menu, Integer> {
|
|||
*/
|
||||
List<MenuDTO> listByTeam(@NonNull String team, Sort sort);
|
||||
|
||||
/**
|
||||
* List menus by team as tree.
|
||||
*
|
||||
* @param team team
|
||||
* @param sort sort
|
||||
* @return list of tree menus
|
||||
*/
|
||||
List<MenuVO> listByTeamAsTree(@NonNull String team, Sort sort);
|
||||
|
||||
/**
|
||||
* Creates a menu.
|
||||
*
|
||||
|
@ -62,7 +71,7 @@ public interface MenuService extends CrudService<Menu, Integer> {
|
|||
* @param sort sort info must not be null
|
||||
* @return a menu tree
|
||||
*/
|
||||
List<MenuVO> listAsTree(Sort sort);
|
||||
List<MenuVO> listAsTree(@NonNull Sort sort);
|
||||
|
||||
/**
|
||||
* Lists menu by parent id.
|
||||
|
|
|
@ -77,6 +77,24 @@ public class MenuServiceImpl extends AbstractCrudService<Menu, Integer> implemen
|
|||
return menus.stream().map(menu -> (MenuDTO) new MenuDTO().convertFrom(menu)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MenuVO> listByTeamAsTree(String team, Sort sort) {
|
||||
Assert.notNull(team, "Team must not be null");
|
||||
|
||||
List<Menu> menus = menuRepository.findByTeam(team, sort);
|
||||
|
||||
if (CollectionUtils.isEmpty(menus)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
MenuVO topLevelMenu = createTopLevelMenu();
|
||||
|
||||
concreteTree(topLevelMenu, menus);
|
||||
|
||||
List<MenuVO> children = topLevelMenu.getChildren();
|
||||
return children;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Menu createBy(MenuParam menuParam) {
|
||||
Assert.notNull(menuParam, "Menu param must not be null");
|
||||
|
|
Loading…
Reference in New Issue