查找菜单出现父子元素
parent
9cb3404b26
commit
738ad0626b
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取路由名称
|
* 获取路由名称
|
||||||
*
|
*
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue