From 85bfb9351803d97a33329d507f30a2f78bf1fc75 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 28 九月 2026 10:53:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/main'
---
talent-card-server/src/main/java/com/talentcard/server/business/admin/auth/AdminAuthService.java | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/admin/auth/AdminAuthService.java b/talent-card-server/src/main/java/com/talentcard/server/business/admin/auth/AdminAuthService.java
index e3fe181..7a40ed9 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/admin/auth/AdminAuthService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/admin/auth/AdminAuthService.java
@@ -111,6 +111,16 @@
@Transactional(readOnly = true)
public boolean hasPermission(Long operatorId, String permission) {
+ return hasAnyPermission(operatorId, List.of(permission));
+ }
+
+ /**
+ * 一个接口可能同时服务多个页面(例如家属卡接口既挂在「家属卡申请」也挂在「家属卡管理」下),
+ * 这时只要命中其中任意一个页面权限就放行。
+ */
+ @Transactional(readOnly = true)
+ public boolean hasAnyPermission(Long operatorId, List<String> permissions) {
+ if (permissions.isEmpty()) return true;
List<Map<String, Object>> result = rows("""
select o.role_code, r.permission_codes
from admin_operator o left join admin_role r on r.role_code = o.role_code
@@ -122,7 +132,8 @@
if ("platform_admin".equals(String.valueOf(operator.get("roleCode")))) return true;
String raw = String.valueOf(operator.getOrDefault("permissionCodes", ""));
try {
- return JSON.parseArray(raw, String.class).contains(permission);
+ List<String> granted = JSON.parseArray(raw, String.class);
+ return permissions.stream().anyMatch(granted::contains);
} catch (Exception ignored) {
return false;
}
--
Gitblit v1.7.1