系统菜单搜索优化 后端

master
Jiang Peng 2024-04-12 19:58:59 +08:00
parent da5956bd60
commit 55ad686677
3 changed files with 84 additions and 0 deletions

View File

@ -21,6 +21,16 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
*/
public List<SysMenu> selectMenuList (SysMenu menu);
/**
* ID
*/
public List<SysMenu> selectSysMenuList (@Param("longs") List<Long> longs);
/**
* ID
*/
public List<SysMenu> selectSysChdMenuList (@Param("longs") List<Long> longs);
/**
*
*

View File

@ -51,6 +51,44 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return selectMenuList(new SysMenu(), userId);
}
public List<SysMenu> selectSysMenuList(List<SysMenu> menuList){
List<Long> longs = menuList.stream()
.map(menu -> menu.getParentId())
.filter(parentId -> parentId != 0)
.distinct()
.toList();
if (longs.size()==0){
return null;
}
List<SysMenu> sysMenus = menuMapper.selectSysMenuList(longs);
List<SysMenu> sysMenus1 = selectSysMenuList(sysMenus);
if (sysMenus1 != null){
sysMenus.addAll(sysMenus1);
}
return sysMenus;
}
public List<SysMenu> selectSysChdMenuList(List<SysMenu> menuList){
//从输入的menuList中提取出每个菜单的ID放入一个long类型的列表中
List<Long> longs = menuList.stream()
.map(menu -> menu.getMenuId())
.toList();
//根据提出的菜单ID列表来查询对应的子菜单将查询结果放入sysMenus列表中
List<SysMenu> sysMenus = menuMapper.selectSysChdMenuList(longs);
//检查sysMenus是否为空不为空将其添加到sysMenus列表中
if (sysMenus!=null && sysMenus.size()!=0){
List<SysMenu> sysMenus1 = selectSysMenuList(sysMenus);
if (sysMenus1 != null){
sysMenus.addAll(sysMenus1);
}
}else{
//sysMenus为空 直接返回null
return null;
}
//展示sysMenus列表
return sysMenus;
}
/**
*
*
@ -64,10 +102,22 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) {
menuList = menuMapper.selectMenuList(menu);
List<SysMenu> sysMenus1 = selectSysMenuList(menuList);
if (sysMenus1!=null && sysMenus1.size()!=0){
menuList.addAll(sysMenus1);
}
List<SysMenu> sysMenus = selectSysChdMenuList(menuMapper.selectMenuList(menu));
if (sysMenus!=null && sysMenus.size()!=0){
menuList.addAll(sysMenus);
}
} else {
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
menuList = menuList.stream()
.distinct()
.toList();
return menuList;
}

View File

@ -186,6 +186,30 @@
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
</select>
<select id="selectSysMenuList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"/>
<where>
menu_id in (
<foreach collection="longs" separator="," item="id">
#{id}
</foreach>
)
</where>
order by parent_id,order_num
</select>
<select id="selectSysChdMenuList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"/>
<where>
parent_id in (
<foreach collection="longs" separator="," item="id">
#{id}
</foreach>
)
</where>
order by parent_id,order_num
</select>
<update id="updateMenu" parameterType="com.muyu.system.domain.SysMenu">
update sys_menu
<set>