From ab00e7ece8badd732b7ccfedd7b63af5183c1f43 Mon Sep 17 00:00:00 2001 From: 2812875475 <2812875475@qq.com> Date: Fri, 12 Apr 2024 20:43:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=BC=98=E5=8C=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysMenuController.java | 10 +- .../controller/SysUserOnlineController.java | 38 ++---- .../java/com/muyu/system/domain/SysMenu.java | 83 ++++++----- .../muyu/system/service/SysMenuService.java | 2 + .../service/impl/SysMenuServiceImpl.java | 129 +++++++++--------- 5 files changed, 138 insertions(+), 124 deletions(-) diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysMenuController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysMenuController.java index a528723..301d2f1 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysMenuController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysMenuController.java @@ -30,8 +30,6 @@ public class SysMenuController extends BaseController { private SysMenuService menuService; - - /** * 获取菜单列表 */ @@ -43,6 +41,14 @@ public class SysMenuController extends BaseController { return success(menus); } + @RequiresPermissions("system:menu:list") + @GetMapping("/listTwo") + public Result listTwo(SysMenu menu) { + Long userId = SecurityUtils.getUserId(); + List menusTwo = menuService.selectMenu(menu, userId); + return success(menusTwo); + } + /** * 根据菜单编号获取详细信息 */ diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java index 93a0110..5211dce 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/controller/SysUserOnlineController.java @@ -38,20 +38,7 @@ public class SysUserOnlineController extends BaseController { @RequiresPermissions("monitor:online:list") @GetMapping("/list") public Result> list (String ipaddr, String userName) { - Collection keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); - List userOnlineList = new ArrayList(); - for (String key : keys) { - LoginUser user = redisService.getCacheObject(key); - if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { - userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); - } else if (StringUtils.isNotEmpty(ipaddr)) { - userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); - } else if (StringUtils.isNotEmpty(userName)) { - userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); - } else { - userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); - } - } + List userOnlineList = getUserOnlineList(ipaddr, userName); Collections.reverse(userOnlineList); userOnlineList.removeAll(Collections.singleton(null)); return getDataTable(userOnlineList); @@ -68,12 +55,21 @@ public class SysUserOnlineController extends BaseController { return success(); } + + @PostMapping("/findTokenId") public Result findTokenId(@RequestBody TokenResp tokenResp) { - String name = tokenResp.getName(); - String ipaddr = tokenResp.getIpaddr(); - String userName = tokenResp.getUserName(); + List userOnlineList = getUserOnlineList(tokenResp.getIpaddr() ,tokenResp.getUserName() ); + String id=""; + for (SysUserOnline sysUserOnline : userOnlineList) { + if (sysUserOnline.getUserName().equals(tokenResp.getName())) { + id = sysUserOnline.getTokenId(); + } + } + return Result.success(id); + } + private List getUserOnlineList(String ipaddr, String userName) { Collection keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); List userOnlineList = new ArrayList(); for (String key : keys) { @@ -88,13 +84,7 @@ public class SysUserOnlineController extends BaseController { userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); } } - String id=""; - for (SysUserOnline sysUserOnline : userOnlineList) { - if (sysUserOnline.getUserName().equals(name)) { - id = sysUserOnline.getTokenId(); - } - } - return Result.success(id); + return userOnlineList; } } diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysMenu.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysMenu.java index b7f4558..74e16b5 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysMenu.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/SysMenu.java @@ -1,6 +1,7 @@ package com.muyu.system.domain; import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.system.domain.vo.Mean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -8,7 +9,6 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; - import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @@ -108,143 +108,158 @@ public class SysMenu extends BaseEntity { */ private List children = new ArrayList(); - public Long getMenuId () { + public static SysMenu meanBuild(Mean mean1, Long id) { + return SysMenu.builder() + .menuId(id) + .menuName(mean1.getMenuName()) + .parentId(mean1.getParentId()) + .orderNum(mean1.getOrderNum()) + .path(mean1.getPath()) + .component(mean1.getComponent()) + .query(mean1.getQuery()) + .isFrame(String.valueOf(mean1.getIsFrame())) + .isCache(String.valueOf(mean1.getIsCache())) + .menuType(mean1.getMenuType()) + .build(); + } + + public Long getMenuId() { return menuId; } - public void setMenuId (Long menuId) { + public void setMenuId(Long menuId) { this.menuId = menuId; } @NotBlank(message = "菜单名称不能为空") @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符") - public String getMenuName () { + public String getMenuName() { return menuName; } - public void setMenuName (String menuName) { + public void setMenuName(String menuName) { this.menuName = menuName; } - public String getParentName () { + public String getParentName() { return parentName; } - public void setParentName (String parentName) { + public void setParentName(String parentName) { this.parentName = parentName; } - public Long getParentId () { + public Long getParentId() { return parentId; } - public void setParentId (Long parentId) { + public void setParentId(Long parentId) { this.parentId = parentId; } @NotNull(message = "显示顺序不能为空") - public Integer getOrderNum () { + public Integer getOrderNum() { return orderNum; } - public void setOrderNum (Integer orderNum) { + public void setOrderNum(Integer orderNum) { this.orderNum = orderNum; } @Size(min = 0, max = 200, message = "路由地址不能超过200个字符") - public String getPath () { + public String getPath() { return path; } - public void setPath (String path) { + public void setPath(String path) { this.path = path; } @Size(min = 0, max = 200, message = "组件路径不能超过255个字符") - public String getComponent () { + public String getComponent() { return component; } - public void setComponent (String component) { + public void setComponent(String component) { this.component = component; } - public String getQuery () { + public String getQuery() { return query; } - public void setQuery (String query) { + public void setQuery(String query) { this.query = query; } - public String getIsFrame () { + public String getIsFrame() { return isFrame; } - public void setIsFrame (String isFrame) { + public void setIsFrame(String isFrame) { this.isFrame = isFrame; } - public String getIsCache () { + public String getIsCache() { return isCache; } - public void setIsCache (String isCache) { + public void setIsCache(String isCache) { this.isCache = isCache; } @NotBlank(message = "菜单类型不能为空") - public String getMenuType () { + public String getMenuType() { return menuType; } - public void setMenuType (String menuType) { + public void setMenuType(String menuType) { this.menuType = menuType; } - public String getVisible () { + public String getVisible() { return visible; } - public void setVisible (String visible) { + public void setVisible(String visible) { this.visible = visible; } - public String getStatus () { + public String getStatus() { return status; } - public void setStatus (String status) { + public void setStatus(String status) { this.status = status; } @Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符") - public String getPerms () { + public String getPerms() { return perms; } - public void setPerms (String perms) { + public void setPerms(String perms) { this.perms = perms; } - public String getIcon () { + public String getIcon() { return icon; } - public void setIcon (String icon) { + public void setIcon(String icon) { this.icon = icon; } - public List getChildren () { + public List getChildren() { return children; } - public void setChildren (List children) { + public void setChildren(List children) { this.children = children; } @Override - public String toString () { + public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("menuId", getMenuId()) .append("menuName", getMenuName()) diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysMenuService.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysMenuService.java index 29bfb07..cae334d 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysMenuService.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysMenuService.java @@ -158,4 +158,6 @@ public interface SysMenuService extends IService { * @return 结果 */ public boolean checkMenuNameUnique (SysMenu menu); + + List selectMenu(SysMenu menu, Long userId); } 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 466b933..f9beaed 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 @@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.function.Supplier; import java.util.stream.Collectors; /** @@ -59,29 +60,6 @@ public class SysMenuServiceImpl extends ServiceImpl impl } - private void getParentIdList(List ids, Long parentId) { - - if (parentId.equals(0L)) { - return; - } - Mean mean = this.meanService.getOne(new LambdaQueryWrapper<>() {{ - eq(Mean::getMenuId, parentId); - }}); - - ids.add(mean.getMenuId()); - getParentIdList(ids, mean.getParentId()); - - } - - private void getSonIdList(List sonIds, Long menuId) { - Mean mean = this.meanService.getOne(new LambdaQueryWrapper<>() {{ - eq(Mean::getParentId, menuId); - }}); - - sonIds.add(mean.getMenuId()); - getParentIdList(sonIds, mean.getMenuId()); - } - /** * 查询系统菜单列表 * @@ -91,22 +69,6 @@ public class SysMenuServiceImpl extends ServiceImpl impl @Override public List selectMenuList(SysMenu menu, Long userId) { - -// List ids = new ArrayList<>(); -// List sonIds = new ArrayList<>(); -// if (menu != null) { -// Mean mean = this.meanService.getOne(new LambdaQueryWrapper<>() {{ -// eq(Mean::getMenuName, menu.getMenuName()); -// }}); -// ids = new ArrayList<>(); -// sonIds = new ArrayList<>(); -// getParentIdList(ids, mean.getParentId()); -// getSonIdList(sonIds, mean.getMenuId()); -// } -// -// System.out.println(ids); -// System.out.println(sonIds); - List menuList = null; // 管理员显示所有菜单信息 if (SysUser.isAdmin(userId)) { @@ -116,40 +78,19 @@ public class SysMenuServiceImpl extends ServiceImpl impl menuList = menuMapper.selectMenuListByUserId(menu); } -// List finalMenuList = menuList; -// ids.forEach(id -> { -// Mean mean1 = this.meanService.getOne(new LambdaQueryWrapper<>() {{ -// eq(Mean::getMenuId, id); -// }}); -// finalMenuList.add( -// SysMenu.builder() -// .menuId(id) -// .menuName(mean1.getMenuName()) -// .parentId(mean1.getParentId()) -// .orderNum(mean1.getOrderNum()) -// .path(mean1.getPath()) -// .component(mean1.getComponent()) -// .query(mean1.getQuery()) -// .isFrame(String.valueOf(mean1.getIsFrame())) -// .isCache(String.valueOf(mean1.getIsCache())) -// .menuType(mean1.getMenuType()) -// .build() -// ); -// }); - if (menuList.size() == 1) { - getParentList(menuList,menuList.get(0)); - + getParentList(menuList, menuList.get(0)); List childList = this.getChildList(menuMapper.selectMenuList(null), menuList.get(0)); menuList.addAll(childList); - } return menuList; } + /** + * 通过id 找儿子 + */ private void getParentList(List menuList, SysMenu sysMenu) { - SysMenu menu = this.selectMenuById(sysMenu.getParentId()); if (menu != null) { menuList.add(menu); @@ -158,6 +99,65 @@ public class SysMenuServiceImpl extends ServiceImpl impl } + /** + * 获取父节点 和子节点 + */ + private void getParentIdAndSonIdList(List ids, Long parentId, Long menuId) { + + if (parentId.equals(0L)) { + return; + } + Mean mean = this.meanService.getOne(new LambdaQueryWrapper<>() {{ + eq(Mean::getMenuId, parentId); + }}); + + List longList = meanService.list(new LambdaQueryWrapper<>() {{ + eq(Mean::getParentId, menuId); + }}).stream().map( + Mean::getMenuId + ).toList(); + + ids.addAll(longList.stream().distinct().toList()); + ids.add(mean.getMenuId()); + getParentIdAndSonIdList(ids, mean.getParentId(), menuId); + } + + + @Override + public List selectMenu(SysMenu menu, Long userId) { + List ids = new ArrayList<>(); + if (menu != null) { + Mean mean = meanService.getOne(new LambdaQueryWrapper() {{ + eq(Mean::getMenuName, menu.getMenuName()); + }}); + if (mean != null) { + ids = new ArrayList<>(); + getParentIdAndSonIdList(ids, mean.getParentId(), mean.getMenuId()); + } + } + List menuList = null; + + // 管理员显示所有菜单信息 + if (SysUser.isAdmin(userId)) { + menuList = menuMapper.selectMenuList(menu); + } else { + menu.getParams().put("userId", userId); + menuList = menuMapper.selectMenuListByUserId(menu); + } + + List finalMenuList = menuList; + ids.forEach(id -> { + finalMenuList.add( + SysMenu.meanBuild(this.meanService.getOne(new LambdaQueryWrapper<>() {{ + eq(Mean::getMenuId, id); + }}),id) + ); + }); + + return finalMenuList; + } + + /** * 根据用户ID查询权限 * @@ -394,6 +394,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl return UserConstants.UNIQUE; } + /** * 获取路由名称 *