From a5c4980464d7458ca748a1ad85fd44c0234b7e51 Mon Sep 17 00:00:00 2001 From: zhengweilin Date: Thu, 26 Oct 2023 09:25:17 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A2.4.0=201=E3=80=81=E4=BF=AE?= =?UTF-8?q?=E5=A4=8DJob=E6=9B=B4=E6=96=B0=E6=B2=A1=E6=9C=89=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=B8=B8=E9=A9=BB=E4=BB=BB=E5=8A=A1=E5=AD=97=E6=AE=B5?= =?UTF-8?q?resident=202=E3=80=81=E8=BF=98=E5=8E=9FJob=E6=9B=B4=E6=96=B0Dat?= =?UTF-8?q?eUtil=E6=94=B9=E4=B8=BAJdk=20Duration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../retry/server/web/service/JobService.java | 3 ++ .../web/service/impl/JobServiceImpl.java | 33 +++++++++++-------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/JobService.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/JobService.java index 27ecea262..fe28a63ab 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/JobService.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/JobService.java @@ -5,6 +5,7 @@ import com.aizuda.easy.retry.server.web.model.request.JobQueryVO; import com.aizuda.easy.retry.server.web.model.request.JobRequestVO; import com.aizuda.easy.retry.server.web.model.request.JobUpdateJobStatusRequestVO; import com.aizuda.easy.retry.server.web.model.response.JobResponseVO; +import com.aizuda.easy.retry.template.datasource.persistence.po.Job; import java.util.List; @@ -24,6 +25,8 @@ public interface JobService { Boolean updateJobStatus(JobUpdateJobStatusRequestVO jobRequestVO); + Job updateJobResident(JobRequestVO jobRequestVO); + Boolean deleteJobById(Long id); List getTimeByCron(String cron); diff --git a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java index a909d2f56..6b5f8f958 100644 --- a/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java +++ b/easy-retry-server/easy-retry-server-web/src/main/java/com/aizuda/easy/retry/server/web/service/impl/JobServiceImpl.java @@ -120,20 +120,36 @@ public class JobServiceImpl implements JobService { @Override public boolean saveJob(JobRequestVO jobRequestVO) { - Job job = JobConverter.INSTANCE.toJob(jobRequestVO); WaitStrategy waitStrategy = WaitStrategyEnum.getWaitStrategy(jobRequestVO.getTriggerType()); WaitStrategyContext waitStrategyContext = new WaitStrategyContext(); waitStrategyContext.setTriggerType(jobRequestVO.getTriggerType()); waitStrategyContext.setTriggerInterval(jobRequestVO.getTriggerInterval()); waitStrategyContext.setNextTriggerAt(LocalDateTime.now()); - job.setNextTriggerAt(waitStrategy.computeRetryTime(waitStrategyContext)); // 判断常驻任务 + Job job = updateJobResident(jobRequestVO); + job.setNextTriggerAt(waitStrategy.computeRetryTime(waitStrategyContext)); + return 1 == jobMapper.insert(job); + } + + @Override + public boolean updateJob(JobRequestVO jobRequestVO) { + Assert.notNull(jobRequestVO.getId(), () -> new EasyRetryServerException("id 不能为空")); + Assert.isTrue(1 == jobMapper.selectCount(new LambdaQueryWrapper().eq(Job::getId, jobRequestVO.getId()))); + + // 判断常驻任务 + Job job = updateJobResident(jobRequestVO); + return 1 == jobMapper.updateById(job); + } + + @Override + public Job updateJobResident(JobRequestVO jobRequestVO) { + Job job = JobConverter.INSTANCE.toJob(jobRequestVO); if (jobRequestVO.getTriggerType() == WaitStrategyEnum.FIXED.getTriggerType()) { if (Integer.parseInt(jobRequestVO.getTriggerInterval()) < 10) { job.setResident(StatusEnum.YES.getStatus()); } - } else if(jobRequestVO.getTriggerType() == WaitStrategyEnum.CRON.getTriggerType()) { + } else if (jobRequestVO.getTriggerType() == WaitStrategyEnum.CRON.getTriggerType()) { List timeByCron = getTimeByCron(jobRequestVO.getTriggerInterval()); LocalDateTime first = LocalDateTime.parse(timeByCron.get(0), dateTimeFormatter); LocalDateTime second = LocalDateTime.parse(timeByCron.get(1), dateTimeFormatter); @@ -145,16 +161,7 @@ public class JobServiceImpl implements JobService { } else { throw new EasyRetryServerException("未知触发类型"); } - - return 1 == jobMapper.insert(job); - } - - @Override - public boolean updateJob(JobRequestVO jobRequestVO) { - Assert.notNull(jobRequestVO.getId(), () -> new EasyRetryServerException("id 不能为空")); - Assert.isTrue(1 == jobMapper.selectCount(new LambdaQueryWrapper().eq(Job::getId, jobRequestVO.getId()))); - Job job = JobConverter.INSTANCE.toJob(jobRequestVO); - return 1 == jobMapper.updateById(job); + return job; } @Override