From b6b116dfb83bf5097e001e8a564f639a98f911e2 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 07 一月 2026 18:26:19 +0800
Subject: [PATCH] feat:分公司新增权限配置

---
 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
index d52d184..2d614e4 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
@@ -34,6 +34,7 @@
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -49,6 +50,27 @@
 public class MenuController extends BaseController {
 
     private static String PREFIX = "/system/menu/";
+
+    // 快车相关菜单(isSpe=2时过滤)
+    private static final List<String> SPE_MENUS = Arrays.asList(
+        "快车订单", "快车改派管理", "快车车型设置"
+    );
+
+    // 出租车相关菜单(isTaxi=2时过滤)
+    private static final List<String> TAXI_MENUS = Arrays.asList(
+        "出租车订单", "出租车改派管理"
+    );
+
+    // 跨城相关菜单(isCross=2时过滤)
+    private static final List<String> CROSS_MENUS = Arrays.asList(
+        "跨城出行订单", "跨城改派管理", "跨城线路管理", "开通城市管理"
+    );
+
+    // 顺风车相关菜单(isHitchRide=2时过滤)
+    private static final List<String> HITCH_RIDE_MENUS = Arrays.asList(
+        "顺风车订单", "顺风车设置", "顺风车司机审核列表",
+        "顺风车司机", "顺风车投诉", "顺风车评价"
+    );
 
     @Autowired
     private IMenuService menuService;
@@ -216,6 +238,10 @@
             }
         }
         List<ZTreeNode> roleTreeList = this.menuService.menuTreeList(ids);
+        // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单
+        if (tCompany.getType() == 2 || tCompany.getType() == 3) {
+            roleTreeList = filterMenusByBusinessScope(roleTreeList, tCompany);
+        }
         return roleTreeList;
     }
 
@@ -237,6 +263,10 @@
             }
         }
         List<ZTreeNode> roleTreeList = this.menuService.menuTreeList(ids);
+        // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单
+        if (tCompany.getType() == 2 || tCompany.getType() == 3) {
+            roleTreeList = filterMenusByBusinessScope(roleTreeList, tCompany);
+        }
         roleTreeList.add(ZTreeNode.createParent());
         return roleTreeList;
     }
@@ -261,9 +291,17 @@
         }
         if (ToolUtil.isEmpty(menuIds)) {
             List<ZTreeNode> roleTreeList = this.menuService.menuTreeList(ids);
+            // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单
+            if (tCompany.getType() == 2 || tCompany.getType() == 3) {
+                roleTreeList = filterMenusByBusinessScope(roleTreeList, tCompany);
+            }
             return roleTreeList;
         } else {
             List<ZTreeNode> roleTreeListByUserId = this.menuService.menuTreeListByMenuIds(menuIds, ids);
+            // 分公司(type=2)和供应商(type=3)需要根据经营范围过滤菜单
+            if (tCompany.getType() == 2 || tCompany.getType() == 3) {
+                roleTreeListByUserId = filterMenusByBusinessScope(roleTreeListByUserId, tCompany);
+            }
             return roleTreeListByUserId;
         }
     }
@@ -292,4 +330,39 @@
         }
     }
 
+    /**
+     * 根据企业经营范围过滤菜单
+     * @param menuList 原始菜单列表
+     * @param company 企业信息
+     * @return 过滤后的菜单列表
+     */
+    private List<ZTreeNode> filterMenusByBusinessScope(List<ZTreeNode> menuList, TCompany company) {
+        List<String> excludeMenuNames = new ArrayList<>();
+
+        // isSpe=2 不经营快车
+        if (company.getIsSpe() != null && company.getIsSpe() == 2) {
+            excludeMenuNames.addAll(SPE_MENUS);
+        }
+        // isTaxi=2 不经营出租车
+        if (company.getIsTaxi() != null && company.getIsTaxi() == 2) {
+            excludeMenuNames.addAll(TAXI_MENUS);
+        }
+        // isCross=2 不经营跨城
+        if (company.getIsCross() != null && company.getIsCross() == 2) {
+            excludeMenuNames.addAll(CROSS_MENUS);
+        }
+        // isHitchRide=2 不经营顺风车
+        if (company.getIsHitchRide() != null && company.getIsHitchRide() == 2) {
+            excludeMenuNames.addAll(HITCH_RIDE_MENUS);
+        }
+
+        if (excludeMenuNames.isEmpty()) {
+            return menuList;
+        }
+
+        return menuList.stream()
+            .filter(node -> !excludeMenuNames.contains(node.getName()))
+            .collect(Collectors.toList());
+    }
+
 }

--
Gitblit v1.7.1