feat:拉取座位状态信息

This commit is contained in:
Zhujx
2025-07-25 16:40:47 +08:00
parent 044ab25c2a
commit 58cd81bf7e
2 changed files with 45 additions and 8 deletions

View File

@@ -12,8 +12,8 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
public class SeatPlanStatus {
private Integer seatPlanId;
private Integer performId;
private Long seatPlanId;
private Long performId;
private Boolean soldOutFlag;
private Integer enableNoTicketLabel;
private Integer standbyStatus;

View File

@@ -1,6 +1,7 @@
package com.xiang.xservice.fwd.schedule;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xiang.xservice.basic.config.MyThreadFactory;
import com.xiang.xservice.basic.utils.DateUtils;
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.ProjectsResp;
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.FwdPerformSeatInfoMapper;
import com.xiang.xservice.fwd.service.IPerformServiceHttp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -25,12 +28,14 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* 芬玩岛拉取数据定时任务
@@ -85,8 +90,12 @@ public class PullDataFromFWDJob {
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) {
projectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
}
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) {
projectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
}
projectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
projectInfo.setProjectName(project.getName());
projectInfo.setBizId(project.getBizId());
@@ -106,9 +115,17 @@ public class PullDataFromFWDJob {
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
for (PerformDetail performDetail : performInfo.getPerformInfo()) {
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()) {
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
continue;
}
if (!seatMap.get(seatPlan.getSeatPlanId())) {
continue;
}
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
@@ -144,7 +161,6 @@ public class PullDataFromFWDJob {
}
}
}
}
}
}
@@ -162,8 +178,12 @@ public class PullDataFromFWDJob {
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectStartDate())) {
fPerformProjectInfo.setProjectStartDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectStartDate()));
}
if (StringUtils.isNotBlank(projectInfoFromHttp.getProjectEndDate())) {
fPerformProjectInfo.setProjectEndDate(DateUtils.getDateFromStr(projectInfoFromHttp.getProjectEndDate()));
}
fPerformProjectInfo.setSubClassifyName(projectInfoFromHttp.getSubClassifyName());
fPerformProjectInfo.setProjectName(project.getName());
@@ -186,7 +206,16 @@ public class PullDataFromFWDJob {
if (CollectionUtils.isNotEmpty(performInfo.getPerformInfo())) {
for (PerformDetail performDetail : performInfo.getPerformInfo()) {
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()) {
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
continue;
}
if (!seatMap.get(seatPlan.getSeatPlanId())) {
continue;
}
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
@@ -231,4 +260,12 @@ public class PullDataFromFWDJob {
CompletableFuture[] futureArr = futureList.toArray(futureList.toArray(new CompletableFuture[0]));
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));
}
}