package org.jeecg.modules.arj.service.impl; import org.jeecg.modules.arj.entity.SysMenu; import org.jeecg.modules.arj.service.SysMenuService; import org.jeecg.modules.arj.mapper.SysMenuMapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; /** *

* 菜单管理 前端控制器 *

* * @author hyy * @since 2023-01-09 */ @Service public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { @Autowired private SysMenuMapper sysMenuMapper; @Override public List queryByHeadId(String headId) { QueryWrapper q = new QueryWrapper<>(); q.eq("head_id" , headId); return sysMenuMapper.selectList(q); } @Override public List findTree(String userName, int menuType) { List sysMenus = new ArrayList<>(); List menus = sysMenuMapper.selectList(null); for (SysMenu menu : menus) { if (menu.getParentId() == null || menu.getParentId() == 0) { menu.setLevel(0); if (!exists(sysMenus, menu)) { sysMenus.add(menu); } } } sysMenus.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum())); findChildren(sysMenus, menus, menuType); return sysMenus; } private void findChildren(List SysMenus, List menus, int menuType) { for (SysMenu SysMenu : SysMenus) { List children = new ArrayList<>(); for (SysMenu menu : menus) { if (menuType == 1 && menu.getType() == 2) { // 如果是获取类型不需要按钮,且菜单类型是按钮的,直接过滤掉 continue; } if (SysMenu.getId() != null && SysMenu.getId().equals(menu.getParentId())) { menu.setParentName(SysMenu.getName()); menu.setLevel(SysMenu.getLevel() + 1); if (!exists(children, menu)) { children.add(menu); } } } SysMenu.setChildren(children); children.sort((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum())); findChildren(children, menus, menuType); } } private boolean exists(List sysMenus, SysMenu sysMenu) { boolean exist = false; for(SysMenu menu:sysMenus) { if(menu.getId().equals(sysMenu.getId())) { exist = true; } } return exist; } }