diff --git a/pom.xml b/pom.xml
index 6ebf149..903ba07 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
com.xiang
xservice-common
- 1.0.1-snapshot
+ 1.0.2-SNAPSHOT
com.xiang
diff --git a/script/src/main/java/com/xiang/ServiceScriptApplication.java b/script/src/main/java/com/xiang/ServiceScriptApplication.java
index 835c988..5fa3553 100644
--- a/script/src/main/java/com/xiang/ServiceScriptApplication.java
+++ b/script/src/main/java/com/xiang/ServiceScriptApplication.java
@@ -1,5 +1,6 @@
package com.xiang;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -10,6 +11,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
*/
@SpringBootApplication
@EnableScheduling
+@MapperScan("com.xiang.xservice.fwd.mapper")
public class ServiceScriptApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceScriptApplication.class, args);
diff --git a/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java b/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java
index 8975931..cfaee02 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java
@@ -9,4 +9,5 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class FwdOrderTaskParam {
private Long projectId;
+ private Long taskId;
}
diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java
index 38f6cbd..11d95e0 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java
@@ -2,6 +2,7 @@ package com.xiang.xservice.fwd.schedule;
import com.alibaba.fastjson2.JSONObject;
import com.xiang.xservice.basic.utils.DateUtils;
+import com.xiang.xservice.basic.utils.PrimaryKeyUtils;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.param.FwdOrderTaskParam;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
@@ -12,7 +13,11 @@ import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.fwd.service.IPerformService;
import com.xiang.xservice.schedule.core.DynamicTaskScheduler;
+import com.xiang.xservice.schedule.entity.ScheduledTaskEntity;
import com.xiang.xservice.schedule.entity.TaskConfig;
+import com.xiang.xservice.schedule.enums.TaskGroupEnum;
+import com.xiang.xservice.schedule.enums.TaskStatusEnum;
+import com.xiang.xservice.schedule.service.IDynamicTaskSchedulerService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -23,6 +28,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@@ -43,6 +49,7 @@ public class FwdImportantMsgJob {
private final FwdUserConfigMapper fwdUserConfigMapper;
private final FwdAudienceConfigMapper fwdAudienceConfigMapper;
private final IPerformService iPerformService;
+ private final IDynamicTaskSchedulerService dynamicTaskSchedulerService;
@Value("${DingTalk.chatId}")
private String chatId;
@@ -77,12 +84,29 @@ public class FwdImportantMsgJob {
StringBuilder msg = new StringBuilder("今日" + now + "演唱会门票预售信息:\n");
for (FPerformProjectInfo data : saleTodayData) {
msg.append("演唱会名称:").append(data.getProjectName()).append("预售时间:").append(DateUtils.getDateTimeStr(data.getPreSaleTime())).append("\n");
+ long taskId = PrimaryKeyUtils.snowflakeId();
dynamicTaskScheduler.schedule(
- new TaskConfig(System.currentTimeMillis(), data.getProjectName(), data.getPreSaleTime()),
- new TicketGrabTask(fwdUserConfigMapper, fwdAudienceConfigMapper, iPerformService, new FwdOrderTaskParam(data.getProjectId())));
+ new TaskConfig(taskId, "芬玩岛演唱会抢票-【" + data.getProjectName() + "】", TaskGroupEnum.SERVICE_FWD_SCHEDULE.getCode(),
+ data.getPreSaleTime(), null),
+ new TicketGrabTask(fwdUserConfigMapper, fwdAudienceConfigMapper, iPerformService,
+ new FwdOrderTaskParam(data.getProjectId(), taskId), dynamicTaskSchedulerService));
+ savaTask(data, taskId);
}
msg.append("请注意进行数据库配置的更改!");
dingTalkService.sendChatMessage(chatId, msg.toString());
log.info("【芬玩岛】演唱会预售定时任务结束!time:{}", System.currentTimeMillis());
}
+
+ private void savaTask(FPerformProjectInfo data, long taskId) {
+ ScheduledTaskEntity entity = new ScheduledTaskEntity();
+ entity.setId(taskId);
+ entity.setTaskName("芬玩岛演唱会抢票-【" + data.getProjectName() + "】");
+ entity.setTaskGroup(TaskGroupEnum.SERVICE_FWD_SCHEDULE.getCode());
+ entity.setRunTime(data.getPreSaleTime());
+ entity.setStatus(TaskStatusEnum.UN_START.getCode());
+ entity.setParameters(null);
+ entity.setCreatedTime(LocalDateTime.now());
+ entity.setUpdatedTime(LocalDateTime.now());
+ dynamicTaskSchedulerService.saveTask(entity);
+ }
}
diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java
index f478e7d..418a611 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java
@@ -7,6 +7,7 @@ import com.xiang.xservice.fwd.entity.pojo.FUserConfig;
import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper;
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.fwd.service.IPerformService;
+import com.xiang.xservice.schedule.service.IDynamicTaskSchedulerService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -20,17 +21,22 @@ public class TicketGrabTask implements Runnable {
private final FwdAudienceConfigMapper audienceConfigMapper;
private final IPerformService performService;
private final FwdOrderTaskParam param;
+ private final IDynamicTaskSchedulerService dynamicTaskSchedulerService;
- public TicketGrabTask(FwdUserConfigMapper userConfigMapper, FwdAudienceConfigMapper audienceConfigMapper, IPerformService performService, FwdOrderTaskParam param) {
+ public TicketGrabTask(FwdUserConfigMapper userConfigMapper, FwdAudienceConfigMapper audienceConfigMapper,
+ IPerformService performService, FwdOrderTaskParam param,
+ IDynamicTaskSchedulerService dynamicTaskSchedulerService) {
this.userConfigMapper = userConfigMapper;
this.audienceConfigMapper = audienceConfigMapper;
this.performService = performService;
this.param = param;
+ this.dynamicTaskSchedulerService = dynamicTaskSchedulerService;
}
@Override
public void run() {
log.info("【TicketGrabTask】 run start. 获取到参数:{}", JSON.toJSONString(param));
+ dynamicTaskSchedulerService.updateProcess(param.getTaskId());
List availableUser = userConfigMapper.getAvailableUser();
if (CollectionUtils.isEmpty(availableUser)) {
return;
@@ -38,7 +44,9 @@ public class TicketGrabTask implements Runnable {
for (FUserConfig userConfig : availableUser) {
List audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
try {
- performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()));
+ if (performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()))) {
+ dynamicTaskSchedulerService.finishTask(param.getTaskId());
+ }
} catch (Exception e) {
log.error("创建订单失败", e);
}