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