diff --git a/pom.xml b/pom.xml
index 7dfe569..6009ed6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,12 @@
xservice-third-part
1.0-snapshot
+
+ com.xiang
+ xservice-schedule-starter
+ 1.0-snapshot
+
+
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 8430302..70606ce 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
@@ -6,9 +6,12 @@ import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
+import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper;
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.service.IDynamicTaskSchedulerService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -20,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.util.List;
+import java.util.UUID;
import java.util.stream.Collectors;
/**
@@ -34,8 +38,11 @@ public class FwdImportantMsgJob {
private final FwdPerformProjectInfoMapper performProjectInfoMapper;
private final FwdPerformConfigMapper performConfigMapper;
- private final IPerformService performService;
+ private final IDynamicTaskSchedulerService dynamicTaskSchedulerService;
private final DingTalkService dingTalkService;
+ private final FwdUserConfigMapper fwdUserConfigMapper;
+ private final FwdAudienceConfigMapper fwdAudienceConfigMapper;
+ private final IPerformService iPerformService;
@Value("${DingTalk.chatId}")
private String chatId;
@@ -70,17 +77,11 @@ 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));
}
msg.append("请注意进行数据库配置的更改!");
dingTalkService.sendChatMessage(chatId, msg.toString());
log.info("【芬玩岛】演唱会预售定时任务结束!time:{}", System.currentTimeMillis());
}
-
- @Scheduled(cron = "0 0 12 * * ? ")
- @PostMapping("/orderCreateJob")
- public void orderCreateJob() throws Exception {
- for (int i = 0; i < 3; i++) {
- performService.createProjectOrder(1295746988L);
- }
- }
}
diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java
index 19c2e7f..dd1bd04 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/PullDataFromFWDJob.java
@@ -275,6 +275,9 @@ public class PullDataFromFWDJob {
}
}
+ /**
+ * 每月拉取观影人数据更新
+ */
@Scheduled(cron = "0 0 0 1 1/1 ? ")
public void pullAudienceMemberInfo() {
List availableUser = userConfigMapper.getAvailableUser();
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
new file mode 100644
index 0000000..da894f4
--- /dev/null
+++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java
@@ -0,0 +1,49 @@
+package com.xiang.xservice.fwd.schedule;
+
+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;
+
+ @Override
+ public void run() {
+ List availableUser = userConfigMapper.getAvailableUser();
+ if (CollectionUtils.isEmpty(availableUser)) {
+ return;
+ }
+ for (FUserConfig userConfig : availableUser) {
+ List audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
+ List 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);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java b/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java
index f812151..15035aa 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/server/FwdOuterController.java
@@ -28,6 +28,8 @@ public class FwdOuterController {
private final IPerformServiceHttp performServiceHttp;
private final IPerformService performService;
+ private static final List FREQUENT_IDS = List.of(50438548L, 35320661L, 50436621L, 50442739L);
+
@GetMapping("/getShowProjects")
public Result getShowProjects() {
@@ -49,7 +51,7 @@ public class FwdOuterController {
@PostMapping("/createOrder")
public Result createOrder(Long projectId) throws Exception {
- if (performService.createProjectOrder(projectId)) {
+ if (performService.createProjectOrder(projectId, FREQUENT_IDS)) {
return Result.success("下单成功!");
}
return Result.error("下单失败!");
diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java b/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java
index 0453b7c..8fb04ca 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/service/IPerformService.java
@@ -15,5 +15,5 @@ public interface IPerformService {
List getPerformSeatInfoByProjectId(Long projectId);
- Boolean createProjectOrder(Long projectId) throws Exception;
+ Boolean createProjectOrder(Long projectId, List frequentIds) throws Exception;
}
diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java
index c5ec2ec..350fed9 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java
@@ -56,7 +56,7 @@ public class PerformServiceImpl implements IPerformService {
}
@Override
- public Boolean createProjectOrder(Long projectId) throws Exception {
+ public Boolean createProjectOrder(Long projectId, List frequentIds) throws Exception {
FPerformProjectInfo performByProjectId = getPerformByProjectId(projectId);
if (Objects.isNull(performByProjectId)) {
log.info("该projectId:{}暂无演出信息", projectId);
@@ -67,42 +67,31 @@ public class PerformServiceImpl implements IPerformService {
log.info("该projectId:{}暂无座位信息", projectId);
return Boolean.FALSE;
}
- List availableUser = userConfigMapper.getAvailableUser();
- if (CollectionUtils.isEmpty(availableUser)) {
- return Boolean.FALSE;
- }
- for (FUserConfig userConfig : availableUser) {
- List audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
- if (CollectionUtils.isNotEmpty(audiences)) {
- List frequentIds = audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList());
- for (FPerformSeatInfo fPerformSeatInfo : seatInfoByProjectId) {
- if (1 == fPerformSeatInfo.getSoldOut()) {
- continue;
- }
- ProjectOrderCreateReq projectOrderCreateReq = new ProjectOrderCreateReq();
- projectOrderCreateReq.setDeliveryType(1);
- projectOrderCreateReq.setContactName("朱吉祥");
- projectOrderCreateReq.setContactPhone("15858717571");
- projectOrderCreateReq.setPayment(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(frequentIds.size())).setScale(2));
- projectOrderCreateReq.setTotalPrice(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(frequentIds.size())).setScale(2, BigDecimal.ROUND_HALF_UP));
- projectOrderCreateReq.setPerformId(fPerformSeatInfo.getPerformId());
- projectOrderCreateReq.setProjectId(projectId.toString());
- projectOrderCreateReq.setPrivilegeCodeList(new ArrayList<>());
- projectOrderCreateReq.setAudienceCount(frequentIds.size());
- projectOrderCreateReq.setFrequentIds(frequentIds);
- projectOrderCreateReq.setSeatPlanIds(Collections.singletonList(fPerformSeatInfo.getSeatPlanId()));
- projectOrderCreateReq.setBlackBox("0");
- projectOrderCreateReq.setCombineTicketVos(null);
- projectOrderCreateReq.setOrdinaryTicketVos(null);
- ProjectOrderCreateResp projectOrder = performServiceHttp.createProjectOrder(projectOrderCreateReq);
- if (Objects.nonNull(projectOrder)) {
- log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
- String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + ",请在2分钟内完成付款!";
- dingTalkService.sendChatMessage(chatId, msg);
- return Boolean.TRUE;
- }
- }
-
+ for (FPerformSeatInfo fPerformSeatInfo : seatInfoByProjectId) {
+ if (1 == fPerformSeatInfo.getSoldOut()) {
+ continue;
+ }
+ ProjectOrderCreateReq projectOrderCreateReq = new ProjectOrderCreateReq();
+ projectOrderCreateReq.setDeliveryType(1);
+ projectOrderCreateReq.setContactName("朱吉祥");
+ projectOrderCreateReq.setContactPhone("15858717571");
+ projectOrderCreateReq.setPayment(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(frequentIds.size())).setScale(2));
+ projectOrderCreateReq.setTotalPrice(fPerformSeatInfo.getPrice().multiply(BigDecimal.valueOf(frequentIds.size())).setScale(2, BigDecimal.ROUND_HALF_UP));
+ projectOrderCreateReq.setPerformId(fPerformSeatInfo.getPerformId());
+ projectOrderCreateReq.setProjectId(projectId.toString());
+ projectOrderCreateReq.setPrivilegeCodeList(new ArrayList<>());
+ projectOrderCreateReq.setAudienceCount(frequentIds.size());
+ projectOrderCreateReq.setFrequentIds(frequentIds);
+ projectOrderCreateReq.setSeatPlanIds(Collections.singletonList(fPerformSeatInfo.getSeatPlanId()));
+ projectOrderCreateReq.setBlackBox("0");
+ projectOrderCreateReq.setCombineTicketVos(null);
+ projectOrderCreateReq.setOrdinaryTicketVos(null);
+ ProjectOrderCreateResp projectOrder = performServiceHttp.createProjectOrder(projectOrderCreateReq);
+ if (Objects.nonNull(projectOrder)) {
+ log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
+ String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + ",请在2分钟内完成付款!";
+ dingTalkService.sendChatMessage(chatId, msg);
+ return Boolean.TRUE;
}
}
return Boolean.FALSE;