From 1da190e7f267bcd3501884f3aeaac7476850fec7 Mon Sep 17 00:00:00 2001
From: EricsHu <hrr145632>
Date: 星期日, 26 十一月 2023 17:53:03 +0800
Subject: [PATCH] 优化菜单查询

---
 src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java |   58 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 49 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java b/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java
index 27d3b60..b16bd6b 100644
--- a/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java
+++ b/src/main/java/com/qxueyou/scc/user/service/impl/UserRoleService.java
@@ -1,5 +1,6 @@
 package com.qxueyou.scc.user.service.impl;
 
+import com.qxueyou.scc.admin.classes.model.ClsClass;
 import com.qxueyou.scc.base.model.Result;
 import com.qxueyou.scc.base.service.impl.CommonAppService;
 import com.qxueyou.scc.base.util.ClientUtils;
@@ -17,9 +18,10 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
- * 角色
+ * 瑙掕壊
  * 
  * @author ody.yuan
  *
@@ -29,8 +31,9 @@
 	@Autowired
 	UserRoleDAO dao;
 
+
 	/**
-	 * 得到菜单
+	 * 寰楀埌鑿滃崟
 	 * 
 	 * @return
 	 */
@@ -40,13 +43,13 @@
 	}
 
 	/**
-	 * 得到菜单
+	 * 寰楀埌鑿滃崟
 	 * 
 	 * @return
 	 */
 	private Result queryCommonMenus(String roleId) {
 
-		// 按角色过滤
+		// 鎸夎鑹茶繃婊�
 
 		Result result = new Result(true);
 
@@ -85,7 +88,7 @@
 	}
 
 	/**
-	 * 取得当前角色是否编辑过 按钮权限,有记录就是编辑过
+	 * 鍙栧緱褰撳墠瑙掕壊鏄惁缂栬緫杩� 鎸夐挳鏉冮檺,鏈夎褰曞氨鏄紪杈戣繃
 	 * 
 	 * @return
 	 */
@@ -119,20 +122,56 @@
 	@Override
 	public Result delete(String userId) {
 		boolean result = dao.delete(userId);
-		String messge = "移除成功";
+		String messge = "绉婚櫎鎴愬姛";
 		if (!result) {
-			messge = "移除失败";
+			messge = "绉婚櫎澶辫触";
 		}
 		return new Result(result, messge);
 	}
 
 	@Override
 	public Result queryRoleDetail(String roleId) {
-		List<Map<String, Object>> findMenuLstById = dao.findMenuLstById(roleId);
+		List<Map<String, Object>> findRoleMenuLstById = dao.findMenuLstById(roleId);
 		UserRole userRole = read(UserRole.class, roleId);
+///////////////////////////////////////////////////鏂板鏂规硶
 
+
+ 		StringBuffer hql=new StringBuffer( "select m.name as name ,m.menuId as menuId  ,m.parentMenuId as parentMenuId ,m.level as level  from SysMenu m where deleteFlag is false ");
+//鑾峰彇鎵�鏈夎彍鍗�
+		List<SysMenu> sysMenusAll = new ArrayList<>();
+		List<Map<String, Object>> listWithMapByHql = findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap());
+		//灏唌ap杞寲鎴怱ysMenu瀹炰綋绫�
+		for (Map<String, Object> stringObjectMap : listWithMapByHql) {
+			SysMenu sysMenu = new SysMenu();
+			sysMenu.setMenuId(stringObjectMap.get("menuId").toString());
+			sysMenu.setName(stringObjectMap.get("name").toString());
+			sysMenu.setParentMenuId(stringObjectMap.get("parentMenuId").toString());
+			sysMenu.setLevel(Integer.parseInt(stringObjectMap.get("level").toString()));
+			sysMenusAll.add(sysMenu);
+		}
+		//鑾峰彇涓�绾ц彍鍗�
+		List<SysMenu> firstMenuList = sysMenusAll.stream().filter
+				//杩囨护鍑轰竴绾ц彍鍗�
+						(s -> s.getLevel()==0)
+				// 杩斿洖list闆嗗悎褰㈠紡
+				.collect(Collectors.toList());
+		// 閬嶅巻涓�绾ц彍鍗�,鏋勯�犺彍鍗曟爲
+		for (SysMenu menu : firstMenuList) {
+			getChildrenList(menu, sysMenusAll);
+		}
+		///////////////////////////////////////////////////鏂板鏂规硶
 		return new Result(true, "success",
-				CollectionUtils.newObjectMap("roleName", userRole.getName(), "menuLst", findMenuLstById));
+				CollectionUtils.newObjectMap("roleName", userRole.getName(), "menuLstAll", firstMenuList,"roleMenuLstById",findRoleMenuLstById));
+	}
+
+	public SysMenu getChildrenList(SysMenu sysMenu, List<SysMenu>  sysMenuList ) {
+		for (SysMenu menu : sysMenuList) {
+			if (menu.getParentMenuId().equals(sysMenu.getMenuId())) {
+
+				sysMenu.getChildrenList().add(getChildrenList(menu, sysMenuList));
+			}
+		}
+		return sysMenu;
 	}
 
 	@Override
@@ -172,4 +211,5 @@
 		return dao.addTeachers(teacherIds, roleId);
 	}
 
+
 }

--
Gitblit v1.8.0