若依后台 优化菜单查询

dev
mengwang 2024-04-12 21:07:34 +08:00
parent 171b885a2a
commit 2f5edc5abe
3 changed files with 72 additions and 4 deletions

View File

@ -135,4 +135,8 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
* @return
*/
public SysMenu checkMenuNameUnique (@Param("menuName") String menuName, @Param("parentId") Long parentId);
public List<SysMenu> selectSysMenuList(@Param("longList") List<Long> longList);
List<SysMenu> selectSysChildrenList(@Param("longList") List<Long> longList);
}

View File

@ -51,6 +51,39 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return selectMenuList(new SysMenu(), userId);
}
public List<SysMenu> selectMenuList (List<SysMenu> sysMenuList) {
List<Long> longList = sysMenuList.stream()
.map(SysMenu::getParentId)
.filter(parentId -> parentId != 0)
.distinct()
.toList();
if(longList.isEmpty()){
return null;
}
List<SysMenu> sysMenus = menuMapper.selectSysMenuList(longList);
List<SysMenu> sysMenus1 = selectMenuList(sysMenus);
if(sysMenus1 != null){
sysMenus.addAll(sysMenus1);
}
return sysMenus;
}
public List<SysMenu> selectSysChildrenList (List<SysMenu> sysMenuList) {
List<Long> longList = sysMenuList.stream()
.map(SysMenu::getMenuId)
.toList();
List<SysMenu> sysMenus = menuMapper.selectSysChildrenList(longList);
if(sysMenus != null && !sysMenus.isEmpty()){
List<SysMenu> sysMenus1 = selectMenuList(sysMenus);
if(sysMenus1 != null){
sysMenus.addAll(sysMenus1);
}
}else {
return null;
}
return sysMenus;
}
/**
*
*
@ -61,13 +94,24 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override
public List<SysMenu> selectMenuList (SysMenu menu, Long userId) {
List<SysMenu> menuList = null;
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) {
// 管理员显示所有信息
if(SysUser.isAdmin(userId)){
menuList = menuMapper.selectMenuList(menu);
} else {
menu.getParams().put("userId", userId);
List<SysMenu> sysMenus = selectMenuList(menuList);
if(sysMenus != null && !sysMenus.isEmpty()){
menuList.addAll(sysMenus);
}
List<SysMenu> sysMenus1 = selectSysChildrenList(menuMapper.selectMenuList(menu));
if(sysMenus1 != null && !sysMenus1.isEmpty()){
menuList.addAll(sysMenus1);
}
}else {
menu.getParams().put("userId",userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
menuList = menuList.stream()
.distinct()
.toList();
return menuList;
}

View File

@ -185,6 +185,26 @@
<include refid="selectMenuVo"/>
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
</select>
<select id="selectSysMenuList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"></include>
<where>
menu_id in (
<foreach collection="longList" item="id" separator=",">
#{id}
</foreach>
)
</where>
</select>
<select id="selectSysChildrenList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"></include>
<where>
parent_id in (
<foreach collection="longList" item="id" separator=",">
#{id}
</foreach>
)
</where>
</select>
<update id="updateMenu" parameterType="com.muyu.system.domain.SysMenu">
update sys_menu