diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java index 4e90134..bf11d5b 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserController.java @@ -1,5 +1,6 @@ package com.muyu.system.controller; +import com.muyu.common.core.constant.CacheConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.core.utils.StringUtils; 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.log.annotation.Log; 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.RequiresPermissions; import com.muyu.common.security.utils.SecurityUtils; @@ -243,9 +245,13 @@ public class SysUserController extends BaseController { userService.checkUserDataScope(user.getUserId()); user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); user.setUpdateBy(SecurityUtils.getUsername()); + +// redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + user.getUserId()); + return toAjax(userService.resetPwd(user)); } + /** * 状态修改 */ diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java index 8ceaaa0..58aa951 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysMenuMapper.java @@ -21,6 +21,19 @@ public interface SysMenuMapper extends BaseMapper { */ public List selectMenuList (SysMenu menu); + /** + * 搜索系统 + * @return + */ + public List selectSysMenList(@Param("longs") List longs); + + /** + * + * @param longs + * @return + */ + public List selectSysChdMenuList(@Param("longs") List longs); + /** * 根据用户所有权限 * diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java index e4e2ec8..eb24b35 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysMenuServiceImpl.java @@ -43,31 +43,96 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 根据用户查询系统菜单列表 * * @param userId 用户ID - * * @return 菜单列表 */ @Override - public List selectMenuList (Long userId) { + public List selectMenuList(Long userId) { return selectMenuList(new SysMenu(), userId); } + /** + * 系统搜索 递归调用 向上查找每个采单对应父级 + * + * @param menuList + * @return + */ + public List selectSysMenList(List menuList) { +// 获取父级ID 返回 流 id去重 + List longs = menuList.stream() + .map(SysMenu::getParentId) + .filter(parentId -> parentId != 0) + .distinct() + .toList(); +// 没有找到直接返回null + if (longs.size() == 0) { + return null; + } +// 递归调用自身 + List sysMenus = menuMapper.selectSysMenList(longs); +// 自己调自己 + List sysMenus1 = selectSysMenList(sysMenus); + if (sysMenus1 != null) { + sysMenus.addAll(sysMenus1); + } + + return sysMenus; + } + + + public List selectSysChdMenuList(List menuList) { +// stream流 获取id + List longs = menuList.stream() + .map(SysMenu::getMenuId) + .toList(); +// 跟进parentId 值查询数据库终结对应的子菜单信息 + List sysMenus = menuMapper.selectSysChdMenuList(longs); + if (sysMenus != null && sysMenus.size() != 0) { +// 如果有 调用selectSysMenList 继续递归查询 子菜单 + List sysMenus1 = selectSysChdMenuList(sysMenus); + if (sysMenus1 != null) { +// 不为空 添加原始数据 + sysMenus.addAll(sysMenus1); + } + } else { +// 没有查到任何条件的信息 + return null; + } + return sysMenus; + } + /** * 查询系统菜单列表 * * @param menu 菜单信息 - * * @return 菜单列表 */ @Override - public List selectMenuList (SysMenu menu, Long userId) { + public List selectMenuList(SysMenu menu, Long userId) { List menuList = null; // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { menuList = menuMapper.selectMenuList(menu); +// 调用秭归 + List sysMenus1 = selectSysMenList(menuList); + if (sysMenus1 != null && sysMenus1.size() != 0) { + menuList.addAll(sysMenus1); + } + + List 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; } @@ -75,11 +140,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 根据用户ID查询权限 * * @param userId 用户ID - * * @return 权限列表 */ @Override - public Set selectMenuPermsByUserId (Long userId) { + public Set selectMenuPermsByUserId(Long userId) { List perms = menuMapper.selectMenuPermsByUserId(userId); Set permsSet = new HashSet<>(); for (String perm : perms) { @@ -94,11 +158,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 根据角色ID查询权限 * * @param roleId 角色ID - * * @return 权限列表 */ @Override - public Set selectMenuPermsByRoleId (Long roleId) { + public Set selectMenuPermsByRoleId(Long roleId) { List perms = menuMapper.selectMenuPermsByRoleId(roleId); Set permsSet = new HashSet<>(); for (String perm : perms) { @@ -113,11 +176,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 根据用户ID查询菜单 * * @param userId 用户名称 - * * @return 菜单列表 */ @Override - public List selectMenuTreeByUserId (Long userId) { + public List selectMenuTreeByUserId(Long userId) { List menus = null; if (SecurityUtils.isAdmin(userId)) { menus = menuMapper.selectMenuTreeAll(); @@ -131,11 +193,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 根据角色ID查询菜单树信息 * * @param roleId 角色ID - * * @return 选中菜单列表 */ @Override - public List selectMenuListByRoleId (Long roleId) { + public List selectMenuListByRoleId(Long roleId) { SysRole role = roleMapper.selectRoleById(roleId); return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); } @@ -144,11 +205,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 构建前端路由所需要的菜单 * * @param menus 菜单列表 - * * @return 路由列表 */ @Override - public List buildMenus (List menus) { + public List buildMenus(List menus) { List routers = new LinkedList(); for (SysMenu menu : menus) { RouterVo router = new RouterVo(); @@ -196,14 +256,13 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 构建前端所需要树结构 * * @param menus 菜单列表 - * * @return 树结构列表 */ @Override - public List buildMenuTree (List menus) { + public List buildMenuTree(List menus) { List returnList = new ArrayList(); List tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()); - for (Iterator iterator = menus.iterator() ; iterator.hasNext() ; ) { + for (Iterator iterator = menus.iterator(); iterator.hasNext(); ) { SysMenu menu = (SysMenu) iterator.next(); // 如果是顶级节点, 遍历该父节点的所有子节点 if (!tempList.contains(menu.getParentId())) { @@ -221,11 +280,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 构建前端所需要下拉树结构 * * @param menus 菜单列表 - * * @return 下拉树结构列表 */ @Override - public List buildMenuTreeSelect (List menus) { + public List buildMenuTreeSelect(List menus) { List menuTrees = buildMenuTree(menus); return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); } @@ -234,11 +292,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 根据菜单ID查询信息 * * @param menuId 菜单ID - * * @return 菜单信息 */ @Override - public SysMenu selectMenuById (Long menuId) { + public SysMenu selectMenuById(Long menuId) { return menuMapper.selectMenuById(menuId); } @@ -246,11 +303,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 是否存在菜单子节点 * * @param menuId 菜单ID - * * @return 结果 */ @Override - public boolean hasChildByMenuId (Long menuId) { + public boolean hasChildByMenuId(Long menuId) { int result = menuMapper.hasChildByMenuId(menuId); return result > 0; } @@ -259,11 +315,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 查询菜单使用数量 * * @param menuId 菜单ID - * * @return 结果 */ @Override - public boolean checkMenuExistRole (Long menuId) { + public boolean checkMenuExistRole(Long menuId) { int result = roleMenuMapper.checkMenuExistRole(menuId); return result > 0; } @@ -272,11 +327,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 新增保存菜单信息 * * @param menu 菜单信息 - * * @return 结果 */ @Override - public int insertMenu (SysMenu menu) { + public int insertMenu(SysMenu menu) { return menuMapper.insertMenu(menu); } @@ -284,11 +338,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 修改保存菜单信息 * * @param menu 菜单信息 - * * @return 结果 */ @Override - public int updateMenu (SysMenu menu) { + public int updateMenu(SysMenu menu) { return menuMapper.updateMenu(menu); } @@ -296,11 +349,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 删除菜单管理信息 * * @param menuId 菜单ID - * * @return 结果 */ @Override - public int deleteMenuById (Long menuId) { + public int deleteMenuById(Long menuId) { return menuMapper.deleteMenuById(menuId); } @@ -308,11 +360,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 校验菜单名称是否唯一 * * @param menu 菜单信息 - * * @return 结果 */ @Override - public boolean checkMenuNameUnique (SysMenu menu) { + public boolean checkMenuNameUnique(SysMenu menu) { Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId(); SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId()); if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) { @@ -325,10 +376,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 获取路由名称 * * @param menu 菜单信息 - * * @return 路由名称 */ - public String getRouteName (SysMenu menu) { + public String getRouteName(SysMenu menu) { String routerName = StringUtils.capitalize(menu.getPath()); // 非外链并且是一级目录(类型为目录) if (isMenuFrame(menu)) { @@ -341,10 +391,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 获取路由地址 * * @param menu 菜单信息 - * * @return 路由地址 */ - public String getRouterPath (SysMenu menu) { + public String getRouterPath(SysMenu menu) { String routerPath = menu.getPath(); // 内链打开外网方式 if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) { @@ -366,10 +415,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 获取组件信息 * * @param menu 菜单信息 - * * @return 组件信息 */ - public String getComponent (SysMenu menu) { + public String getComponent(SysMenu menu) { String component = UserConstants.LAYOUT; if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) { component = menu.getComponent(); @@ -385,10 +433,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 是否为菜单内部跳转 * * @param menu 菜单信息 - * * @return 结果 */ - public boolean isMenuFrame (SysMenu menu) { + public boolean isMenuFrame(SysMenu menu) { return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) && menu.getIsFrame().equals(UserConstants.NO_FRAME); } @@ -397,10 +444,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 是否为内链组件 * * @param menu 菜单信息 - * * @return 结果 */ - public boolean isInnerLink (SysMenu menu) { + public boolean isInnerLink(SysMenu menu) { return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); } @@ -408,10 +454,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 是否为parent_view组件 * * @param menu 菜单信息 - * * @return 结果 */ - public boolean isParentView (SysMenu menu) { + public boolean isParentView(SysMenu menu) { return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType()); } @@ -420,12 +465,11 @@ public class SysMenuServiceImpl extends ServiceImpl impl * * @param list 分类表 * @param parentId 传入的父节点ID - * * @return String */ - public List getChildPerms (List list, int parentId) { + public List getChildPerms(List list, int parentId) { List returnList = new ArrayList(); - for (Iterator iterator = list.iterator() ; iterator.hasNext() ; ) { + for (Iterator iterator = list.iterator(); iterator.hasNext(); ) { SysMenu t = (SysMenu) iterator.next(); // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 if (t.getParentId() == parentId) { @@ -442,7 +486,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl * @param list 分类表 * @param t 子节点 */ - private void recursionFn (List list, SysMenu t) { + private void recursionFn(List list, SysMenu t) { // 得到子节点列表 List childList = getChildList(list, t); t.setChildren(childList); @@ -456,7 +500,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl /** * 得到子节点列表 */ - private List getChildList (List list, SysMenu t) { + private List getChildList(List list, SysMenu t) { List tlist = new ArrayList(); Iterator it = list.iterator(); while (it.hasNext()) { @@ -471,7 +515,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl /** * 判断是否有子节点 */ - private boolean hasChild (List list, SysMenu t) { + private boolean hasChild(List list, SysMenu t) { return getChildList(list, t).size() > 0; } @@ -480,7 +524,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl * * @return 替换后的内链域名 */ - public String innerLinkReplaceEach (String path) { + public String innerLinkReplaceEach(String path) { return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"}, new String[]{"", "", "", "/", "/"}); } diff --git a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml index 1dac5c4..7e4bc39 100644 --- a/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/muyu-modules/muyu-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -186,6 +186,30 @@ where menu_name=#{menuName} and parent_id = #{parentId} limit 1 + + + + update sys_menu