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 27ecea26..fe28a63a 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 a909d2f5..6b5f8f95 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