搜索菜单优化(指定)
parent
47571b1f06
commit
d5d07a6388
|
@ -1,5 +1,6 @@
|
||||||
package com.muyu.system.controller;
|
package com.muyu.system.controller;
|
||||||
|
|
||||||
|
import com.muyu.common.core.constant.CacheConstants;
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
import com.muyu.common.core.utils.StringUtils;
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
import com.muyu.common.core.utils.poi.ExcelUtil;
|
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||||
|
@ -7,6 +8,7 @@ import com.muyu.common.core.web.controller.BaseController;
|
||||||
import com.muyu.common.core.web.page.TableDataInfo;
|
import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
import com.muyu.common.log.annotation.Log;
|
import com.muyu.common.log.annotation.Log;
|
||||||
import com.muyu.common.log.enums.BusinessType;
|
import com.muyu.common.log.enums.BusinessType;
|
||||||
|
import com.muyu.common.redis.service.RedisService;
|
||||||
import com.muyu.common.security.annotation.InnerAuth;
|
import com.muyu.common.security.annotation.InnerAuth;
|
||||||
import com.muyu.common.security.annotation.RequiresPermissions;
|
import com.muyu.common.security.annotation.RequiresPermissions;
|
||||||
import com.muyu.common.security.utils.SecurityUtils;
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
|
@ -243,9 +245,13 @@ public class SysUserController extends BaseController {
|
||||||
userService.checkUserDataScope(user.getUserId());
|
userService.checkUserDataScope(user.getUserId());
|
||||||
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
|
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
|
||||||
user.setUpdateBy(SecurityUtils.getUsername());
|
user.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
|
||||||
|
// redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + user.getUserId());
|
||||||
|
|
||||||
return toAjax(userService.resetPwd(user));
|
return toAjax(userService.resetPwd(user));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态修改
|
* 状态修改
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -21,6 +21,19 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||||
*/
|
*/
|
||||||
public List<SysMenu> selectMenuList (SysMenu menu);
|
public List<SysMenu> selectMenuList (SysMenu menu);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索系统
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<SysMenu> selectSysMenList(@Param("longs") List<Long> longs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param longs
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<SysMenu> selectSysChdMenuList(@Param("longs") List<Long> longs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据用户所有权限
|
* 根据用户所有权限
|
||||||
*
|
*
|
||||||
|
|
|
@ -43,7 +43,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 根据用户查询系统菜单列表
|
* 根据用户查询系统菜单列表
|
||||||
*
|
*
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
*
|
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -51,11 +50,60 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
return selectMenuList(new SysMenu(), userId);
|
return selectMenuList(new SysMenu(), userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统搜索 递归调用 向上查找每个采单对应父级
|
||||||
|
*
|
||||||
|
* @param menuList
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<SysMenu> selectSysMenList(List<SysMenu> menuList) {
|
||||||
|
// 获取父级ID 返回 流 id去重
|
||||||
|
List<Long> longs = menuList.stream()
|
||||||
|
.map(SysMenu::getParentId)
|
||||||
|
.filter(parentId -> parentId != 0)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
// 没有找到直接返回null
|
||||||
|
if (longs.size() == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// 递归调用自身
|
||||||
|
List<SysMenu> sysMenus = menuMapper.selectSysMenList(longs);
|
||||||
|
// 自己调自己
|
||||||
|
List<SysMenu> sysMenus1 = selectSysMenList(sysMenus);
|
||||||
|
if (sysMenus1 != null) {
|
||||||
|
sysMenus.addAll(sysMenus1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sysMenus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<SysMenu> selectSysChdMenuList(List<SysMenu> menuList) {
|
||||||
|
// stream流 获取id
|
||||||
|
List<Long> longs = menuList.stream()
|
||||||
|
.map(SysMenu::getMenuId)
|
||||||
|
.toList();
|
||||||
|
// 跟进parentId 值查询数据库终结对应的子菜单信息
|
||||||
|
List<SysMenu> sysMenus = menuMapper.selectSysChdMenuList(longs);
|
||||||
|
if (sysMenus != null && sysMenus.size() != 0) {
|
||||||
|
// 如果有 调用selectSysMenList 继续递归查询 子菜单
|
||||||
|
List<SysMenu> sysMenus1 = selectSysChdMenuList(sysMenus);
|
||||||
|
if (sysMenus1 != null) {
|
||||||
|
// 不为空 添加原始数据
|
||||||
|
sysMenus.addAll(sysMenus1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 没有查到任何条件的信息
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return sysMenus;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询系统菜单列表
|
* 查询系统菜单列表
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -64,10 +112,27 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
// 管理员显示所有菜单信息
|
// 管理员显示所有菜单信息
|
||||||
if (SysUser.isAdmin(userId)) {
|
if (SysUser.isAdmin(userId)) {
|
||||||
menuList = menuMapper.selectMenuList(menu);
|
menuList = menuMapper.selectMenuList(menu);
|
||||||
|
// 调用秭归
|
||||||
|
List<SysMenu> sysMenus1 = selectSysMenList(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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +140,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 根据用户ID查询权限
|
* 根据用户ID查询权限
|
||||||
*
|
*
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
*
|
|
||||||
* @return 权限列表
|
* @return 权限列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -94,7 +158,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 根据角色ID查询权限
|
* 根据角色ID查询权限
|
||||||
*
|
*
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
*
|
|
||||||
* @return 权限列表
|
* @return 权限列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -113,7 +176,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 根据用户ID查询菜单
|
* 根据用户ID查询菜单
|
||||||
*
|
*
|
||||||
* @param userId 用户名称
|
* @param userId 用户名称
|
||||||
*
|
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -131,7 +193,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 根据角色ID查询菜单树信息
|
* 根据角色ID查询菜单树信息
|
||||||
*
|
*
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
*
|
|
||||||
* @return 选中菜单列表
|
* @return 选中菜单列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -144,7 +205,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 构建前端路由所需要的菜单
|
* 构建前端路由所需要的菜单
|
||||||
*
|
*
|
||||||
* @param menus 菜单列表
|
* @param menus 菜单列表
|
||||||
*
|
|
||||||
* @return 路由列表
|
* @return 路由列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -196,7 +256,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 构建前端所需要树结构
|
* 构建前端所需要树结构
|
||||||
*
|
*
|
||||||
* @param menus 菜单列表
|
* @param menus 菜单列表
|
||||||
*
|
|
||||||
* @return 树结构列表
|
* @return 树结构列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -221,7 +280,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 构建前端所需要下拉树结构
|
* 构建前端所需要下拉树结构
|
||||||
*
|
*
|
||||||
* @param menus 菜单列表
|
* @param menus 菜单列表
|
||||||
*
|
|
||||||
* @return 下拉树结构列表
|
* @return 下拉树结构列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -234,7 +292,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 根据菜单ID查询信息
|
* 根据菜单ID查询信息
|
||||||
*
|
*
|
||||||
* @param menuId 菜单ID
|
* @param menuId 菜单ID
|
||||||
*
|
|
||||||
* @return 菜单信息
|
* @return 菜单信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -246,7 +303,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 是否存在菜单子节点
|
* 是否存在菜单子节点
|
||||||
*
|
*
|
||||||
* @param menuId 菜单ID
|
* @param menuId 菜单ID
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -259,7 +315,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 查询菜单使用数量
|
* 查询菜单使用数量
|
||||||
*
|
*
|
||||||
* @param menuId 菜单ID
|
* @param menuId 菜单ID
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -272,7 +327,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 新增保存菜单信息
|
* 新增保存菜单信息
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -284,7 +338,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 修改保存菜单信息
|
* 修改保存菜单信息
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -296,7 +349,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 删除菜单管理信息
|
* 删除菜单管理信息
|
||||||
*
|
*
|
||||||
* @param menuId 菜单ID
|
* @param menuId 菜单ID
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -308,7 +360,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 校验菜单名称是否唯一
|
* 校验菜单名称是否唯一
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -325,7 +376,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 获取路由名称
|
* 获取路由名称
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 路由名称
|
* @return 路由名称
|
||||||
*/
|
*/
|
||||||
public String getRouteName(SysMenu menu) {
|
public String getRouteName(SysMenu menu) {
|
||||||
|
@ -341,7 +391,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 获取路由地址
|
* 获取路由地址
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 路由地址
|
* @return 路由地址
|
||||||
*/
|
*/
|
||||||
public String getRouterPath(SysMenu menu) {
|
public String getRouterPath(SysMenu menu) {
|
||||||
|
@ -366,7 +415,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 获取组件信息
|
* 获取组件信息
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 组件信息
|
* @return 组件信息
|
||||||
*/
|
*/
|
||||||
public String getComponent(SysMenu menu) {
|
public String getComponent(SysMenu menu) {
|
||||||
|
@ -385,7 +433,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 是否为菜单内部跳转
|
* 是否为菜单内部跳转
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public boolean isMenuFrame(SysMenu menu) {
|
public boolean isMenuFrame(SysMenu menu) {
|
||||||
|
@ -397,7 +444,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 是否为内链组件
|
* 是否为内链组件
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public boolean isInnerLink(SysMenu menu) {
|
public boolean isInnerLink(SysMenu menu) {
|
||||||
|
@ -408,7 +454,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
* 是否为parent_view组件
|
* 是否为parent_view组件
|
||||||
*
|
*
|
||||||
* @param menu 菜单信息
|
* @param menu 菜单信息
|
||||||
*
|
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public boolean isParentView(SysMenu menu) {
|
public boolean isParentView(SysMenu menu) {
|
||||||
|
@ -420,7 +465,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
*
|
*
|
||||||
* @param list 分类表
|
* @param list 分类表
|
||||||
* @param parentId 传入的父节点ID
|
* @param parentId 传入的父节点ID
|
||||||
*
|
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) {
|
public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) {
|
||||||
|
|
|
@ -186,6 +186,30 @@
|
||||||
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
|
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectSysMenList" 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 id="updateMenu" parameterType="com.muyu.system.domain.SysMenu">
|
||||||
update sys_menu
|
update sys_menu
|
||||||
<set>
|
<set>
|
||||||
|
|
Loading…
Reference in New Issue