增加服务器管理认证方式,增加测试连接接口
This commit is contained in:
parent
10bfa7bcbd
commit
bd7733d7d7
@ -89,6 +89,18 @@ public class ScheduleJobApiController extends BaseController<ScheduleJob, Schedu
|
|||||||
return Response.success();
|
return Response.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复启用禁用任务
|
||||||
|
*/
|
||||||
|
@Operation(summary = "启用定时任务", description = "恢复被禁用(DISABLED)的定时任务,重新注册调度,状态变为ENABLED")
|
||||||
|
@PostMapping("/{id}/enable")
|
||||||
|
public Response<Void> enableJob(
|
||||||
|
@Parameter(description = "任务ID", required = true) @PathVariable Long id
|
||||||
|
) {
|
||||||
|
scheduleJobService.enableJob(id);
|
||||||
|
return Response.success();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 立即触发任务
|
* 立即触发任务
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -81,7 +81,7 @@ public class ScheduleJob extends Entity<Long> {
|
|||||||
*/
|
*/
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
@Column(name = "status", nullable = false, length = 20)
|
@Column(name = "status", nullable = false, length = 20)
|
||||||
private ScheduleJobStatusEnum status = ScheduleJobStatusEnum.ENABLED;
|
private ScheduleJobStatusEnum status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否允许并发执行
|
* 是否允许并发执行
|
||||||
|
|||||||
@ -41,6 +41,12 @@ public interface IScheduleJobService extends IBaseService<ScheduleJob, ScheduleJ
|
|||||||
*/
|
*/
|
||||||
void disableJob(Long jobId);
|
void disableJob(Long jobId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复启用(解除禁用)任务
|
||||||
|
* @param jobId 任务ID
|
||||||
|
*/
|
||||||
|
void enableJob(Long jobId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 立即执行一次任务(仅限ENABLED和PAUSED状态)
|
* 立即执行一次任务(仅限ENABLED和PAUSED状态)
|
||||||
*
|
*
|
||||||
|
|||||||
@ -179,6 +179,7 @@ public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJob, Schedul
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void startJob(Long jobId) {
|
public void startJob(Long jobId) {
|
||||||
try {
|
try {
|
||||||
ScheduleJob job = findEntityById(jobId);
|
ScheduleJob job = findEntityById(jobId);
|
||||||
@ -218,6 +219,7 @@ public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJob, Schedul
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void pauseJob(Long jobId) {
|
public void pauseJob(Long jobId) {
|
||||||
try {
|
try {
|
||||||
scheduler.pauseJob(getJobKey(jobId));
|
scheduler.pauseJob(getJobKey(jobId));
|
||||||
@ -236,6 +238,7 @@ public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJob, Schedul
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void resumeJob(Long jobId) {
|
public void resumeJob(Long jobId) {
|
||||||
try {
|
try {
|
||||||
scheduler.resumeJob(getJobKey(jobId));
|
scheduler.resumeJob(getJobKey(jobId));
|
||||||
@ -254,6 +257,7 @@ public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJob, Schedul
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void disableJob(Long jobId) {
|
public void disableJob(Long jobId) {
|
||||||
ScheduleJob job = findEntityById(jobId);
|
ScheduleJob job = findEntityById(jobId);
|
||||||
|
|
||||||
@ -283,6 +287,40 @@ public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJob, Schedul
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void enableJob(Long jobId) {
|
||||||
|
ScheduleJob job = findEntityById(jobId);
|
||||||
|
if (job.getStatus() != ScheduleJobStatusEnum.DISABLED) {
|
||||||
|
throw new BusinessException(ResponseCode.SCHEDULE_JOB_STATUS_CANNOT_UPDATE, new Object[] {"仅禁用状态任务可启用"});
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// 创建并调度新Job
|
||||||
|
JobDetail jobDetail = JobBuilder.newJob(DynamicJob.class)
|
||||||
|
.withIdentity(getJobKey(jobId))
|
||||||
|
.withDescription(job.getJobDescription())
|
||||||
|
.build();
|
||||||
|
jobDetail.getJobDataMap().put("jobId", job.getId());
|
||||||
|
jobDetail.getJobDataMap().put("jobName", job.getJobName());
|
||||||
|
jobDetail.getJobDataMap().put("beanName", job.getBeanName());
|
||||||
|
jobDetail.getJobDataMap().put("methodName", job.getMethodName());
|
||||||
|
jobDetail.getJobDataMap().put("methodParams", job.getMethodParams());
|
||||||
|
|
||||||
|
Trigger trigger = TriggerBuilder.newTrigger()
|
||||||
|
.withIdentity(getTriggerKey(jobId))
|
||||||
|
.withSchedule(CronScheduleBuilder.cronSchedule(job.getCronExpression()))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
scheduler.scheduleJob(jobDetail, trigger);
|
||||||
|
job.setStatus(ScheduleJobStatusEnum.ENABLED);
|
||||||
|
jobRepository.save(job);
|
||||||
|
log.info("任务从DISABLED恢复启用成功:jobId={}, jobName={}", jobId, job.getJobName());
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
log.error("恢复启用任务失败:jobId={}, jobName={}", jobId, job.getJobName(), e);
|
||||||
|
throw new BusinessException(ResponseCode.SCHEDULE_JOB_START_FAILED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void triggerJob(Long jobId) {
|
public void triggerJob(Long jobId) {
|
||||||
// 检查任务状态
|
// 检查任务状态
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user