From 965a9bda2b5423390f6385350dc4dbe89ff5f13d Mon Sep 17 00:00:00 2001 From: "DESKTOP-5DIJMF9\\admin" <2388969634@qq.com> Date: Thu, 13 Mar 2025 18:43:44 +0800 Subject: [PATCH] =?UTF-8?q?opt=EF=BC=9A=E8=B0=83=E5=BA=A6=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=88=A4=E6=96=AD=E5=BD=93=E5=89=8DIP=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=98=AF=E8=B0=83=E5=BA=A6Ip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/quartz/utils/QuartzManage.java | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/QuartzManage.java b/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/QuartzManage.java index 7249dd404..0dd8b368b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/QuartzManage.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/QuartzManage.java @@ -1,5 +1,6 @@ package org.nl.system.service.quartz.utils; +import cn.hutool.core.net.NetUtil; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.system.service.quartz.dao.SysQuartzJob; @@ -26,6 +27,14 @@ public class QuartzManage { private Scheduler scheduler; public void addJob(SysQuartzJob quartzJob) { + + + //本机IP + String localIp = NetUtil.getLocalhostStr(); + System.out.println("本机ip:"+localIp); + if (!judgmentIp(quartzJob.getJob_ip())) { + throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同"); + } try { // 构建job信息 JobDetail jobDetail = JobBuilder.newJob(ExecutionJob.class). @@ -62,8 +71,16 @@ public class QuartzManage { * @param quartzJob / */ public void updateJobCron(SysQuartzJob quartzJob) { + + //本机IP + String localIp = NetUtil.getLocalhostStr(); + System.out.println("本机ip:"+localIp); + TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id()); + + if (!judgmentIp(quartzJob.getJob_ip())) { + throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同"); + } try { - TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id()); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); // 如果不存在则创建一个定时任务 if (trigger == null) { @@ -93,8 +110,16 @@ public class QuartzManage { * @param quartzJob / */ public void resumeJob(SysQuartzJob quartzJob) { + + //本机IP + String localIp = NetUtil.getLocalhostStr(); + System.out.println("本机ip:"+localIp); + TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id()); + + if (!judgmentIp(quartzJob.getJob_ip())) { + throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同"); + } try { - TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id()); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); // 如果不存在则创建一个定时任务 if (trigger == null) { @@ -129,9 +154,21 @@ public class QuartzManage { * @param quartzJob / */ public void runJobNow(SysQuartzJob quartzJob) { + + //本机IP + String localIp = NetUtil.getLocalhostStr(); + System.out.println("本机ip:"+localIp); + TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id()); + + if (!judgmentIp(quartzJob.getJob_ip())) { + throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同"); + } + try { - TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getJob_id()); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); + log.info("定时任务:{}, 执行ip: {}, 定时任务开启", quartzJob.getJob_name(), localIp); + System.out.println("定时任务: " + quartzJob.getJob_name() + ", 执行ip: " + localIp + ", 定时任务开启"); + // 如果不存在则创建一个定时任务 if (trigger == null) { addJob(quartzJob); @@ -140,6 +177,7 @@ public class QuartzManage { dataMap.put(SysQuartzJob.JOB_KEY, quartzJob); JobKey jobKey = JobKey.jobKey(JOB_NAME + quartzJob.getJob_id()); scheduler.triggerJob(jobKey, dataMap); + } catch (Exception e) { log.error("定时任务执行失败", e); throw new BadRequestException("定时任务执行失败"); @@ -161,4 +199,9 @@ public class QuartzManage { throw new BadRequestException("删除定时任务失败"); } } + + public static Boolean judgmentIp(String ip) { + return NetUtil.localAddressList(null).stream() + .anyMatch(inet -> ip.equals(inet.getHostAddress())); + } }