feat:动态调度优化
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -40,7 +40,7 @@
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-schedule-starter</artifactId>
|
||||
<version>1.0-snapshot</version>
|
||||
<version>1.1-snapshot</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.xiang.xservice.fwd.entity.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class FwdOrderTaskParam {
|
||||
private Long projectId;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.xiang.xservice.fwd.schedule;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.xiang.xservice.basic.utils.DateUtils;
|
||||
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;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
||||
import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper;
|
||||
@@ -11,6 +11,7 @@ import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper;
|
||||
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.entity.TaskConfig;
|
||||
import com.xiang.xservice.schedule.service.IDynamicTaskSchedulerService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -23,7 +24,6 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -77,8 +77,9 @@ 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");
|
||||
String taskId = UUID.randomUUID().toString();
|
||||
dynamicTaskSchedulerService.schedule(taskId, data.getPreSaleTime(), new TicketGrabTask(fwdUserConfigMapper, fwdAudienceConfigMapper, performConfigMapper, iPerformService));
|
||||
dynamicTaskSchedulerService.schedule(
|
||||
new TaskConfig(System.currentTimeMillis(), data.getProjectName(), data.getPreSaleTime()),
|
||||
new TicketGrabTask(fwdUserConfigMapper, fwdAudienceConfigMapper, iPerformService, new FwdOrderTaskParam(data.getProjectId())));
|
||||
}
|
||||
msg.append("请注意进行数据库配置的更改!");
|
||||
dingTalkService.sendChatMessage(chatId, msg.toString());
|
||||
|
||||
@@ -1,48 +1,46 @@
|
||||
package com.xiang.xservice.fwd.schedule;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.xiang.xservice.fwd.entity.param.FwdOrderTaskParam;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FAudienceConfig;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FUserConfig;
|
||||
import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper;
|
||||
import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper;
|
||||
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper;
|
||||
import com.xiang.xservice.fwd.service.IPerformService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TicketGrabTask implements Runnable {
|
||||
|
||||
private final FwdUserConfigMapper userConfigMapper;
|
||||
private final FwdAudienceConfigMapper audienceConfigMapper;
|
||||
private final FwdPerformConfigMapper performConfigMapper;
|
||||
private final IPerformService performService;
|
||||
private final FwdOrderTaskParam param;
|
||||
|
||||
public TicketGrabTask(FwdUserConfigMapper userConfigMapper, FwdAudienceConfigMapper audienceConfigMapper, IPerformService performService, FwdOrderTaskParam param) {
|
||||
this.userConfigMapper = userConfigMapper;
|
||||
this.audienceConfigMapper = audienceConfigMapper;
|
||||
this.performService = performService;
|
||||
this.param = param;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
log.info("【TicketGrabTask】 run start. 获取到参数:{}", JSON.toJSONString(param));
|
||||
List<FUserConfig> availableUser = userConfigMapper.getAvailableUser();
|
||||
if (CollectionUtils.isEmpty(availableUser)) {
|
||||
return;
|
||||
}
|
||||
for (FUserConfig userConfig : availableUser) {
|
||||
List<FAudienceConfig> audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
|
||||
List<FPerformConfig> availablePerform = performConfigMapper.getAvailablePerform();
|
||||
if (CollectionUtils.isNotEmpty(availablePerform)) {
|
||||
for (FPerformConfig performConfig : availablePerform) {
|
||||
try {
|
||||
performService.createProjectOrder(performConfig.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()));
|
||||
} catch (Exception e) {
|
||||
log.error("创建订单失败", e);
|
||||
}
|
||||
}
|
||||
try {
|
||||
performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()));
|
||||
} catch (Exception e) {
|
||||
log.error("创建订单失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,3 +4,15 @@ spring:
|
||||
username: root
|
||||
password: 123456
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
redis:
|
||||
host: r-bp1dqqbzlfw04fldp3pd.redis.rds.aliyuncs.com
|
||||
port: 6379
|
||||
password: Admin@123 # 如果无密码可以省略
|
||||
database: 0
|
||||
timeout: 5000
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 8
|
||||
max-idle: 8
|
||||
min-idle: 0
|
||||
max-wait: 1000
|
||||
Reference in New Issue
Block a user