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 | 23 ++++++++++++++++++++---
1 files changed, 20 insertions(+), 3 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 9ef6970..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;
@@ -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