diff --git a/pom.xml b/pom.xml index 0de3323..5cf415e 100644 --- a/pom.xml +++ b/pom.xml @@ -46,7 +46,7 @@ com.xiang.starter xmc-logger-starter - 1.0 + 1.1 diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java index 9620a41..bee683c 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/domain/req/TaskRegisterRequest.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.NotBlank; + /** * @Author: xiang * @Date: 2026-01-05 15:49 @@ -16,11 +18,13 @@ public class TaskRegisterRequest { /** * 应用名称 */ + @NotBlank(message = "应用名称不能为空") private String applicationName; /** * 应用地址 */ + @NotBlank(message = "应用地址不能为空") private String applicationAddress; /** diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobRegisterController.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobRegisterController.java index cd58df8..17ca4d8 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobRegisterController.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/server/XxzJobRegisterController.java @@ -5,6 +5,7 @@ import com.xiang.app.quartz.admin.service.ITaskConfigService; import com.xiang.xservice.basic.common.resp.Result; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -26,13 +27,13 @@ public class XxzJobRegisterController { private final ITaskConfigService taskConfigService; @PostMapping("/single") - public Result registerSingle(@NotNull(message = "单个注册") @Valid TaskRegisterRequest request){ + public Result registerSingle(@RequestBody @Valid @NotNull(message = "请求参数不能为空") TaskRegisterRequest request){ taskConfigService.registerTask(request); return Result.success(); } @PostMapping("/batch") - public Result batch(@NotEmpty(message = "请求参数不能为空") @Valid List request) { + public Result batch(@RequestBody @NotEmpty(message = "请求参数不能为空") @Valid List request) { taskConfigService.registerTasks(request); return Result.success(); } diff --git a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java index c55bf5e..ce6a10b 100644 --- a/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java +++ b/xservice-quartz-admin/src/main/java/com/xiang/app/quartz/admin/service/impl/TaskConfigServiceImpl.java @@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; @@ -102,6 +103,6 @@ public class TaskConfigServiceImpl implements ITaskConfigService { jobConfigDO.setCron(item.getCron()); jobConfigDO.setClazz(item.getClazz()); jobConfigDO.setMethod(item.getMethod()); - jobConfigDO.setJobSwitch(0); + jobConfigDO.setJobSwitch(Objects.isNull(jobConfigDO.getJobSwitch()) ? 0 : jobConfigDO.getJobSwitch()); } } diff --git a/xservice-quartz-core/pom.xml b/xservice-quartz-core/pom.xml index 0b59d29..2e3710e 100644 --- a/xservice-quartz-core/pom.xml +++ b/xservice-quartz-core/pom.xml @@ -28,7 +28,7 @@ com.xiang.starter xmc-http-starter - 1.0 + 2.0-SNAPSHOT com.xiang.starter diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java index ec5be80..b503986 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/AdminJobClient.java @@ -14,5 +14,5 @@ public interface AdminJobClient { List fetchJobByAppName(String appName); List fetchJobByAppNameAndVersion(String appName, Integer version); - void registerJob(JobDefinition jobDefinition); + void registerJob(JobDefinition jobDefinition, String className); } diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java index 4e1192c..fb44b93 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/api/HttpAdminJobClientImpl.java @@ -6,13 +6,14 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.xiang.core.quartz.model.JobConfigDO; import com.xiang.core.quartz.model.JobDefinition; +import com.xiang.core.quartz.model.TaskRegisterRequest; import com.xiang.core.quartz.model.XxzJobProperties; -import com.xiang.xmc.service.http.helper.HttpHelper; +import com.xiang.xmc.service.http.helper.BaseHttpHelp; +import com.xiang.xmc.service.http.helper.HttpHelperFactory; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; -import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.Objects; @@ -26,13 +27,15 @@ import java.util.Objects; public class HttpAdminJobClientImpl implements AdminJobClient { private final XxzJobProperties xxzJobProperties; + private static final BaseHttpHelp httpHelp = HttpHelperFactory.createQuartzHttp(); + @Override public List fetchJobByAppName(String appName) { String address = xxzJobProperties.getAdminAddress(); address = address + "/open/quartz/fetch/list"; Map params = Maps.newHashMap(); params.put("appName", appName); - String resp = HttpHelper.doGet(address, null, params); + String resp = httpHelp.doGet(address, params); if (StringUtils.isNotBlank(resp)) { JSONObject jsonObject = JSON.parseObject(resp); if (Objects.nonNull(jsonObject)) { @@ -52,7 +55,7 @@ public class HttpAdminJobClientImpl implements AdminJobClient { Map params = Maps.newHashMap(); params.put("appName", appName); params.put("currVersion", String.valueOf(version)); - String resp = HttpHelper.doGet(address, null, params); + String resp = httpHelp.doGet(address, params); if (StringUtils.isNotBlank(resp)) { JSONObject jsonObject = JSON.parseObject(resp); @@ -67,16 +70,16 @@ public class HttpAdminJobClientImpl implements AdminJobClient { } @Override - public void registerJob(JobDefinition jobDefinition) { - JobConfigDO jobConfigDO = new JobConfigDO(); - jobConfigDO.setApplicationName(xxzJobProperties.getAppName()); - jobConfigDO.setApplicationAddress(xxzJobProperties.getAdminAddress()); - jobConfigDO.setBeanName(jobDefinition.getName()); - jobConfigDO.setClazz(jobConfigDO.getClazz()); - jobConfigDO.setMethod(jobConfigDO.getMethod()); - jobConfigDO.setCreateTime(LocalDateTime.now()); - jobConfigDO.setUpdateTime(LocalDateTime.now()); - - + public void registerJob(JobDefinition jobDefinition, String className) { + TaskRegisterRequest request = new TaskRegisterRequest(); + request.setApplicationName(xxzJobProperties.getAppName()); + request.setApplicationAddress(xxzJobProperties.getAdminAddress()); + request.setBeanName(jobDefinition.getName()); + request.setCron(jobDefinition.getCron()); + request.setClazz(className); + request.setMethod(jobDefinition.getMethod().getName()); + String address = xxzJobProperties.getAdminAddress(); + address = address + "/open/quartz/register/single"; + httpHelp.doPost(address, JSON.toJSONString(request)); } } diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java new file mode 100644 index 0000000..c465f33 --- /dev/null +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/model/TaskRegisterRequest.java @@ -0,0 +1,45 @@ +package com.xiang.core.quartz.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: xiang + * @Date: 2026-01-05 15:49 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TaskRegisterRequest { + + /** + * 应用名称 + */ + private String applicationName; + + /** + * 应用地址 + */ + private String applicationAddress; + + /** + * 定时任务名称 + */ + private String beanName; + + /** + * 任务执行调度时间 + */ + private String cron; + + /** + * 类名 + */ + private String clazz; + + /** + * 方法 + */ + private String method; +} diff --git a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/scanner/JobScanner.java b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/scanner/JobScanner.java index ea5f635..49f0096 100644 --- a/xservice-quartz-core/src/main/java/com/xiang/core/quartz/scanner/JobScanner.java +++ b/xservice-quartz-core/src/main/java/com/xiang/core/quartz/scanner/JobScanner.java @@ -54,7 +54,7 @@ public class JobScanner implements SmartInitializingSingleton { job.setBean(bean); job.setMethod(method); JobDefinitionHolder.register(job); - adminJobClient.registerJob(job); + adminJobClient.registerJob(job, method.getClass().getName()); } } }