feat:(1.2.0-beta2): 1、修复openapi中add方法的相关方法 2、按照类型重新封装关于update方法的openapi

This commit is contained in:
srzou 2024-10-19 20:54:32 +08:00
parent 40d16177dd
commit a170b03898
12 changed files with 199 additions and 102 deletions

View File

@ -11,7 +11,7 @@ import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
public class BroadcastAddHandler extends AddHandler<BroadcastAddHandler> { public class BroadcastAddHandler extends AddHandler<BroadcastAddHandler> {
public BroadcastAddHandler() { public BroadcastAddHandler() {
this(JobTaskTypeEnum.CLUSTER, null); this(JobTaskTypeEnum.BROADCAST, null);
} }
public BroadcastAddHandler(JobTaskTypeEnum taskType, Integer shardNum) { public BroadcastAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {

View File

@ -10,8 +10,8 @@ import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
*/ */
public class ClusterAddHandler extends AddHandler<ClusterAddHandler> { public class ClusterAddHandler extends AddHandler<ClusterAddHandler> {
public ClusterAddHandler(JobTaskTypeEnum taskType) { public ClusterAddHandler() {
this(taskType, null); this(JobTaskTypeEnum.CLUSTER, null);
} }
public ClusterAddHandler(JobTaskTypeEnum taskType, Integer shardNum) { public ClusterAddHandler(JobTaskTypeEnum taskType, Integer shardNum) {

View File

@ -21,8 +21,8 @@ public class MapAddHandler extends AddHandler<MapAddHandler> {
} }
@Override @Override
public MapAddHandler addShardingArgs(String... shardingValue) { public MapAddHandler addArgsStr(String argsKey, Object argsValue) {
return super.addShardingArgs(shardingValue); return super.addArgsStr(argsKey, argsValue);
} }
@Override @Override

View File

@ -21,8 +21,8 @@ public class MapReduceAddHandler extends AddHandler<MapReduceAddHandler> {
} }
@Override @Override
public MapReduceAddHandler addShardingArgs(String... shardingValue) { public MapReduceAddHandler addArgsStr(String argsKey, Object argsValue) {
return super.addShardingArgs(shardingValue); return super.addArgsStr(argsKey, argsValue);
} }
@Override @Override

View File

@ -1,4 +1,4 @@
package com.aizuda.snailjob.client.job.core.handler.quert; package com.aizuda.snailjob.client.job.core.handler.query;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;

View File

@ -0,0 +1,14 @@
package com.aizuda.snailjob.client.job.core.handler.update;
public class BroadcastUpdateHandler extends UpdateHandler<BroadcastUpdateHandler>{
public BroadcastUpdateHandler(Long jobId) {
super(jobId);
setR(this);
}
@Override
public BroadcastUpdateHandler addArgsStr(String argsKey, Object argsValue) {
return super.addArgsStr(argsKey, argsValue);
}
}

View File

@ -0,0 +1,21 @@
package com.aizuda.snailjob.client.job.core.handler.update;
import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
public class ClusterUpdateHandler extends UpdateHandler<ClusterUpdateHandler> {
public ClusterUpdateHandler(Long jobId) {
super(jobId);
setR(this);
}
@Override
public ClusterUpdateHandler setRouteKey(AllocationAlgorithmEnum algorithmEnum) {
return super.setRouteKey(algorithmEnum);
}
@Override
public ClusterUpdateHandler addArgsStr(String argsKey, Object argsValue) {
return super.addArgsStr(argsKey, argsValue);
}
}

View File

@ -0,0 +1,24 @@
package com.aizuda.snailjob.client.job.core.handler.update;
public class MapReduceUpdateHandler extends UpdateHandler<MapReduceUpdateHandler> {
public MapReduceUpdateHandler(Long jobId) {
super(jobId);
setR(this);
}
@Override
public MapReduceUpdateHandler addArgsStr(String argsKey, Object argsValue) {
return super.addArgsStr(argsKey, argsValue);
}
@Override
public MapReduceUpdateHandler setParallelNum(Integer parallelNum) {
return super.setParallelNum(parallelNum);
}
@Override
public MapReduceUpdateHandler setShardNum(Integer shardNum) {
return super.setShardNum(shardNum);
}
}

View File

@ -0,0 +1,20 @@
package com.aizuda.snailjob.client.job.core.handler.update;
public class MapUpdateHandler extends UpdateHandler<MapUpdateHandler> {
public MapUpdateHandler(Long jobId) {
super(jobId);
setR(this);
}
@Override
protected MapUpdateHandler addArgsStr(String argsKey, Object argsValue) {
return super.addArgsStr(argsKey, argsValue);
}
@Override
protected MapUpdateHandler setParallelNum(Integer parallelNum) {
return super.setParallelNum(parallelNum);
}
}

View File

@ -0,0 +1,19 @@
package com.aizuda.snailjob.client.job.core.handler.update;
public class ShardingUpdateHandler extends UpdateHandler<ShardingUpdateHandler>{
public ShardingUpdateHandler(Long jobId) {
super(jobId);
setR(this);
}
@Override
protected ShardingUpdateHandler addShardingArgs(String[] shardingValue) {
return super.addShardingArgs(shardingValue);
}
@Override
protected ShardingUpdateHandler setParallelNum(Integer parallelNum) {
return super.setParallelNum(parallelNum);
}
}

View File

@ -2,34 +2,29 @@ package com.aizuda.snailjob.client.job.core.handler.update;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.client.common.exception.SnailJobClientException;
import com.aizuda.snailjob.client.job.core.dto.RequestUpdateJobDTO; import com.aizuda.snailjob.client.job.core.dto.RequestUpdateJobDTO;
import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum; import com.aizuda.snailjob.client.job.core.enums.AllocationAlgorithmEnum;
import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum; import com.aizuda.snailjob.client.job.core.enums.TriggerTypeEnum;
import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler; import com.aizuda.snailjob.client.job.core.handler.AbstractRequestHandler;
import com.aizuda.snailjob.client.job.core.util.ValidatorUtils; import com.aizuda.snailjob.client.job.core.util.ValidatorUtils;
import com.aizuda.snailjob.common.core.enums.BlockStrategyEnum; import com.aizuda.snailjob.common.core.enums.BlockStrategyEnum;
import com.aizuda.snailjob.common.core.enums.ExecutorTypeEnum;
import com.aizuda.snailjob.common.core.enums.JobArgsTypeEnum; import com.aizuda.snailjob.common.core.enums.JobArgsTypeEnum;
import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
import com.aizuda.snailjob.common.core.util.JsonUtil; import com.aizuda.snailjob.common.core.util.JsonUtil;
import com.aizuda.snailjob.common.log.SnailJobLog; import lombok.Setter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import static com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum.CLUSTER;
public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> { public abstract class UpdateHandler<R> extends AbstractRequestHandler<Boolean> {
private final RequestUpdateJobDTO reqDTO; private final RequestUpdateJobDTO reqDTO;
@Setter
private R r;
public RequestUpdateHandler(Long jobId) { public UpdateHandler(Long jobId) {
this.reqDTO = new RequestUpdateJobDTO(); this.reqDTO = new RequestUpdateJobDTO();
// 更新必须要id // 更新必须要id
reqDTO.setId(jobId); reqDTO.setId(jobId);
// 默认java
reqDTO.setExecutorType(ExecutorTypeEnum.JAVA.getType());
} }
@Override @Override
@ -39,7 +34,10 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
@Override @Override
protected void beforeExecute() { protected void beforeExecute() {
if (reqDTO.getTriggerType() == TriggerTypeEnum.WORK_FLOW.getType()) {
// 工作流没有调度时间
setTriggerInterval("*");
}
} }
@Override @Override
@ -49,30 +47,7 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
@Override @Override
protected Pair<Boolean, String> checkRequest() { protected Pair<Boolean, String> checkRequest() {
Pair<Boolean, String> validated = ValidatorUtils.validateEntity(reqDTO); return ValidatorUtils.validateEntity(reqDTO);
if (!validated.getKey()) {
return validated;
}
// 如果校验正确下面则进行相关参数填充
Optional.ofNullable(reqDTO.getTaskType()).ifPresent(taskType -> {
if (reqDTO.getTaskType() == CLUSTER.getType()) {
// 集群模式只允许并发为 1
setParallelNum(1);
} else {
// 非集群模式 路由策略只能为轮询
setRouteKey(AllocationAlgorithmEnum.ROUND);
}
});
Optional.ofNullable(reqDTO.getTriggerType()).ifPresent((triggerType) -> {
if (reqDTO.getTriggerType() == TriggerTypeEnum.WORK_FLOW.getType()) {
// 工作流没有调度时间
setTriggerInterval("*");
}
});
return validated;
} }
/** /**
@ -82,19 +57,14 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param shardNum * @param shardNum
* @return * @return
*/ */
public RequestUpdateHandler setShardNum(Integer shardNum) { protected R setShardNum(Integer shardNum) {
Integer taskType = reqDTO.getTaskType(); // 设置分片
if (taskType != null && taskType.equals(JobTaskTypeEnum.MAP_REDUCE.getType())) { if (shardNum != null) {
// 设置分片 Map<String, Object> map = new HashMap<>(1);
if (shardNum != null) { map.put(SHARD_NUM, shardNum);
Map<String, Object> map = new HashMap<>(1); setArgsStr(map);
map.put(SHARD_NUM, shardNum);
reqDTO.setArgsStr(JsonUtil.toJsonString(map));
}
} else {
throw new SnailJobClientException("非MapReduce模式不能设置分片数");
} }
return this; return r;
} }
/** /**
@ -103,9 +73,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param jobName * @param jobName
* @return * @return
*/ */
public RequestUpdateHandler setJobName(String jobName) { public R setJobName(String jobName) {
reqDTO.setJobName(jobName); reqDTO.setJobName(jobName);
return this; return r;
} }
/** /**
@ -115,7 +85,7 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param argsStr * @param argsStr
* @return * @return
*/ */
private RequestUpdateHandler setArgsStr(Map<String, Object> argsStr) { private R setArgsStr(Map<String, Object> argsStr) {
Map<String, Object> args = new HashMap<>(); Map<String, Object> args = new HashMap<>();
if (StrUtil.isNotBlank(reqDTO.getArgsStr())) { if (StrUtil.isNotBlank(reqDTO.getArgsStr())) {
args = JsonUtil.parseHashMap(reqDTO.getArgsStr()); args = JsonUtil.parseHashMap(reqDTO.getArgsStr());
@ -123,7 +93,7 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
args.putAll(argsStr); args.putAll(argsStr);
reqDTO.setArgsStr(JsonUtil.toJsonString(args)); reqDTO.setArgsStr(JsonUtil.toJsonString(args));
reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType()); reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
return this; return r;
} }
/** /**
@ -135,12 +105,7 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param argsValue 参数值 * @param argsValue 参数值
* @return * @return
*/ */
public RequestUpdateHandler addArgsStr(String argsKey, Object argsValue) { protected R addArgsStr(String argsKey, Object argsValue) {
if (reqDTO.getTaskType() != null
&& reqDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())) {
SnailJobLog.LOCAL.warn("静态分片任务不可使用该方法添加相关任务参数请使用addShardingArgs");
return this;
}
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
if (StrUtil.isNotBlank(reqDTO.getArgsStr())) { if (StrUtil.isNotBlank(reqDTO.getArgsStr())) {
map = JsonUtil.parseHashMap(reqDTO.getArgsStr()); map = JsonUtil.parseHashMap(reqDTO.getArgsStr());
@ -148,24 +113,20 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
map.put(argsKey, argsValue); map.put(argsKey, argsValue);
reqDTO.setArgsStr(JsonUtil.toJsonString(map)); reqDTO.setArgsStr(JsonUtil.toJsonString(map));
reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType()); reqDTO.setArgsType(JobArgsTypeEnum.JSON.getArgsType());
return this; return r;
} }
/** /**
* 添加静态分片相关参数 * 添加静态分片相关参数
* 只有静态分片任务可用
* *
* @param shardingValue * @param shardingValue
* @return * @return
*/ */
public RequestUpdateHandler addShardingArgs(String[] shardingValue) { protected R addShardingArgs(String[] shardingValue) {
if (reqDTO.getTaskType() != null
&& !reqDTO.getTaskType().equals(JobTaskTypeEnum.SHARDING.getType())) {
SnailJobLog.LOCAL.warn("非静态分片任务不可使用该方法添加相关任务参数请使用addArgsStr");
return this;
}
reqDTO.setArgsStr(JsonUtil.toJsonString(shardingValue)); reqDTO.setArgsStr(JsonUtil.toJsonString(shardingValue));
reqDTO.setArgsType(JobArgsTypeEnum.TEXT.getArgsType()); reqDTO.setArgsType(JobArgsTypeEnum.TEXT.getArgsType());
return this; return r;
} }
/** /**
@ -174,9 +135,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param algorithmEnum * @param algorithmEnum
* @return * @return
*/ */
public RequestUpdateHandler setRouteKey(AllocationAlgorithmEnum algorithmEnum) { protected R setRouteKey(AllocationAlgorithmEnum algorithmEnum) {
reqDTO.setRouteKey(algorithmEnum.getType()); reqDTO.setRouteKey(algorithmEnum.getType());
return this; return r;
} }
/** /**
@ -185,9 +146,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param executorInfo * @param executorInfo
* @return * @return
*/ */
public RequestUpdateHandler setExecutorInfo(String executorInfo) { public R setExecutorInfo(String executorInfo) {
reqDTO.setExecutorInfo(executorInfo); reqDTO.setExecutorInfo(executorInfo);
return this; return r;
} }
/** /**
@ -196,9 +157,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param triggerType * @param triggerType
* @return * @return
*/ */
public RequestUpdateHandler setTriggerType(TriggerTypeEnum triggerType) { public R setTriggerType(TriggerTypeEnum triggerType) {
reqDTO.setTriggerType(triggerType.getType()); reqDTO.setTriggerType(triggerType.getType());
return this; return r;
} }
/** /**
@ -209,9 +170,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param triggerInterval * @param triggerInterval
* @return * @return
*/ */
public RequestUpdateHandler setTriggerInterval(String triggerInterval) { public R setTriggerInterval(String triggerInterval) {
reqDTO.setTriggerInterval(triggerInterval); reqDTO.setTriggerInterval(triggerInterval);
return this; return r;
} }
/** /**
@ -220,9 +181,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param blockStrategy * @param blockStrategy
* @return * @return
*/ */
public RequestUpdateHandler setBlockStrategy(BlockStrategyEnum blockStrategy) { public R setBlockStrategy(BlockStrategyEnum blockStrategy) {
reqDTO.setBlockStrategy(blockStrategy.getBlockStrategy()); reqDTO.setBlockStrategy(blockStrategy.getBlockStrategy());
return this; return r;
} }
/** /**
@ -231,9 +192,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param executorTimeout * @param executorTimeout
* @return * @return
*/ */
public RequestUpdateHandler setExecutorTimeout(Integer executorTimeout) { public R setExecutorTimeout(Integer executorTimeout) {
reqDTO.setExecutorTimeout(executorTimeout); reqDTO.setExecutorTimeout(executorTimeout);
return this; return r;
} }
/** /**
@ -242,9 +203,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param maxRetryTimes * @param maxRetryTimes
* @return * @return
*/ */
public RequestUpdateHandler setMaxRetryTimes(Integer maxRetryTimes) { public R setMaxRetryTimes(Integer maxRetryTimes) {
reqDTO.setMaxRetryTimes(maxRetryTimes); reqDTO.setMaxRetryTimes(maxRetryTimes);
return this; return r;
} }
/** /**
@ -253,9 +214,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param retryInterval * @param retryInterval
* @return * @return
*/ */
public RequestUpdateHandler setRetryInterval(Integer retryInterval) { public R setRetryInterval(Integer retryInterval) {
reqDTO.setRetryInterval(retryInterval); reqDTO.setRetryInterval(retryInterval);
return this; return r;
} }
/** /**
@ -264,9 +225,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param parallelNum * @param parallelNum
* @return * @return
*/ */
public RequestUpdateHandler setParallelNum(Integer parallelNum) { protected R setParallelNum(Integer parallelNum) {
reqDTO.setParallelNum(parallelNum); reqDTO.setParallelNum(parallelNum);
return this; return r;
} }
/** /**
@ -275,9 +236,9 @@ public class RequestUpdateHandler extends AbstractRequestHandler<Boolean> {
* @param description * @param description
* @return * @return
*/ */
public RequestUpdateHandler setDescription(String description) { public R setDescription(String description) {
reqDTO.setDescription(description); reqDTO.setDescription(description);
return this; return r;
} }

View File

@ -2,11 +2,9 @@ package com.aizuda.snailjob.client.job.core.openapi;
import com.aizuda.snailjob.client.job.core.enums.JobTypeEnum; import com.aizuda.snailjob.client.job.core.enums.JobTypeEnum;
import com.aizuda.snailjob.client.job.core.handler.add.*; import com.aizuda.snailjob.client.job.core.handler.add.*;
import com.aizuda.snailjob.client.job.core.handler.quert.RequestQueryHandler; import com.aizuda.snailjob.client.job.core.handler.query.RequestQueryHandler;
import com.aizuda.snailjob.client.job.core.handler.trigger.RequestTriggerJobHandler; import com.aizuda.snailjob.client.job.core.handler.trigger.RequestTriggerJobHandler;
import com.aizuda.snailjob.client.job.core.handler.update.RequestUpdateHandler; import com.aizuda.snailjob.client.job.core.handler.update.*;
import com.aizuda.snailjob.client.job.core.handler.update.RequestUpdateStatusHandler;
import com.aizuda.snailjob.common.core.enums.JobTaskTypeEnum;
/** /**
* @author opensnail * @author opensnail
@ -23,7 +21,7 @@ public final class SnailJobOpenApi {
* @return {@link ClusterAddHandler} * @return {@link ClusterAddHandler}
*/ */
public static ClusterAddHandler addClusterJob() { public static ClusterAddHandler addClusterJob() {
return new ClusterAddHandler(JobTaskTypeEnum.CLUSTER); return new ClusterAddHandler();
} }
/** /**
@ -64,13 +62,53 @@ public final class SnailJobOpenApi {
} }
/** /**
* 更新定时任务 * 更新广播定时任务
* *
* @param jobId 定时任务ID * @param jobId 定时任务ID
* @return {@link RequestUpdateHandler} * @return {@link BroadcastUpdateHandler}
*/ */
public static RequestUpdateHandler updateJob(Long jobId) { public static BroadcastUpdateHandler updateBroadcastJob(Long jobId) {
return new RequestUpdateHandler(jobId); return new BroadcastUpdateHandler(jobId);
}
/**
* 更新集群定时任务
*
* @param jobId 定时任务ID
* @return {@link ClusterUpdateHandler}
*/
public static ClusterUpdateHandler updateClusterJob(Long jobId) {
return new ClusterUpdateHandler(jobId);
}
/**
* 更新MapReduce定时任务
*
* @param jobId 定时任务ID
* @return {@link MapReduceUpdateHandler}
*/
public static MapReduceUpdateHandler updateMapReduceJob(Long jobId) {
return new MapReduceUpdateHandler(jobId);
}
/**
* 更新Map定时任务
*
* @param jobId 定时任务ID
* @return {@link MapUpdateHandler}
*/
public static MapUpdateHandler updateMapJob(Long jobId) {
return new MapUpdateHandler(jobId);
}
/**
* 更新静态分片定时任务
*
* @param jobId 定时任务ID
* @return {@link ShardingUpdateHandler}
*/
public static ShardingUpdateHandler updateShardingJob(Long jobId) {
return new ShardingUpdateHandler(jobId);
} }
/** /**