From 8d369ffd2185a99de8f9e469d60f20016a85a7d7 Mon Sep 17 00:00:00 2001 From: tjq Date: Sat, 28 Nov 2020 18:02:37 +0800 Subject: [PATCH] feat: add cron validate controller --- .../web/ControllerExceptionHandler.java | 3 +- .../server/web/controller/ToolController.java | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ToolController.java diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/ControllerExceptionHandler.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/ControllerExceptionHandler.java index 54c3e75e..92506dc2 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/ControllerExceptionHandler.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/ControllerExceptionHandler.java @@ -3,6 +3,7 @@ package com.github.kfcfans.powerjob.server.web; import com.github.kfcfans.powerjob.common.PowerJobException; import com.github.kfcfans.powerjob.common.response.ResultDTO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.messaging.handler.annotation.support.MethodArgumentTypeMismatchException; import org.springframework.web.HttpRequestMethodNotSupportedException; @@ -34,6 +35,6 @@ public class ControllerExceptionHandler { } else { log.error("[ControllerException] http request failed.", e); } - return ResultDTO.failed(e.getMessage()); + return ResultDTO.failed(ExceptionUtils.getMessage(e)); } } diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ToolController.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ToolController.java new file mode 100644 index 00000000..318a865e --- /dev/null +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ToolController.java @@ -0,0 +1,42 @@ +package com.github.kfcfans.powerjob.server.web.controller; + +import com.github.kfcfans.powerjob.common.OmsConstant; +import com.github.kfcfans.powerjob.common.response.ResultDTO; +import com.github.kfcfans.powerjob.server.common.utils.CronExpression; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; +import java.util.List; + +/** + * 工具 Controller + * + * @author tjq + * @since 2020/11/28 + */ +@Slf4j +@RestController +@RequestMapping("/tool") +public class ToolController { + + @GetMapping("/validateCron") + public ResultDTO> calculateNextCronTriggerTime(String expression) throws Exception { + CronExpression cronExpression = new CronExpression(expression); + List result = Lists.newArrayList(); + Date time = new Date(); + for (int i = 0; i < 10; i++) { + Date nextValidTime = cronExpression.getNextValidTimeAfter(time); + if (nextValidTime == null) { + break; + } + result.add(DateFormatUtils.format(nextValidTime.getTime(), OmsConstant.TIME_PATTERN)); + time = nextValidTime; + } + return ResultDTO.success(result); + } +}