diff --git a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java index a0716b59..2420c00e 100644 --- a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java +++ b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/controller/WorkflowModelController.java @@ -24,6 +24,7 @@ import org.flowable.bpmn.model.BpmnModel; import org.flowable.engine.RepositoryService; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.idm.api.User; import org.flowable.idm.engine.impl.persistence.entity.UserEntity; import org.flowable.idm.engine.impl.persistence.entity.UserEntityImpl; import org.flowable.ui.common.security.SecurityUtils; @@ -171,8 +172,8 @@ public class WorkflowModelController { // 查询模型进行比较处理 Model model = this.modelService.getModel(modelId); - KiccUser currentUser = com.cloud.kicc.common.security.util.SecurityUtils.getUser(); - boolean currentUserIsOwner = model.getLastUpdatedBy().equals(currentUser.getId()); + User flowableUser = SecurityUtils.getCurrentUserObject(); + boolean currentUserIsOwner = model.getLastUpdatedBy().equals(flowableUser.getId()); String resolveAction = values.getFirst("conflictResolveAction"); // 版本校验(如果此时你在修改模型时别人提交了你的模型版本,如果没有版本校验就会出问题) if (model.getLastUpdated().getTime() != lastUpdated) { diff --git a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/interceptor/ModelHandlerInterceptor.java b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/interceptor/ModelHandlerInterceptor.java index 2b076496..c86ae876 100644 --- a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/interceptor/ModelHandlerInterceptor.java +++ b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/interceptor/ModelHandlerInterceptor.java @@ -32,6 +32,9 @@ public class ModelHandlerInterceptor implements HandlerInterceptor { user.setId(kiccUser.getId()); user.setFirstName(kiccUser.getUsername()); user.setLastName(""); + user.setTenantId(kiccUser.getTenantId()); + user.setEmail(kiccUser.getEmail()); + user.setDisplayName(kiccUser.getNickName()); SecurityUtils.assumeUser(user); } return true; diff --git a/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/UiTenantProvider.java b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/UiTenantProvider.java new file mode 100644 index 00000000..bfaae23a --- /dev/null +++ b/kicc-platform/kicc-platform-biz/kicc-workflow-biz/src/main/java/com/cloud/kicc/workflow/override/UiTenantProvider.java @@ -0,0 +1,40 @@ +package com.cloud.kicc.workflow.override; + +import org.flowable.idm.api.User; +import org.flowable.ui.common.security.SecurityUtils; +import org.flowable.ui.common.tenant.TenantProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +/** + *

+ * ui建模租户ID提供 + *

+ * + * @Author: wangxiang4 + * @Since: 2023/9/27 + */ +@Primary +@Component +public class UiTenantProvider implements TenantProvider { + + private static final Logger LOGGER = LoggerFactory.getLogger(UiTenantProvider.class); + + @Override + public String getTenantId() { + User flowableUser = SecurityUtils.getCurrentUserObject(); + if(flowableUser != null) { + // quotes can help solve whitespace issues, trimming here would not + // help solve the problem at source which is in user database + LOGGER.debug("Using user tenantId: '{}'", flowableUser.getTenantId()); + return flowableUser.getTenantId(); + } + + LOGGER.debug("No tenantId"); + return null; + } + + +}