初版菜单搜索优化

master
李永杰 2024-04-21 10:55:16 +08:00
parent 1fb4c0f046
commit ee7e092210
4 changed files with 68 additions and 24 deletions

View File

@ -120,6 +120,14 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>

View File

@ -123,4 +123,11 @@ public interface SysMenuMapper {
* @return * @return
*/ */
public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId); public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
/**
* ID
* @param parentId
* @return
*/
List<SysMenu> selectMenuByParentId(@Param("parentId") Long parentId);
} }

View File

@ -57,39 +57,63 @@ public class SysMenuServiceImpl implements ISysMenuService {
*/ */
@Override @Override
public List<SysMenu> selectMenuList(SysMenu menu, Long userId) { public List<SysMenu> selectMenuList(SysMenu menu, Long userId) {
int size = menuMapper.selectMenuList(new SysMenu()).size();
List<SysMenu> menuList = null; List<SysMenu> menuList = null;
String menuName = menu.getMenuName();
// 管理员显示所有菜单信息 // 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) { if(SysUser.isAdmin(userId)){
menuList = menuMapper.selectMenuList(menu); menuList = menuMapper.selectMenuList(menu);
} else { } else {
menu.getParams().put("userId", userId); menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu); menuList = menuMapper.selectMenuListByUserId(menu);
} }
List<SysMenu> finalMenuList = menuList; // 菜单对象数量与数据库中数量不相等
return menuList.stream() if (menuList.size() != size) {
.parallel() List<SysMenu> sysMenuList = new ArrayList<>();
.filter(sysMenu -> sysMenu.getParentId().equals(sysMenu.getMenuId())) // 遍历获取子级、父级菜单
.map(first -> { menuList.forEach(item -> {
first.setChildren(getChildren(first.getMenuId(), finalMenuList).isEmpty() ? null : sysMenuList.addAll(childrenMenu(item));
getChildren(first.getMenuId(), finalMenuList)); if (item.getParentId() != 0){
return first; sysMenuList.addAll(parentMenu(item));
}) }
.collect(Collectors.toList()); });
menuList.addAll(sysMenuList);
menuList = new ArrayList<>(new HashSet<>(menuList));
}
return menuList;
} }
private List<SysMenu> getChildren(Long parentId, List<SysMenu> menus) { /**
List<SysMenu> collect = menus.stream() *
.parallel() * @param menus
.filter(sysMenu -> parentId.equals(sysMenu.getParentId())) * @return
.map(second -> { */
second.setChildren(getChildren(second.getMenuId(), menus).isEmpty() ? null public List<SysMenu> childrenMenu(SysMenu menus){
: getChildren(second.getMenuId(), menus)); // 详细
return second; // List<SysMenu> sysMenus = menuMapper.selectMenuByParentId(menus.getMenuId());
}) // List<SysMenu> childrenMenu = new ArrayList<>(sysMenus);
.collect(Collectors.toList()); // if (sysMenus.size() > 0){
return collect; // for (SysMenu sysMenu : sysMenus) {
// childrenMenu(sysMenu);
// }
// }
// return childrenMenu;
List<SysMenu> sysMenus = menuMapper.selectMenuByParentId(menus.getMenuId());
return new ArrayList<>(sysMenus);
}
/**
*
* @param menu
* @return
*/
public List<SysMenu> parentMenu(SysMenu menu){
List<SysMenu> parentMenu = new ArrayList<>();
SysMenu sysMenu = menuMapper.selectMenuById(menu.getParentId());
parentMenu.add(sysMenu);
if (sysMenu.getParentId() != 0){
parentMenu.addAll(parentMenu(sysMenu));
}
return parentMenu;
} }
/** /**

View File

@ -186,6 +186,11 @@
where menu_name=#{menuName} and parent_id = #{parentId} limit 1 where menu_name=#{menuName} and parent_id = #{parentId} limit 1
</select> </select>
<select id="selectMenuByParentId" resultType="com.muyu.system.common.domain.SysMenu">
<include refid="selectMenuVo"/>
where parent_id = #{parentId}
</select>
<update id="updateMenu" parameterType="com.muyu.system.common.domain.SysMenu"> <update id="updateMenu" parameterType="com.muyu.system.common.domain.SysMenu">
update sys_menu update sys_menu
<set> <set>