From 9bcc1937654b94a43a5a54b7401222dc3c261dbc Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期三, 01 十一月 2023 16:08:42 +0800 Subject: [PATCH] 新增编程式判断资源访问权限 --- src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java | 32 ++++++++++++++++++++++++++++++-- 1 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java b/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java index bfadce2..85a139c 100644 --- a/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java +++ b/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java @@ -10,9 +10,12 @@ import org.quartz.SchedulerException; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.ScheduleConstants; import com.ruoyi.common.exception.job.TaskException; import com.ruoyi.common.exception.job.TaskException.Code; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.project.monitor.domain.SysJob; /** @@ -80,7 +83,12 @@ scheduler.deleteJob(getJobKey(jobId, jobGroup)); } - scheduler.scheduleJob(jobDetail, trigger); + // 鍒ゆ柇浠诲姟鏄惁杩囨湡 + if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression()))) + { + // 鎵ц璋冨害浠诲姟 + scheduler.scheduleJob(jobDetail, trigger); + } // 鏆傚仠浠诲姟 if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) @@ -110,4 +118,24 @@ + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); } } -} \ No newline at end of file + + /** + * 妫�鏌ュ寘鍚嶆槸鍚︿负鐧藉悕鍗曢厤缃� + * + * @param invokeTarget 鐩爣瀛楃涓� + * @return 缁撴灉 + */ + public static boolean whiteList(String invokeTarget) + { + String packageName = StringUtils.substringBefore(invokeTarget, "("); + int count = StringUtils.countMatches(packageName, "."); + if (count > 1) + { + return StringUtils.containsAnyIgnoreCase(invokeTarget, Constants.JOB_WHITELIST_STR); + } + Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]); + String beanPackageName = obj.getClass().getPackage().getName(); + return StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_WHITELIST_STR) + && !StringUtils.containsAnyIgnoreCase(beanPackageName, Constants.JOB_ERROR_STR); + } +} -- Gitblit v1.9.3