feat:拉取座位状态信息
This commit is contained in:
@@ -12,8 +12,8 @@ import lombok.NoArgsConstructor;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class SeatPlanStatus {
|
public class SeatPlanStatus {
|
||||||
private Integer seatPlanId;
|
private Long seatPlanId;
|
||||||
private Integer performId;
|
private Long performId;
|
||||||
private Boolean soldOutFlag;
|
private Boolean soldOutFlag;
|
||||||
private Integer enableNoTicketLabel;
|
private Integer enableNoTicketLabel;
|
||||||
private Integer standbyStatus;
|
private Integer standbyStatus;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.xiang.xservice.fwd.schedule;
|
package com.xiang.xservice.fwd.schedule;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import com.xiang.xservice.basic.config.MyThreadFactory;
|
import com.xiang.xservice.basic.config.MyThreadFactory;
|
||||||
import com.xiang.xservice.basic.utils.DateUtils;
|
import com.xiang.xservice.basic.utils.DateUtils;
|
||||||
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
||||||
@@ -12,12 +13,14 @@ import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp;
|
|||||||
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectList;
|
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectList;
|
||||||
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp;
|
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp;
|
||||||
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlan;
|
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlan;
|
||||||
|
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlanStatus;
|
||||||
import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
|
import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper;
|
||||||
import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper;
|
import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper;
|
||||||
import com.xiang.xservice.fwd.service.IPerformServiceHttp;
|
import com.xiang.xservice.fwd.service.IPerformServiceHttp;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -25,12 +28,14 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 芬玩岛拉取数据定时任务
|
* 芬玩岛拉取数据定时任务
|
||||||
@@ -85,8 +90,12 @@ public class PullDataFromFWDJob {
|
|||||||
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||||
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||||
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||||
|
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) {
|
||||||
projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
|
projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) {
|
||||||
projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
|
projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
|
||||||
|
}
|
||||||
projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
|
projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
|
||||||
projectInfo.setProjectName(project.getName());
|
projectInfo.setProjectName(project.getName());
|
||||||
projectInfo.setBizId(project.getBizId());
|
projectInfo.setBizId(project.getBizId());
|
||||||
@@ -106,9 +115,17 @@ public class PullDataFromFWDJob {
|
|||||||
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
|
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
|
||||||
for (PerformDetail performDetail : performInfo.getPerformInfo()) {
|
for (PerformDetail performDetail : performInfo.getPerformInfo()) {
|
||||||
if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) {
|
if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) {
|
||||||
List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList();
|
|
||||||
|
|
||||||
|
List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList();
|
||||||
|
Map<Long, Boolean> seatMap = getSeatMap(seatPlanIds);
|
||||||
|
if (MapUtils.isEmpty(seatMap)) continue;
|
||||||
for (SeatPlan seatPlan : performDetail.getSeatPlans()) {
|
for (SeatPlan seatPlan : performDetail.getSeatPlans()) {
|
||||||
|
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!seatMap.get(seatPlan.getSeatPlanId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
|
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
|
||||||
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
|
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
|
||||||
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
|
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
|
||||||
@@ -144,7 +161,6 @@ public class PullDataFromFWDJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -162,8 +178,12 @@ public class PullDataFromFWDJob {
|
|||||||
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||||
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||||
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||||
|
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) {
|
||||||
fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
|
fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) {
|
||||||
fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
|
fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
|
||||||
|
}
|
||||||
fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
|
fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
|
||||||
|
|
||||||
fPerformProjectInfo.setProjectName(project.getName());
|
fPerformProjectInfo.setProjectName(project.getName());
|
||||||
@@ -186,7 +206,16 @@ public class PullDataFromFWDJob {
|
|||||||
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
|
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
|
||||||
for (PerformDetail performDetail : performInfo.getPerformInfo()) {
|
for (PerformDetail performDetail : performInfo.getPerformInfo()) {
|
||||||
if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) {
|
if (CollectionUtils.isNotEmpty(performDetail.getSeatPlans())) {
|
||||||
|
List<Long> seatPlanIds = performDetail.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).toList();
|
||||||
|
Map<Long, Boolean> seatMap = getSeatMap(seatPlanIds);
|
||||||
|
if (MapUtils.isEmpty(seatMap)) continue;
|
||||||
for (SeatPlan seatPlan : performDetail.getSeatPlans()) {
|
for (SeatPlan seatPlan : performDetail.getSeatPlans()) {
|
||||||
|
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!seatMap.get(seatPlan.getSeatPlanId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
|
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
|
||||||
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
|
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
|
||||||
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
|
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
|
||||||
@@ -231,4 +260,12 @@ public class PullDataFromFWDJob {
|
|||||||
CompletableFuture[] futureArr = futureList.toArray(futureList.toArray(new CompletableFuture[0]));
|
CompletableFuture[] futureArr = futureList.toArray(futureList.toArray(new CompletableFuture[0]));
|
||||||
CompletableFuture.allOf(futureArr).join();
|
CompletableFuture.allOf(futureArr).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Map<Long, Boolean> getSeatMap(List<Long> seatPlanIds) {
|
||||||
|
List<SeatPlanStatus> statusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds);
|
||||||
|
if (CollectionUtils.isEmpty(statusFromHttp)) {
|
||||||
|
return Maps.newHashMap();
|
||||||
|
}
|
||||||
|
return statusFromHttp.stream().collect(Collectors.toMap(SeatPlanStatus::getSeatPlanId, SeatPlanStatus::getSoldOutFlag, (a, b) -> a));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user