forked from jiangpeng/jiang
系统菜单搜索优化 后端
parent
da5956bd60
commit
55ad686677
|
@ -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);
|
||||
|
||||
/**
|
||||
* 根据用户所有权限
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue