From d9a5ba1de2fce6bd8c50dace505e4bf7864043ba Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 22 十月 2026 15:01:07 +0800
Subject: [PATCH] feat(mdm): 新增智能体通用业务导入功能

---
 yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java
index f79576d..c5514ee 100644
--- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java
+++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/framework/agent/SystemAgentBridgeGuard.java
@@ -10,12 +10,22 @@
 
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
+import java.util.List;
 
 /** 妗ユ帴缁熶竴閴存潈锛氭湇鍔′护鐗� + 褰撳墠鐧诲綍鐢ㄦ埛 + 涓氬姟鏉冮檺锛岀己涓�涓嶅彲銆� */
 @Component
 public class SystemAgentBridgeGuard {
 
     public static final String PERMISSION_ITEM_IMPORT = "mdm:item:import";
+
+    /** 鍚勪笟鍔℃ā鍧楃殑瀵煎叆鏉冮檺锛涗細璇濆垱寤轰笌闄勪欢璇诲彇鍙渶鍛戒腑鍏朵腑浠绘剰涓�椤广�� */
+    public static final List<String> IMPORT_PERMISSIONS = List.of(
+            PERMISSION_ITEM_IMPORT,
+            "srm:supplier:create",
+            "mes:md-item:create",
+            "mes:qc-template:create",
+            "mes:pro-mps:create",
+            "mes:pro-route:create");
 
     @Value("${yudao.agent.bridge-service-token:}")
     private String bridgeServiceToken;
@@ -40,8 +50,25 @@
         }
         if (!securityFrameworkService.hasPermission(permission)) {
             throw new AgentBridgeException(HttpStatus.FORBIDDEN, "FORBIDDEN",
-                    "褰撳墠鐢ㄦ埛缂哄皯鐗╂枡瀵煎叆鏉冮檺锛�" + permission + "锛�");
+                    "褰撳墠鐢ㄦ埛缂哄皯鏁版嵁瀵煎叆鏉冮檺锛�" + permission + "锛�");
         }
+        return principalOf(userId);
+    }
+
+    /** 浼氳瘽涓庨檮浠跺叆鍙f棤娉曢鐭ユā鍧楋紝鍙姹傚叿澶囦换鎰忎竴椤瑰鍏ユ潈闄愩�� */
+    public AgentPrincipal requireAny(String providedServiceToken) {
+        verifyServiceToken(providedServiceToken);
+        Long userId = SecurityFrameworkUtils.getLoginUserId();
+        if (userId == null) {
+            throw new AgentBridgeException(HttpStatus.UNAUTHORIZED, "UNAUTHORIZED", "鏈櫥褰曟垨鐧诲綍宸茶繃鏈�");
+        }
+        if (!securityFrameworkService.hasAnyPermissions(IMPORT_PERMISSIONS.toArray(String[]::new))) {
+            throw new AgentBridgeException(HttpStatus.FORBIDDEN, "FORBIDDEN", "褰撳墠鐢ㄦ埛缂哄皯鏁版嵁瀵煎叆鏉冮檺");
+        }
+        return principalOf(userId);
+    }
+
+    private AgentPrincipal principalOf(Long userId) {
         Long tenantId = TenantContextHolder.getTenantId();
         return new AgentPrincipal(userId, tenantId == null ? 0L : tenantId, "live");
     }

--
Gitblit v1.9.3