From 946da3d5933d33bff7de3c8a4409f6ca78c8e384 Mon Sep 17 00:00:00 2001 From: cj Date: Fri, 12 Jun 2020 15:04:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=BD=9C=E4=B8=9A=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E4=BB=A5=E7=A7=9F=E6=88=B7=E8=BA=AB=E4=BB=BD=E8=BF=90?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pig4cloud/pigx/daemon/quartz/util/RestTaskInvok.java | 9 +++++++-- .../pig4cloud/pigx/daemon/quartz/util/TaskInvokUtil.java | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/RestTaskInvok.java b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/RestTaskInvok.java index 6b1b4cf4f..1afacf2eb 100644 --- a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/RestTaskInvok.java +++ b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/RestTaskInvok.java @@ -17,7 +17,9 @@ package com.pig4cloud.pigx.daemon.quartz.util; +import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; +import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.daemon.quartz.entity.SysJob; import com.pig4cloud.pigx.daemon.quartz.exception.TaskException; import lombok.AllArgsConstructor; @@ -37,8 +39,11 @@ public class RestTaskInvok implements ITaskInvok { @Override public void invokMethod(SysJob sysJob) throws TaskException { try { - HttpUtil.createGet(sysJob.getExecutePath()) - .execute(); + HttpRequest request = HttpUtil.createGet(sysJob.getExecutePath()); + if(sysJob.getTenantId() != null){ + request.header(CommonConstants.TENANT_ID, sysJob.getTenantId().toString()); + } + request.execute(); } catch (Exception e) { log.error("定时任务restTaskInvok异常,执行任务:{}", sysJob.getExecutePath()); throw new TaskException("定时任务restTaskInvok业务执行失败,任务:" + sysJob.getExecutePath()); diff --git a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/TaskInvokUtil.java b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/TaskInvokUtil.java index fa5fbc890..cdf444e41 100644 --- a/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/TaskInvokUtil.java +++ b/pigx-visual/pigx-daemon-quartz/src/main/java/com/pig4cloud/pigx/daemon/quartz/util/TaskInvokUtil.java @@ -19,6 +19,7 @@ package com.pig4cloud.pigx.daemon.quartz.util; import cn.hutool.core.util.StrUtil; +import com.pig4cloud.pigx.common.data.tenant.TenantBroker; import com.pig4cloud.pigx.daemon.quartz.constants.PigxQuartzEnum; import com.pig4cloud.pigx.daemon.quartz.entity.SysJob; import com.pig4cloud.pigx.daemon.quartz.entity.SysJobLog; @@ -76,9 +77,10 @@ public class TaskInvokUtil { sysJobLog.setCronExpression(sysJob.getCronExpression()); sysJobLog.setTenantId(sysJob.getTenantId()); try { - //执行任务 + // 执行任务 ITaskInvok iTaskInvok = TaskInvokFactory.getInvoker(sysJob.getJobType()); - iTaskInvok.invokMethod(sysJob); + // 确保租户上下文有值,使得当前线程中的多租户特性生效。 + TenantBroker.runAs(sysJob.getTenantId(),tenantId -> iTaskInvok.invokMethod(sysJob)); ; //记录成功状态 sysJobLog.setJobMessage(PigxQuartzEnum.JOB_LOG_STATUS_SUCCESS.getDescription());