后台作业默认以租户身份运行

This commit is contained in:
cj committed 2020-06-12 15:04:06 +08:00
1 parent 88c9ea6409
commit 946da3d593
2 files changed
+11 -4

No files matched your search

@@ -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());
@@ -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());