feat:调度座位信息

This commit is contained in:
Zhujx
2025-07-28 15:49:45 +08:00
parent 71ea7a5994
commit 95faf1e23f
2 changed files with 81 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import com.xiang.xservice.basic.common.req.BaseRequest;
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.FAudienceConfig; 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.FPerformProjectInfo;
import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo;
import com.xiang.xservice.fwd.entity.pojo.FUserConfig; 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.SeatPlan;
import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlanStatus; import com.xiang.xservice.fwd.entity.resp.http.perform.SeatPlanStatus;
import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper; 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.FwdPerformProjectInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper; import com.xiang.xservice.fwd.mapper.FwdPerformSeatInfoMapper;
import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; 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.PostMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@@ -41,6 +44,7 @@ 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.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -57,6 +61,7 @@ public class PullDataFromFWDJob {
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final FwdPerformProjectInfoMapper performProjectInfoMapper; private final FwdPerformProjectInfoMapper performProjectInfoMapper;
private final FwdPerformConfigMapper performConfigMapper;
private final FwdPerformSeatInfoMapper performSeatInfoMapper; private final FwdPerformSeatInfoMapper performSeatInfoMapper;
private final FwdUserConfigMapper userConfigMapper; private final FwdUserConfigMapper userConfigMapper;
private final FwdAudienceConfigMapper audienceConfigMapper; private final FwdAudienceConfigMapper audienceConfigMapper;
@@ -275,6 +280,81 @@ public class PullDataFromFWDJob {
} }
} }
@Scheduled(cron = "0 10 8 1/1 * ?")
@PostMapping("/pullSeatDataJob")
public void pullSeatDataJob() {
List<FPerformConfig> 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<PerformDetail> info = performInfo.getPerformInfo();
if (CollectionUtils.isEmpty(info)) {
continue;
}
for (PerformDetail performDetail : info) {
List<SeatPlan> seatPlans = performDetail.getSeatPlans();
if (CollectionUtils.isEmpty(seatPlans)) {
continue;
}
Map<Long, SeatPlan> map = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a));
List<SeatPlanStatus> planStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(new ArrayList<>(map.keySet()));
List<FPerformSeatInfo> 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);
}
}
}
}
}
/** /**
* 每月拉取观影人数据更新 * 每月拉取观影人数据更新
*/ */

View File

@@ -26,7 +26,7 @@
</foreach> </foreach>
</insert> </insert>
<select id="getAvailableUser" resultMap="BaseResultMap"> <select id="getAvailablePerform" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> select <include refid="Base_Column_List"/>
from fwd_perform_config where del_flag = 0 from fwd_perform_config where del_flag = 0
</select> </select>