查找菜单出现父子元素

master
baize 2024-04-12 19:45:38 +08:00
parent 9cb3404b26
commit 738ad0626b
5 changed files with 87 additions and 0 deletions

View File

@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -35,7 +36,9 @@ public class SysMenuController extends BaseController {
@GetMapping("/list") @GetMapping("/list")
public Result list (SysMenu menu) { public Result list (SysMenu menu) {
Long userId = SecurityUtils.getUserId(); Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId); List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return success(menus); return success(menus);
} }

View File

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

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.system.domain.SysMenu; import com.muyu.system.domain.SysMenu;
import com.muyu.system.domain.vo.RouterVo; import com.muyu.system.domain.vo.RouterVo;
import com.muyu.system.domain.vo.TreeSelect; import com.muyu.system.domain.vo.TreeSelect;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -158,4 +159,5 @@ public interface SysMenuService extends IService<SysMenu> {
* @return * @return
*/ */
public boolean checkMenuNameUnique (SysMenu menu); public boolean checkMenuNameUnique (SysMenu menu);
} }

View File

@ -51,6 +51,22 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return selectMenuList(new SysMenu(), userId); return selectMenuList(new SysMenu(), userId);
} }
public List<SysMenu> selectSysMenuList(List<SysMenu> menuList){
List<Long> list = menuList.stream()
.map(menu -> menu.getParentId())
.filter(parentId -> parentId != 0)
.distinct()
.toList();
if (list.size()==0){
return null;
}
List<SysMenu> sysMenus = menuMapper.selectSysMenuList(list);
List<SysMenu> sysMenus1 = selectSysMenuList(sysMenus);
if (sysMenus1!=null){
sysMenus.addAll(sysMenus1);
}
return sysMenus;
}
/** /**
* *
* *
@ -64,13 +80,43 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
// 管理员显示所有菜单信息 // 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) { if (SysUser.isAdmin(userId)) {
menuList = menuMapper.selectMenuList(menu); menuList = menuMapper.selectMenuList(menu);
// menuList.addAll(selectSysMenuList(menuList));
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 { } else {
menu.getParams().put("userId", userId); menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu); menuList = menuMapper.selectMenuListByUserId(menu);
} }
menuList= menuList.stream()
.distinct()
.toList();
return menuList; return menuList;
} }
private List<SysMenu> selectSysChdMenuList(List<SysMenu> menuList) {
List<Long> list = menuList.stream()
.map(sysMenu -> sysMenu.getMenuId())
.toList();
System.out.println(list);
List<SysMenu> sysMenus = menuMapper.selectSysChdMenuList(list);
if (sysMenus!=null&&sysMenus.size()!=0){
List<SysMenu> sysMenus1 = selectSysMenuList(sysMenus);
if (sysMenus1!=null){
sysMenus.addAll(sysMenus1);
}
}else {
return null;
}
return sysMenus;
}
/** /**
* ID * ID
* *
@ -321,6 +367,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return UserConstants.UNIQUE; return UserConstants.UNIQUE;
} }
/** /**
* *
* *

View File

@ -185,6 +185,38 @@
<include refid="selectMenuVo"/> <include refid="selectMenuVo"/>
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" parameterType="com.muyu.system.domain.SysMenu" resultMap="SysMenuResult">
<include refid="selectMenuVo"/>
<where>
<if test="parentId!=null">
and menu_id=#{parentId}
</if>
</where>
</select>
<select id="selectSysMenuList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"/>
<where>
menu_id in(
<foreach collection="list" 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="list" separator="," item="id">
#{id}
</foreach>
)
</where>
order by parent_id,order_num
</select>
<update id="updateMenu" parameterType="com.muyu.system.domain.SysMenu"> <update id="updateMenu" parameterType="com.muyu.system.domain.SysMenu">
update sys_menu update sys_menu