From 95faf1e23fe660d1f06399a16129dea9daef3daa Mon Sep 17 00:00:00 2001 From: Zhujx Date: Mon, 28 Jul 2025 15:49:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=B0=83=E5=BA=A6=E5=BA=A7=E4=BD=8D?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fwd/schedule/PullDataFromFWDJob.java | 80 +++++++++++++++++++ .../mapper/fwd/FwdPerformConfigMapper.xml | 2 +- 2 files changed, 81 insertions(+), 1 deletion(-) 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 dd1bd04..20d59b4 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 @@ -6,6 +6,7 @@ import com.xiang.xservice.basic.common.req.BaseRequest; import com.xiang.xservice.basic.config.MyThreadFactory; import com.xiang.xservice.basic.utils.DateUtils; 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.FPerformSeatInfo; import com.xiang.xservice.fwd.entity.pojo.FUserConfig; @@ -19,6 +20,7 @@ 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.FwdAudienceConfigMapper; +import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper; import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper; import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; @@ -33,6 +35,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -41,6 +44,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -57,6 +61,7 @@ public class PullDataFromFWDJob { private final IPerformServiceHttp performServiceHttp; private final FwdPerformProjectInfoMapper performProjectInfoMapper; + private final FwdPerformConfigMapper performConfigMapper; private final FwdPerformSeatInfoMapper performSeatInfoMapper; private final FwdUserConfigMapper userConfigMapper; private final FwdAudienceConfigMapper audienceConfigMapper; @@ -275,6 +280,81 @@ public class PullDataFromFWDJob { } } + @Scheduled(cron = "0 10 8 1/1 * ?") + @PostMapping("/pullSeatDataJob") + public void pullSeatDataJob() { + List availablePerform = performConfigMapper.getAvailablePerform(); + if (CollectionUtils.isEmpty(availablePerform)) { + return; + } + for (FPerformConfig performConfig : availablePerform) { + Perform performs = performServiceHttp.getPerformsByProjectIdFromHttp(performConfig.getProjectId()); + if (Objects.isNull(performs)) { + continue; + } + if (CollectionUtils.isEmpty(performs.getPerformInfos())) { + continue; + } + for (PerformInfo performInfo : performs.getPerformInfos()) { + List info = performInfo.getPerformInfo(); + if (CollectionUtils.isEmpty(info)) { + continue; + } + for (PerformDetail performDetail : info) { + List seatPlans = performDetail.getSeatPlans(); + if (CollectionUtils.isEmpty(seatPlans)) { + continue; + } + Map map = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a)); + List planStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(new ArrayList<>(map.keySet())); + List seatInfoAddList = Lists.newArrayList(); + for (SeatPlanStatus seatPlanStatus : planStatusFromHttp) { + if (!seatPlanStatus.getSoldOutFlag() && seatPlanStatus.getStandbyStatus() == 10) { + FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(seatPlanStatus.getSeatPlanId(), seatPlanStatus.getPerformId(), performs.getProjectId()); + SeatPlan seatPlan = map.get(seatPlanStatus.getSeatPlanId()); + if (Objects.isNull(seatInfo)) { + if (Objects.nonNull(seatPlan)) { + seatInfo = new FPerformSeatInfo(); + seatInfo.setSeatPlanId(seatPlanStatus.getSeatPlanId()); + seatInfo.setSeatPlanName(seatPlan.getSeatPlanName()); + seatInfo.setPerformId(seatPlanStatus.getPerformId()); + seatInfo.setPerformName(seatPlan.getPerformName()); + seatInfo.setStopSale(seatPlan.getStopSale()); + seatInfo.setShelfStatus(seatPlan.getShelfStatus()); + seatInfo.setPrice(seatPlan.getPrice()); + seatInfo.setDiscountPrice(seatPlan.getDiscountPrice()); + seatInfo.setSubStatus(seatPlan.getSubStatus()); + seatInfo.setQuantity(seatPlan.getQuantity()); + seatInfo.setStatus(seatPlan.getStatus()); + seatInfo.setMaxSellStock(seatPlan.getMaxSellStock()); + seatInfo.setSoldStock(seatPlan.getSoldStock()); + seatInfo.setLeftStock(seatPlan.getLeftStock()); + seatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity()); + seatInfo.setAshShow(seatPlan.getAshShow()); + seatInfo.setAshShowDesc(seatPlan.getAshShow()); + seatInfo.setSelectable(seatPlan.getSelectable()); + seatInfo.setDisplay(seatPlan.getDisplay()); + seatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity()); + seatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity()); + seatInfo.setSaleTime(DateUtils.getDateTimeFromStr(seatPlan.getSaleTime())); + seatInfo.setProjectId(performs.getProjectId()); + seatInfo.setSoldOut(0); + seatInfoAddList.add(seatInfo); + } + } else { + seatInfo.setSoldOut(0); + performSeatInfoMapper.update(seatInfo); + } + } + } + if (CollectionUtils.isNotEmpty(seatInfoAddList)) { + performSeatInfoMapper.batchSave(seatInfoAddList); + } + } + } + } + } + /** * 每月拉取观影人数据更新 */ diff --git a/script/src/main/resources/mapper/fwd/FwdPerformConfigMapper.xml b/script/src/main/resources/mapper/fwd/FwdPerformConfigMapper.xml index c052857..dd55130 100644 --- a/script/src/main/resources/mapper/fwd/FwdPerformConfigMapper.xml +++ b/script/src/main/resources/mapper/fwd/FwdPerformConfigMapper.xml @@ -26,7 +26,7 @@ - select from fwd_perform_config where del_flag = 0