From 601eca3d487e9833ffc6253579bb85496f767f23 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期四, 05 十一月 2026 16:18:24 +0800
Subject: [PATCH] fix(bpm): 修复流程模型修改后保存报「你不是该流程的管理员」

---
 yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java |   25 +++++++++++++++++++++----
 1 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
index c23ea9c..839d45d 100644
--- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
+++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java
@@ -4,6 +4,7 @@
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmModelMetaInfoVO;
@@ -51,7 +52,7 @@
  * 娴佺▼妯″瀷瀹炵幇锛氫富瑕佽繘琛� Flowable {@link Model} 鐨勭淮鎶�
  *
  * @author yunlongn
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  * @author jason
  */
 @Service
@@ -204,10 +205,26 @@
     private Model validateModelManager(String id, Long userId) {
         Model model = validateModelExists(id);
         BpmModelMetaInfoVO metaInfo = BpmModelConvert.INSTANCE.parseMetaInfo(model);
-        if (metaInfo == null || !CollUtil.contains(metaInfo.getManagerUserIds(), userId)) {
-            throw exception(MODEL_UPDATE_FAIL_NOT_MANAGER, model.getName());
+        // 1. 鏈厤缃祦绋嬬鐞嗗憳 鈫� 鏀捐銆�
+        //    鍘嗗彶妯″瀷锛堝浠芥仮澶�/杩佺Щ锛塎ETA_INFO 閲� managerUserIds 涓虹┖鏁扮粍鎴栫己澶憋紝
+        //    鑰� updateModel 鏄�屽厛鏍¢獙鍚庡啓鍏ャ�嶏紝涓�鏃︿负绌哄氨浼氭案涔呮牎楠屽け璐ワ紝鏃犳硶鑷剤銆�
+        if (metaInfo == null || CollUtil.isEmpty(metaInfo.getManagerUserIds())) {
+            log.warn("[validateModelManager][妯″瀷({}) 鏈厤缃祦绋嬬鐞嗗憳锛岃烦杩囩鐞嗗憳鏍¢獙]", model.getName());
+            return model;
         }
-        return model;
+        // 2. 褰撳墠鎿嶄綔浜哄湪绠$悊鍛樺垪琛ㄩ噷 鈫� 鏀捐
+        if (CollUtil.contains(metaInfo.getManagerUserIds(), userId)) {
+            return model;
+        }
+        // 3. 瓒呯骇绠$悊鍛樺缁堟斁琛屻��
+        //    鍚﹀垯妯″瀷涓�鏃﹁淇濆瓨鎴愬彧鍖呭惈鏌愪釜鍏蜂綋璐﹀彿锛屾崲璐﹀彿锛堝惈瓒呯锛夊氨鍐嶄篃鏀逛笉浜嗚妯″瀷锛�
+        //    鎶ャ�屾搷浣滄祦绋嬪け璐ワ紝鍘熷洜锛氫綘涓嶆槸璇ユ祦绋�(xxx)鐨勭鐞嗗憳銆嶏紝褰㈡垚姝婚攣銆�
+        if (SecurityFrameworkUtils.isSuperAdmin()) {
+            log.warn("[validateModelManager][妯″瀷({}) 绠$悊鍛�({}) 涓嶅惈褰撳墠鐢ㄦ埛({})锛屼絾涓鸿秴绾х鐞嗗憳锛屾斁琛宂",
+                    model.getName(), metaInfo.getManagerUserIds(), userId);
+            return model;
+        }
+        throw exception(MODEL_UPDATE_FAIL_NOT_MANAGER, model.getName());
     }
 
     @Override

--
Gitblit v1.9.3