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 |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 117 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AppVersionController.java b/src/main/java/com/zy/asrs/controller/AppVersionController.java
index 0d5d98e..16a6111 100644
--- a/src/main/java/com/zy/asrs/controller/AppVersionController.java
+++ b/src/main/java/com/zy/asrs/controller/AppVersionController.java
@@ -12,6 +12,10 @@
 import com.zy.asrs.entity.AppVersion;
 import com.zy.asrs.service.AppVersionService;
 import com.zy.common.web.BaseController;
+import com.zy.system.entity.Permission;
+import com.zy.system.entity.RolePermission;
+import com.zy.system.service.PermissionService;
+import com.zy.system.service.RolePermissionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.util.ClassUtils;
@@ -22,10 +26,15 @@
 import java.io.*;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @RestController
 public class AppVersionController extends BaseController {
 
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    private RolePermissionService rolePermissionService;
     @Autowired
     private AppVersionService appVersionService;
 
@@ -57,6 +66,7 @@
     public R checkUpdate(@PathVariable("version") String version,
                          @PathVariable("type") Integer type) {
         EntityWrapper<AppVersion> wrapper = new EntityWrapper<>();
+        wrapper.eq("type", type);
         AppVersion appVersion = appVersionService.selectOne(wrapper);
         if (Cools.isEmpty(appVersion)) {
             return R.ok("宸叉槸鏈�鏂扮増鏈�");
@@ -220,4 +230,111 @@
             response.setStatus(404);
         }
     }
+    @RequestMapping("/menu/pda/auth")
+    @ManagerAuth
+    public R menuPda(){
+        // 鐩存帴浠� 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);
+        }
+        
+        // 濡傛灉娌℃湁灞傜骇缁撴瀯锛岃繑鍥炲師鏉ョ殑骞抽摵缁撴瀯锛堝吋瀹规棫閫昏緫锛�
+        return R.ok().add(permissions);
+    }
 }
+

--
Gitblit v1.9.1