From 6246673dd42d9faeab27c1372e3eff6aa58d3f0c Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期日, 18 一月 2026 15:23:29 +0800
Subject: [PATCH] 倾斜度
---
src/main/java/com/zy/asrs/controller/AppVersionController.java | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 100 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/AppVersionController.java b/src/main/java/com/zy/asrs/controller/AppVersionController.java
index 2b5aed4..16a6111 100644
--- a/src/main/java/com/zy/asrs/controller/AppVersionController.java
+++ b/src/main/java/com/zy/asrs/controller/AppVersionController.java
@@ -233,19 +233,107 @@
@RequestMapping("/menu/pda/auth")
@ManagerAuth
public R menuPda(){
- Long userId = getUserId();
- List<RolePermission> rolePermissions;
- if (userId == 9527L) {
- rolePermissions = rolePermissionService.selectList(new EntityWrapper<>());
- } else {
- Long roleId = getUser().getRoleId();
- rolePermissions = rolePermissionService.selectList(new EntityWrapper<RolePermission>().eq("role_id", roleId));
+ // 鐩存帴浠� sys_permission 琛ㄨ鍙栨墍鏈夎彍鍗曪紝涓嶆鏌ユ潈闄愬垎閰�
+ // 鏌ヨ鎵�鏈夌姸鎬佷负1锛堟甯革級鐨勬潈闄�
+ List<Permission> permissions = permissionService.selectList(
+ new EntityWrapper<Permission>()
+ .eq("status", 1) // 鍙繑鍥炴甯哥姸鎬佺殑鏉冮檺
+ );
+
+ // 妫�鏌ユ槸鍚︽湁灞傜骇缁撴瀯锛堢埗鑿滃崟锛歛ction涓虹┖瀛楃涓诧紝瀛愯彍鍗曪細resource_id鎸囧悜鐖惰彍鍗曠殑permission.id锛�
+ // 鏌ヨ鎵�鏈夌埗鑿滃崟锛坅ction涓虹┖瀛楃涓茬殑鏉冮檺锛�
+ List<Permission> parentMenus = permissions.stream()
+ .filter(p -> p.getAction() == null || p.getAction().isEmpty())
+ .collect(Collectors.toList());
+
+ // 鏀堕泦鎵�鏈夌埗鑿滃崟ID锛堢敤浜庤繃婊ょ嫭绔嬭彍鍗曪級
+ java.util.Set<Long> parentMenuIds = parentMenus.stream()
+ .map(Permission::getId)
+ .collect(Collectors.toSet());
+
+ if (!parentMenus.isEmpty()) {
+ // 鏋勫缓灞傜骇缁撴瀯
+ List<Map<String, Object>> result = new ArrayList<>();
+
+ for (Permission parentMenu : parentMenus) {
+ // 鏌ユ壘璇ョ埗鑿滃崟涓嬬殑瀛愯彍鍗�
+ // 鏂瑰紡1锛歳esource_id鎸囧悜鐖惰彍鍗曠殑id
+ // 鏂瑰紡2锛歳esource_id涓�0鎴杗ull锛屼絾鏍规嵁action璺緞鍖归厤鐖惰彍鍗�
+ List<Permission> children = permissions.stream()
+ .filter(p -> {
+ // 鎺掗櫎鐖惰彍鍗曟湰韬�
+ if (p.getAction() == null || p.getAction().isEmpty()) {
+ return false;
+ }
+ // 鏂瑰紡1锛歳esource_id鎸囧悜鐖惰彍鍗曠殑id
+ if (p.getResourceId() != null && p.getResourceId().equals(parentMenu.getId())) {
+ return true;
+ }
+ // 鏂瑰紡2锛歳esource_id涓�0鎴杗ull锛屾牴鎹產ction璺緞鍖归厤
+ if ((p.getResourceId() == null || p.getResourceId() == 0)) {
+ String action = p.getAction();
+ String parentName = parentMenu.getName();
+ // 鏍规嵁鐖惰彍鍗曞悕绉板尮閰峚ction璺緞
+ if ("鍏ュ簱绠$悊".equals(parentName)) {
+ return action != null && (action.startsWith("/pakin/") || action.startsWith("/order/"));
+ } else if ("AGV绠$悊".equals(parentName)) {
+ return action != null && action.startsWith("/AGV/");
+ } else if ("搴撳瓨绠$悊".equals(parentName)) {
+ return action != null && action.startsWith("/stock/");
+ }
+ }
+ return false;
+ })
+ .collect(Collectors.toList());
+
+ // 鍙湁鏈夊瓙鑿滃崟鐨勭埗鑿滃崟鎵嶈繑鍥�
+ if (!children.isEmpty()) {
+ Map<String, Object> parentMap = new HashMap<>();
+ parentMap.put("id", parentMenu.getId());
+ parentMap.put("name", parentMenu.getName());
+ parentMap.put("action", parentMenu.getAction());
+ parentMap.put("type", "parent"); // 鏍囪瘑涓虹埗鑿滃崟
+
+ // 鏋勫缓瀛愯彍鍗曞垪琛�
+ List<Map<String, Object>> childrenList = new ArrayList<>();
+ for (Permission child : children) {
+ Map<String, Object> childMap = new HashMap<>();
+ childMap.put("id", child.getId());
+ childMap.put("name", child.getName());
+ childMap.put("action", child.getAction());
+ childMap.put("type", "child"); // 鏍囪瘑涓哄瓙鑿滃崟
+ childrenList.add(childMap);
+ }
+ parentMap.put("children", childrenList);
+ result.add(parentMap);
+ }
+ }
+
+ // 娣诲姞娌℃湁鐖惰彍鍗曠殑鐙珛鏉冮檺锛坮esource_id涓篘ULL鐨勬潈闄愶級
+ List<Permission> standalonePermissions = permissions.stream()
+ .filter(p -> {
+ // 鍙繑鍥炴湁action鐨勬潈闄愶紙鎺掗櫎鐖惰彍鍗曪級
+ if (p.getAction() == null || p.getAction().isEmpty()) {
+ return false;
+ }
+ // 濡傛灉resource_id涓篘ULL锛岃鏄庢槸鐙珛鑿滃崟
+ return p.getResourceId() == null;
+ })
+ .collect(Collectors.toList());
+
+ for (Permission permission : standalonePermissions) {
+ Map<String, Object> item = new HashMap<>();
+ item.put("id", permission.getId());
+ item.put("name", permission.getName());
+ item.put("action", permission.getAction());
+ item.put("type", "standalone"); // 鐙珛鑿滃崟
+ result.add(item);
+ }
+
+ return R.ok().add(result);
}
- if (Cools.isEmpty(rolePermissions)) {
- return R.ok();
- }
- List<Long> collect = rolePermissions.stream().map(RolePermission::getPermissionId).distinct().collect(Collectors.toList());
- List<Permission> permissions = permissionService.selectBatchIds(collect);
+
+ // 濡傛灉娌℃湁灞傜骇缁撴瀯锛岃繑鍥炲師鏉ョ殑骞抽摵缁撴瀯锛堝吋瀹规棫閫昏緫锛�
return R.ok().add(permissions);
}
}
--
Gitblit v1.9.1