初版菜单搜索优化
parent
1fb4c0f046
commit
ee7e092210
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue