diff --git a/pom.xml b/pom.xml
index 6e05f59..3bd8869 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
com.xiang
xservice-basic
- 1.1-SNAPSHOT
+ 1.0
com.xiang
@@ -30,27 +30,27 @@
com.xiang
xservice-common
- 1.0.2-SNAPSHOT
+ 1.0
com.xiang
- xservice-third-part
- 1.1-snapshot
+ xservice-message-starter
+ 1.0
com.xiang
xservice-schedule-starter
- 1.1-snapshot
+ 1.0
com.xiang
xservice-cache
- 1.0-SNAPSHOT
+ 1.0
com.xiang
xservice-http-starter
- 1.0-SNAPSHOT
+ 1.0
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 b0e6ffb..dbedf15 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
@@ -1,7 +1,7 @@
package com.xiang.xservice.fwd.schedule;
import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson2.JSONObject;
+import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.basic.utils.PrimaryKeyUtils;
@@ -9,11 +9,14 @@ 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.entity.pojo.FPerformSeatInfo;
+import com.xiang.xservice.fwd.entity.resp.http.perform.*;
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.fwd.service.IPerformServiceHttp;
import com.xiang.xservice.schedule.core.DynamicTaskScheduler;
import com.xiang.xservice.schedule.entity.ScheduledTaskEntity;
import com.xiang.xservice.schedule.entity.TaskConfig;
@@ -28,6 +31,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
@@ -36,6 +40,8 @@ import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -46,6 +52,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
@Slf4j
@RestController
+@RequestMapping("/system/job/fwd")
public class FwdImportantMsgJob {
private final FwdPerformProjectInfoMapper performProjectInfoMapper;
@@ -56,6 +63,7 @@ public class FwdImportantMsgJob {
private final FwdAudienceConfigMapper fwdAudienceConfigMapper;
private final IPerformService iPerformService;
private final IDynamicTaskSchedulerService dynamicTaskSchedulerService;
+ private final IPerformServiceHttp iPerformServiceHttp;
@Value("${DingTalk.chatId}")
private String chatId;
@@ -120,10 +128,111 @@ public class FwdImportantMsgJob {
savaTask(data, taskId, params);
}
msg.append("请注意进行数据库配置的更改!");
- dingTalkService.sendChatMessage(chatId, msg.toString());
+ dingTalkService.sendRobotMessage(msg.toString());
log.info("【芬玩岛】演唱会预售定时任务结束!time:{}", System.currentTimeMillis());
}
+ @Scheduled(cron = "0 10 8 1/1 * ?")
+ @PostMapping("/presaleSeatReminderJob")
+ public void presaleSeatReminderJob() {
+
+ ScheduledTaskEntity entity = new ScheduledTaskEntity();
+ entity.setStatus(TaskStatusEnum.UN_START.getCode());
+ List taskList = dynamicTaskSchedulerService.getTaskList(entity);
+ if (CollectionUtils.isEmpty(taskList)) {
+ log.info("今天暂无预售的演出,time:{}", LocalDateTime.now());
+ return;
+ }
+ log.info("今天:{}的预售的项目信息:{}", LocalDateTime.now(), JSON.toJSONString(taskList));
+ LocalDateTime todayStartTime = LocalDate.now().atTime(0, 0, 0);
+ LocalDateTime todayEndTime = LocalDate.now().atTime(23, 59, 59);
+
+ StringBuffer msg = new StringBuffer();
+
+ taskList.forEach(taskEntity -> {
+ String parameters = taskEntity.getParameters();
+ JSONObject jsonObject = JSON.parseObject(parameters);
+ Long projectId = null;
+ try {
+ projectId = (Long) jsonObject.get("projectId");
+ } catch (Exception e) {
+ log.error("异常错误信息:{}", JSON.toJSONString(taskEntity), e);
+ }
+ if (Objects.nonNull(projectId)) {
+ Perform performsByProjectIdFromHttp = iPerformServiceHttp.getPerformsByProjectIdFromHttp(projectId);
+ if (Objects.nonNull(performsByProjectIdFromHttp)) {
+ for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) {
+ for (PerformDetail performDetail : performInfo.getPerformInfo()) {
+ LocalDateTime saleTime = DateUtils.getTimeFromStr(performDetail.getSaleTime());
+ if (saleTime.isAfter(todayStartTime) && saleTime.isBefore(todayEndTime)) {
+ List seatPlans = performDetail.getSeatPlans();
+ Map seatPlanMap = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a));
+ List seatPlanIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList());
+ List seatPlanStatusFromHttp = iPerformServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds);
+ for (SeatPlanStatus seatPlanStatus : seatPlanStatusFromHttp) {
+ if (!seatPlanStatus.getSoldOutFlag()) {
+ FPerformSeatInfo seatInfoBySeatId = iPerformService.getSeatInfoBySeatId(seatPlanStatus.getSeatPlanId());
+ if (Objects.nonNull(seatInfoBySeatId)) {
+ seatInfoBySeatId.setSoldOut(0);
+ iPerformService.updateSeatInfo(seatInfoBySeatId);
+ msg.append("演出任务名称").append(taskEntity.getTaskName()).append("的场次信息")
+ .append(performDetail.getName()).append("的座位信息")
+ .append(seatInfoBySeatId.getSeatPlanName()).append("信息已更新\n");
+ } else {
+ if (seatPlanMap.containsKey(seatPlanStatus.getSeatPlanId())) {
+ SeatPlan seatPlan = seatPlanMap.get(seatPlanStatus.getSeatPlanId());
+ FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
+ fPerformSeatInfo.setSeatPlanId(seatInfoBySeatId.getSeatPlanId());
+ fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
+ fPerformSeatInfo.setPerformId(seatInfoBySeatId.getPerformId());
+ fPerformSeatInfo.setPerformName(seatInfoBySeatId.getPerformName());
+ fPerformSeatInfo.setStopSale(seatInfoBySeatId.getStopSale());
+ fPerformSeatInfo.setShelfStatus(seatInfoBySeatId.getShelfStatus());
+ fPerformSeatInfo.setPrice(seatInfoBySeatId.getPrice());
+ fPerformSeatInfo.setDiscountPrice(seatInfoBySeatId.getDiscountPrice());
+ fPerformSeatInfo.setSubStatus(seatInfoBySeatId.getSubStatus());
+ fPerformSeatInfo.setQuantity(seatInfoBySeatId.getQuantity());
+ fPerformSeatInfo.setStatus(seatInfoBySeatId.getStatus());
+ fPerformSeatInfo.setMaxSellStock(seatInfoBySeatId.getMaxSellStock());
+ fPerformSeatInfo.setSoldStock(seatInfoBySeatId.getSoldStock());
+ fPerformSeatInfo.setLeftStock(seatInfoBySeatId.getLeftStock());
+ fPerformSeatInfo.setAbleSaleQuantity(seatInfoBySeatId.getAbleSaleQuantity());
+ fPerformSeatInfo.setAshShow(seatInfoBySeatId.getAshShow());
+ fPerformSeatInfo.setAshShowDesc(seatInfoBySeatId.getAshShowDesc());
+ fPerformSeatInfo.setSelectable(seatInfoBySeatId.getSelectable());
+ fPerformSeatInfo.setDisplay(seatInfoBySeatId.getDisplay());
+ fPerformSeatInfo.setAvailableTicketQuantity(seatInfoBySeatId.getAvailableTicketQuantity());
+ fPerformSeatInfo.setAvailableAllTicketQuantity(seatInfoBySeatId.getAvailableAllTicketQuantity());
+ fPerformSeatInfo.setSaleTime(seatInfoBySeatId.getSaleTime());
+ fPerformSeatInfo.setProjectId(seatInfoBySeatId.getProjectId());
+ fPerformSeatInfo.setSoldOut(seatInfoBySeatId.getSoldOut());
+ iPerformService.addSeatInfo(fPerformSeatInfo);
+ msg.append("演出任务名称").append(taskEntity.getTaskName()).append("的场次信息")
+ .append(performDetail.getName()).append("的座位信息")
+ .append(seatPlan.getSeatPlanName()).append("信息已更新\n");
+ }
+ }
+
+ } else {
+ log.info("演出:{},座位:{},已售罄", performDetail.getName(), seatPlanStatus.getSeatPlanId());
+ msg.append("演出任务名称").append(taskEntity.getTaskName()).append("的场次信息")
+ .append(performDetail.getName()).append("的座位信息").append("已售罄\n");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ });
+ try {
+ dingTalkService.sendRobotMessage(msg.toString());
+ } catch (Exception e) {
+ log.error("信息发送异常, 信息:{}", msg, e);
+ }
+
+ }
+
private void savaTask(FPerformProjectInfo data, long taskId, Map params) {
ScheduledTaskEntity entity = new ScheduledTaskEntity();
entity.setId(taskId);
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 f19ac22..c31e5f6 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
@@ -91,7 +91,7 @@ public class PullDataFromFWDJob {
performProjectInfoMapper.insert(fPerformProjectInfo);
}
- @Scheduled(cron = "0 10 8 1/1 * ?")
+// @Scheduled(cron = "0 10 8 1/1 * ?")
@PostMapping("/pullSeatDataJob")
public void pullSeatDataJob() {
List availablePerform = performConfigMapper.getAvailablePerform();
diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java
index d360601..9749518 100644
--- a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java
+++ b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java
@@ -174,7 +174,6 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
Map headers = Maps.newHashMap();
headers.put("Host", "api.livelab.com.cn");
headers.put("Connection", "keep-alive");
- headers.put("Content-Length", "316");
headers.put("platform-type", "%E7%BA%B7%E7%8E%A9%E5%B2%9B%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F");
headers.put("content-type", "application/json");
headers.put("x-fwd-anonymousId", "ocXac5C25MY5O3UM_EfL0oTgm7Jw");