From 016b2f31b672f3bb1943ce3c2214bee6cba5306b Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期五, 16 一月 2026 09:27:41 +0800
Subject: [PATCH] feat(management):管理后台数据权限
---
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 64 +++++++++++++++++++++++++++++--
1 files changed, 59 insertions(+), 5 deletions(-)
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
index 3799d2c..e6a2e73 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -16,9 +16,11 @@
import com.stylefeng.guns.core.util.KaptchaUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.dao.UserMapper;
+import com.stylefeng.guns.modular.system.dao.TCompanyMapper;
import com.stylefeng.guns.modular.system.model.Menu;
import com.stylefeng.guns.modular.system.model.Relation;
import com.stylefeng.guns.modular.system.model.User;
+import com.stylefeng.guns.modular.system.model.TCompany;
import com.stylefeng.guns.modular.system.service.IMenuService;
import com.stylefeng.guns.modular.system.service.IRelationService;
import com.stylefeng.guns.modular.system.service.IUserService;
@@ -42,6 +44,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -60,7 +64,25 @@
@Slf4j
@Controller
public class LoginController extends BaseController {
-
+
+ // 快车相关菜单(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;
@@ -75,8 +97,11 @@
@Autowired
private UserMapper userMapper;
-
-
+
+ @Resource
+ private TCompanyMapper companyMapper;
+
+
private Map<String, Long> loginTime = new HashMap<>();
private Map<String, Integer> loginFailures = new HashMap<>();
@@ -111,6 +136,11 @@
Set<Long> collect = relations.stream().map(Relation::getMenuid).collect(Collectors.toSet());
List<Menu> menuList = menuService.selectBatchIds(collect);
List<MenuNode> menus = menuService.getMenusByRoleIds(roleList);
+ // 根据企业经营范围过滤菜单(在构建树之前过滤)
+ TCompany tCompany = companyMapper.selectById(shiroUser.getObjectId());
+ if (tCompany != null && (tCompany.getType() == 2 || tCompany.getType() == 3)) {
+ menus = filterMenusByBusinessScope(menus, tCompany);
+ }
List<MenuNode> titles = MenuNode.buildTitle(menus);
titles = ApiMenuFilter.build(titles);
shiroUser.setMenuIds(menuList.stream().map(Menu::getUrl).collect(Collectors.toList()));
@@ -246,6 +276,30 @@
}
return ResultUtil.error(jsonObject.getString("msg"));
}
-
-
+
+ /**
+ * 根据企业经营范围过滤菜单
+ */
+ private List<MenuNode> filterMenusByBusinessScope(List<MenuNode> menuList, TCompany company) {
+ List<String> excludeMenuNames = new ArrayList<>();
+ if (company.getIsSpe() != null && company.getIsSpe() == 2) {
+ excludeMenuNames.addAll(SPE_MENUS);
+ }
+ if (company.getIsTaxi() != null && company.getIsTaxi() == 2) {
+ excludeMenuNames.addAll(TAXI_MENUS);
+ }
+ if (company.getIsCross() != null && company.getIsCross() == 2) {
+ excludeMenuNames.addAll(CROSS_MENUS);
+ }
+ if (company.getIsHitchRide() != null && company.getIsHitchRide() == 2) {
+ excludeMenuNames.addAll(HITCH_RIDE_MENUS);
+ }
+ if (excludeMenuNames.isEmpty()) {
+ return menuList;
+ }
+ menuList.removeIf(node -> excludeMenuNames.contains(node.getName()));
+ return menuList;
+ }
+
+
}
--
Gitblit v1.7.1