fix:刷新数据
This commit is contained in:
@@ -103,7 +103,7 @@ public class FPerformSeatInfo implements Serializable {
|
||||
/**
|
||||
* ash_show_desc
|
||||
*/
|
||||
private Integer ashShowDesc;
|
||||
private String ashShowDesc;
|
||||
|
||||
/**
|
||||
* selectable
|
||||
|
||||
@@ -24,4 +24,6 @@ public interface FwdPerformSeatInfoMapper {
|
||||
@Param("seatId") Long seatId, @Param("performId") Long performId, @Param("projectId") Long projectId);
|
||||
|
||||
List<FPerformSeatInfo> getPerformSeatByProjectId(Long projectId);
|
||||
|
||||
FPerformSeatInfo getBySeatPlanId(@Param("id") Long seatPlanId);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public class PullDataFromFWDJob {
|
||||
/**
|
||||
* 定时任务 每日1点爬取芬玩岛数据演出列表数据
|
||||
*/
|
||||
@Scheduled(cron = "0 0 1 1/1 * ?")
|
||||
// @Scheduled(cron = "0 0 1 1/1 * ?")
|
||||
@PostMapping("/pullProjectsDataJob")
|
||||
public void pullProjectsDataJob() {
|
||||
int i = 0;
|
||||
@@ -107,30 +107,7 @@ public class PullDataFromFWDJob {
|
||||
FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(project.getProjectId());
|
||||
if (Objects.nonNull(projectInfo)) {
|
||||
// 更新projectInfo的信息
|
||||
projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
|
||||
projectInfo.setStatus(projectInfoFromHttp.getStatus());
|
||||
projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
|
||||
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||
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());
|
||||
projectInfo.setTagName(project.getTagName());
|
||||
projectInfo.setTagRemark(project.getTagRemark());
|
||||
projectInfo.setProjectCity(project.getCity());
|
||||
projectInfo.setShortCity(project.getShortCity());
|
||||
projectInfo.setVenueName(project.getVenueName());
|
||||
projectInfo.setLowestPrice(project.getLowestPrice());
|
||||
if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) {
|
||||
projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime()));
|
||||
}
|
||||
buildUpdateProjectInfo(project, projectInfo, projectInfoFromHttp);
|
||||
performProjectInfoMapper.update(projectInfo);
|
||||
List<FPerformSeatInfo> fPerformSeatInfoInsertList = Lists.newArrayList();
|
||||
if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) {
|
||||
@@ -163,7 +140,7 @@ public class PullDataFromFWDJob {
|
||||
fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock());
|
||||
fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity());
|
||||
fPerformSeatInfo.setAshShow(seatPlan.getAshShow());
|
||||
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow());
|
||||
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShowDesc());
|
||||
fPerformSeatInfo.setSelectable(seatPlan.getSelectable());
|
||||
fPerformSeatInfo.setDisplay(seatPlan.getDisplay());
|
||||
fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity());
|
||||
@@ -192,34 +169,7 @@ public class PullDataFromFWDJob {
|
||||
}
|
||||
} else {
|
||||
// 新增projectInfo的信息
|
||||
FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo();
|
||||
fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
|
||||
fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus());
|
||||
fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
|
||||
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||
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());
|
||||
fPerformProjectInfo.setBizId(project.getBizId());
|
||||
fPerformProjectInfo.setProjectId(project.getProjectId());
|
||||
fPerformProjectInfo.setTagName(project.getTagName());
|
||||
fPerformProjectInfo.setTagRemark(project.getTagRemark());
|
||||
fPerformProjectInfo.setProjectCity(project.getCity());
|
||||
fPerformProjectInfo.setShortCity(project.getShortCity());
|
||||
fPerformProjectInfo.setVenueName(project.getVenueName());
|
||||
fPerformProjectInfo.setLowestPrice(project.getLowestPrice());
|
||||
if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) {
|
||||
fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime()));
|
||||
}
|
||||
performProjectInfoMapper.insert(fPerformProjectInfo);
|
||||
saveProjectInfo(project, projectInfoFromHttp);
|
||||
|
||||
List<FPerformSeatInfo> fPerformSeatInfos = Lists.newArrayList();
|
||||
if (CollectionUtils.isNotEmpty(performsByProjectIdFromHttp.getPerformInfos())) {
|
||||
@@ -251,7 +201,7 @@ public class PullDataFromFWDJob {
|
||||
fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock());
|
||||
fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity());
|
||||
fPerformSeatInfo.setAshShow(seatPlan.getAshShow());
|
||||
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShow());
|
||||
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShowDesc());
|
||||
fPerformSeatInfo.setSelectable(seatPlan.getSelectable());
|
||||
fPerformSeatInfo.setDisplay(seatPlan.getDisplay());
|
||||
fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity());
|
||||
@@ -288,6 +238,37 @@ public class PullDataFromFWDJob {
|
||||
}
|
||||
}
|
||||
|
||||
private void saveProjectInfo(ProjectList project, ProjectInfoResp projectInfoFromHttp) {
|
||||
FPerformProjectInfo fPerformProjectInfo = new FPerformProjectInfo();
|
||||
fPerformProjectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
|
||||
fPerformProjectInfo.setStatus(projectInfoFromHttp.getStatus());
|
||||
fPerformProjectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
|
||||
fPerformProjectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||
fPerformProjectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||
fPerformProjectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||
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());
|
||||
fPerformProjectInfo.setBizId(project.getBizId());
|
||||
fPerformProjectInfo.setProjectId(project.getProjectId());
|
||||
fPerformProjectInfo.setTagName(project.getTagName());
|
||||
fPerformProjectInfo.setTagRemark(project.getTagRemark());
|
||||
fPerformProjectInfo.setProjectCity(project.getCity());
|
||||
fPerformProjectInfo.setShortCity(project.getShortCity());
|
||||
fPerformProjectInfo.setVenueName(project.getVenueName());
|
||||
fPerformProjectInfo.setLowestPrice(project.getLowestPrice());
|
||||
if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) {
|
||||
fPerformProjectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime()));
|
||||
}
|
||||
performProjectInfoMapper.insert(fPerformProjectInfo);
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 10 8 1/1 * ?")
|
||||
@PostMapping("/pullSeatDataJob")
|
||||
public void pullSeatDataJob() {
|
||||
@@ -339,7 +320,7 @@ public class PullDataFromFWDJob {
|
||||
seatInfo.setLeftStock(seatPlan.getLeftStock());
|
||||
seatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity());
|
||||
seatInfo.setAshShow(seatPlan.getAshShow());
|
||||
seatInfo.setAshShowDesc(seatPlan.getAshShow());
|
||||
seatInfo.setAshShowDesc(seatPlan.getAshShowDesc());
|
||||
seatInfo.setSelectable(seatPlan.getSelectable());
|
||||
seatInfo.setDisplay(seatPlan.getDisplay());
|
||||
seatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity());
|
||||
@@ -392,6 +373,170 @@ public class PullDataFromFWDJob {
|
||||
});
|
||||
}
|
||||
|
||||
@PostMapping("/pullPerformDataJob")
|
||||
@Scheduled(cron = "0 0 1 1/1 * ?")
|
||||
public void pullPerformDataJob() {
|
||||
int pageNum = 0;
|
||||
while (true) {
|
||||
pageNum++;
|
||||
BaseRequest baseRequest = new BaseRequest();
|
||||
baseRequest.setCurrent(pageNum);
|
||||
baseRequest.setPageSize(50);
|
||||
// 查询所有的演出
|
||||
ProjectsResp projectsResp = performServiceHttp.getShowProjectsFromHttp(baseRequest);
|
||||
if (Objects.isNull(projectsResp)) {
|
||||
break;
|
||||
}
|
||||
List<ProjectList> projectLists = projectsResp.getList();
|
||||
if (CollectionUtils.isEmpty(projectLists)) {
|
||||
break;
|
||||
}
|
||||
for (ProjectList projectList : projectLists) {
|
||||
List<SeatPlan> seatPlans = Lists.newArrayList();
|
||||
// 查询演出的详情
|
||||
ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(projectList.getProjectId());
|
||||
if (Objects.isNull(projectInfoFromHttp)) {
|
||||
continue;
|
||||
}
|
||||
// 查询演出信息
|
||||
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(projectList.getProjectId());
|
||||
if (Objects.isNull(performsByProjectIdFromHttp)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 查询数据库
|
||||
FPerformProjectInfo projectInfo = performProjectInfoMapper.getProjectByProjectId(performsByProjectIdFromHttp.getProjectId());
|
||||
if (Objects.isNull(projectInfo)) {
|
||||
// 不存在则新增
|
||||
saveProjectInfo(projectList, projectInfoFromHttp);
|
||||
} else {
|
||||
// 存在则更新
|
||||
buildUpdateProjectInfo(projectList, projectInfo, projectInfoFromHttp);
|
||||
performProjectInfoMapper.update(projectInfo);
|
||||
}
|
||||
|
||||
// 查询演出信息
|
||||
List<PerformInfo> performInfos = performsByProjectIdFromHttp.getPerformInfos();
|
||||
if (CollectionUtils.isEmpty(performInfos)) {
|
||||
continue;
|
||||
}
|
||||
// 查询演出座位档次信息
|
||||
for (PerformInfo performInfo : performInfos) {
|
||||
List<PerformDetail> performs = performInfo.getPerformInfo();
|
||||
if (CollectionUtils.isEmpty(performs)) {
|
||||
continue;
|
||||
}
|
||||
for (PerformDetail perform : performs) {
|
||||
seatPlans.addAll(perform.getSeatPlans());
|
||||
}
|
||||
}
|
||||
|
||||
Map<Long, SeatPlan> seatPlanMap = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a));
|
||||
List<Long> seatPlanIds = new ArrayList<>(seatPlanMap.keySet());
|
||||
List<SeatPlanStatus> seatPlanStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds);
|
||||
if (CollectionUtils.isEmpty(seatPlanStatusFromHttp)) {
|
||||
continue;
|
||||
}
|
||||
Map<Long, SeatPlanStatus> seatMap = seatPlanStatusFromHttp.stream()
|
||||
.collect(Collectors.toMap(SeatPlanStatus::getSeatPlanId, Function.identity(), (a, b) -> a));
|
||||
List<FPerformSeatInfo> insertList = Lists.newCopyOnWriteArrayList();
|
||||
List<FPerformSeatInfo> updateList = Lists.newCopyOnWriteArrayList();
|
||||
Map<Long, FPerformSeatInfo> existSeatMap = performSeatInfoMapper.getPerformSeatInfoBySeatIds(seatPlanIds)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(FPerformSeatInfo::getSeatPlanId, Function.identity(), (a, b) -> a));
|
||||
seatMap.forEach((k, v) -> {
|
||||
if (v.getSoldOutFlag()) {
|
||||
return;
|
||||
}
|
||||
if (existSeatMap.containsKey(k)) {
|
||||
FPerformSeatInfo fPerformSeatInfo = existSeatMap.get(k);
|
||||
if (v.getStandbyStatus().equals(10)) {
|
||||
fPerformSeatInfo.setSoldStock(0);
|
||||
}
|
||||
updateList.add(fPerformSeatInfo);
|
||||
} else {
|
||||
SeatPlan seatPlan = seatPlanMap.get(k);
|
||||
if (Objects.isNull(seatPlan)) {
|
||||
return;
|
||||
}
|
||||
saveSeatInfo(projectList, k, v, seatPlan, insertList);
|
||||
}
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(insertList)) {
|
||||
performSeatInfoMapper.batchSave(insertList);
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(updateList)) {
|
||||
for (FPerformSeatInfo seatInfo : updateList) {
|
||||
performSeatInfoMapper.update(seatInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
log.error("" , e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void saveSeatInfo(ProjectList projectList, Long seatPlanId, SeatPlanStatus seatPlanStatus, SeatPlan seatPlan, List<FPerformSeatInfo> insertList) {
|
||||
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
|
||||
fPerformSeatInfo.setSeatPlanId(seatPlanId);
|
||||
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
|
||||
fPerformSeatInfo.setPerformId(seatPlan.getPerformId());
|
||||
fPerformSeatInfo.setPerformName(seatPlan.getPerformName());
|
||||
fPerformSeatInfo.setStopSale(seatPlan.getStopSale());
|
||||
fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus());
|
||||
fPerformSeatInfo.setPrice(seatPlan.getPrice());
|
||||
fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice());
|
||||
fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus());
|
||||
fPerformSeatInfo.setQuantity(seatPlan.getQuantity());
|
||||
fPerformSeatInfo.setStatus(seatPlan.getStatus());
|
||||
fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock());
|
||||
fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock());
|
||||
fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock());
|
||||
fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity());
|
||||
fPerformSeatInfo.setAshShow(seatPlan.getAshShow());
|
||||
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShowDesc());
|
||||
fPerformSeatInfo.setSelectable(seatPlan.getSelectable());
|
||||
fPerformSeatInfo.setDisplay(seatPlan.getDisplay());
|
||||
fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity());
|
||||
fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity());
|
||||
fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime()));
|
||||
fPerformSeatInfo.setProjectId(projectList.getProjectId());
|
||||
if (!seatPlanStatus.getSoldOutFlag() && seatPlanStatus.getStandbyStatus().equals(10)) {
|
||||
fPerformSeatInfo.setSoldStock(0);
|
||||
}
|
||||
insertList.add(fPerformSeatInfo);
|
||||
}
|
||||
|
||||
private static void buildUpdateProjectInfo(ProjectList projectList, FPerformProjectInfo projectInfo, ProjectInfoResp projectInfoFromHttp) {
|
||||
projectInfo.setNameDisplay(projectInfoFromHttp.getNameDisplay());
|
||||
projectInfo.setStatus(projectInfoFromHttp.getStatus());
|
||||
projectInfo.setProjectSource(projectInfoFromHttp.getProjectSource());
|
||||
projectInfo.setIsHasSeat(projectInfoFromHttp.getIsHasSeat());
|
||||
projectInfo.setIsChoiceSeat(projectInfoFromHttp.getIsChoiceSeat());
|
||||
projectInfo.setHighestPrice(projectInfoFromHttp.getHighPrice());
|
||||
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(projectList.getName());
|
||||
projectInfo.setBizId(projectList.getBizId());
|
||||
projectInfo.setTagName(projectList.getTagName());
|
||||
projectInfo.setTagRemark(projectList.getTagRemark());
|
||||
projectInfo.setProjectCity(projectList.getCity());
|
||||
projectInfo.setShortCity(projectList.getShortCity());
|
||||
projectInfo.setVenueName(projectList.getVenueName());
|
||||
projectInfo.setLowestPrice(projectList.getLowestPrice());
|
||||
if (StringUtils.isNotBlank(projectInfoFromHttp.getPreSaleTime())) {
|
||||
projectInfo.setPreSaleTime(DateUtils.getDateTimeFromStr(projectInfoFromHttp.getPreSaleTime()));
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Long, Boolean> getSeatMap(List<Long> seatPlanIds) {
|
||||
List<SeatPlanStatus> statusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds);
|
||||
if (CollectionUtils.isEmpty(statusFromHttp)) {
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
package com.xiang.xservice.fwd.server;
|
||||
|
||||
import com.xiang.xservice.basic.common.resp.Result;
|
||||
import com.xiang.xservice.basic.utils.DateUtils;
|
||||
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.service.IPerformService;
|
||||
import com.xiang.xservice.fwd.service.IPerformServiceHttp;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/system/fwd")
|
||||
@RequiredArgsConstructor
|
||||
public class FwdDataController {
|
||||
|
||||
private final IPerformService performService;
|
||||
private final IPerformServiceHttp performServiceHttp;
|
||||
|
||||
@PostMapping("/refreshData")
|
||||
public Result<Void> refreshData() {
|
||||
List<FPerformConfig> availablePerforms = performService.getAvailablePerform();
|
||||
for (FPerformConfig availablePerform : availablePerforms) {
|
||||
ProjectInfoResp info = performServiceHttp.getProjectInfoFromHttp(availablePerform.getProjectId());
|
||||
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(availablePerform.getProjectId());
|
||||
FPerformProjectInfo performByProjectId = performService.getPerformByProjectId(availablePerform.getProjectId());
|
||||
performByProjectId.setStatus(info.getStatus());
|
||||
performByProjectId.setPreSaleTime(DateUtils.getDateTimeFromStr(info.getPreSaleTime()));
|
||||
performService.updateProjectInfo(performByProjectId);
|
||||
List<PerformInfo> performInfos = performsByProjectIdFromHttp.getPerformInfos();
|
||||
if (CollectionUtils.isEmpty(performInfos)) {
|
||||
continue;
|
||||
}
|
||||
for (PerformInfo performInfo : performInfos) {
|
||||
List<PerformDetail> performInfo1 = performInfo.getPerformInfo();
|
||||
if (CollectionUtils.isEmpty(performInfo1)) {
|
||||
continue;
|
||||
}
|
||||
for (PerformDetail performDetail : performInfo1) {
|
||||
List<SeatPlan> seatPlans = performDetail.getSeatPlans();
|
||||
if (CollectionUtils.isEmpty(seatPlans)) {
|
||||
continue;
|
||||
}
|
||||
List<Long> seatIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList());
|
||||
List<SeatPlanStatus> seatPlanStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatIds);
|
||||
if (CollectionUtils.isEmpty(seatPlanStatusFromHttp)) {
|
||||
continue;
|
||||
}
|
||||
Map<Long, SeatPlanStatus> map = seatPlanStatusFromHttp.stream().collect(Collectors.toMap(SeatPlanStatus::getSeatPlanId, Function.identity(), (a, b) -> a));
|
||||
for (SeatPlan seatPlan : seatPlans) {
|
||||
FPerformSeatInfo seatInfoBySeatId = performService.getSeatInfoBySeatId(seatPlan.getSeatPlanId());
|
||||
if (Objects.isNull(seatInfoBySeatId)) {
|
||||
FPerformSeatInfo fPerformSeatInfo = new FPerformSeatInfo();
|
||||
fPerformSeatInfo.setSeatPlanId(seatPlan.getSeatPlanId());
|
||||
fPerformSeatInfo.setSeatPlanName(seatPlan.getSeatPlanName());
|
||||
fPerformSeatInfo.setPerformId(seatPlan.getPerformId());
|
||||
fPerformSeatInfo.setPerformName(seatPlan.getPerformName());
|
||||
fPerformSeatInfo.setStopSale(seatPlan.getStopSale());
|
||||
fPerformSeatInfo.setShelfStatus(seatPlan.getShelfStatus());
|
||||
fPerformSeatInfo.setPrice(seatPlan.getPrice());
|
||||
fPerformSeatInfo.setDiscountPrice(seatPlan.getDiscountPrice());
|
||||
fPerformSeatInfo.setSubStatus(seatPlan.getSubStatus());
|
||||
fPerformSeatInfo.setQuantity(seatPlan.getQuantity());
|
||||
fPerformSeatInfo.setStatus(seatPlan.getStatus());
|
||||
fPerformSeatInfo.setMaxSellStock(seatPlan.getMaxSellStock());
|
||||
fPerformSeatInfo.setSoldStock(seatPlan.getSoldStock());
|
||||
fPerformSeatInfo.setLeftStock(seatPlan.getLeftStock());
|
||||
fPerformSeatInfo.setAbleSaleQuantity(seatPlan.getAbleSaleQuantity());
|
||||
fPerformSeatInfo.setAshShow(seatPlan.getAshShow());
|
||||
fPerformSeatInfo.setAshShowDesc(seatPlan.getAshShowDesc());
|
||||
fPerformSeatInfo.setSelectable(seatPlan.getSelectable());
|
||||
fPerformSeatInfo.setDisplay(seatPlan.getDisplay());
|
||||
fPerformSeatInfo.setAvailableTicketQuantity(seatPlan.getAvailableTicketQuantity());
|
||||
fPerformSeatInfo.setAvailableAllTicketQuantity(seatPlan.getAvailableAllTicketQuantity());
|
||||
fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime()));
|
||||
fPerformSeatInfo.setProjectId(availablePerform.getProjectId());
|
||||
fPerformSeatInfo.setSoldOut(seatPlan.getSoldStock());
|
||||
performService.addSeatInfo(fPerformSeatInfo);
|
||||
} else {
|
||||
SeatPlanStatus seatPlanStatus = map.get(seatPlan.getSeatPlanId());
|
||||
if (Objects.isNull(seatPlanStatus)) {
|
||||
continue;
|
||||
}
|
||||
seatInfoBySeatId.setSoldStock(seatPlanStatus.getSoldOutFlag() ? 1 : 0);
|
||||
performService.updateSeatInfo(seatInfoBySeatId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.success("success");
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.xiang.xservice.fwd.service;
|
||||
|
||||
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
|
||||
import com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo;
|
||||
|
||||
@@ -16,4 +17,14 @@ public interface IPerformService {
|
||||
List<FPerformSeatInfo> getPerformSeatInfoByProjectId(Long projectId);
|
||||
|
||||
Boolean createProjectOrder(Long projectId, List<Long> frequentIds) throws Exception;
|
||||
|
||||
List<FPerformConfig> getAvailablePerform();
|
||||
|
||||
Boolean updateProjectInfo(FPerformProjectInfo projectInfo);
|
||||
|
||||
FPerformSeatInfo getSeatInfoBySeatId(Long seatId);
|
||||
|
||||
Boolean updateSeatInfo(FPerformSeatInfo seatInfoBySeatId);
|
||||
|
||||
Boolean addSeatInfo(FPerformSeatInfo fPerformSeatInfo);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
|
||||
}
|
||||
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_URL, buildFWDHeaders(null), params);
|
||||
if (StringUtils.isBlank(respStr)) {
|
||||
return new ProjectsResp();
|
||||
return null;
|
||||
}
|
||||
log.info("【Http请求】 http请求查询演出列表结果:{}", respStr);
|
||||
JSONObject resp = JSON.parseObject(respStr);
|
||||
@@ -56,11 +56,11 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
|
||||
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
|
||||
ProjectsResp projectsResp = JSON.parseObject(resp.get("data").toString(), ProjectsResp.class);
|
||||
if (Objects.isNull(projectsResp)) {
|
||||
return new ProjectsResp();
|
||||
return null;
|
||||
}
|
||||
return projectsResp;
|
||||
}
|
||||
return new ProjectsResp();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,7 +69,7 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
|
||||
params.put("project_id", String.valueOf(projectId));
|
||||
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_INFO_URL, buildFWDHeaders(UrlConstants.token), params);
|
||||
if (StringUtils.isBlank(respStr)) {
|
||||
return new ProjectInfoResp();
|
||||
return null;
|
||||
}
|
||||
log.info("【Http请求】 根据projectId:{},http请求查询演出信息结果:{}", projectId, respStr);
|
||||
JSONObject resp = JSON.parseObject(respStr);
|
||||
@@ -77,11 +77,11 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
|
||||
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
|
||||
ProjectInfoResp projectInfoResp = JSON.parseObject(resp.get("data").toString(), ProjectInfoResp.class);
|
||||
if (Objects.isNull(projectInfoResp)) {
|
||||
return new ProjectInfoResp();
|
||||
return null;
|
||||
}
|
||||
return projectInfoResp;
|
||||
}
|
||||
return new ProjectInfoResp();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -109,7 +109,7 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
|
||||
params.put("project_id", String.valueOf(projectId));
|
||||
String respStr = HttpUtils.doGet(UrlConstants.PERFORMS_URL, buildFWDHeaders(UrlConstants.token), params);
|
||||
if (StringUtils.isBlank(respStr)) {
|
||||
return new Perform();
|
||||
return null;
|
||||
}
|
||||
log.info("【Http请求】 根据projectId:{}http请求查询演出票务信息结果:{}", projectId, respStr);
|
||||
JSONObject resp = JSON.parseObject(respStr);
|
||||
@@ -117,11 +117,11 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
|
||||
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.SUCCESS)) {
|
||||
Perform projectInfoResp = JSON.parseObject(resp.get("data").toString(), Perform.class);
|
||||
if (Objects.isNull(projectInfoResp)) {
|
||||
return new Perform();
|
||||
return null;
|
||||
}
|
||||
return projectInfoResp;
|
||||
}
|
||||
return new Perform();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,10 +2,12 @@ package com.xiang.xservice.fwd.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService;
|
||||
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.req.ProjectOrderCreateReq;
|
||||
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectOrderCreateResp;
|
||||
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.service.IPerformService;
|
||||
@@ -33,6 +35,7 @@ public class PerformServiceImpl implements IPerformService {
|
||||
|
||||
private final FwdPerformSeatInfoMapper fwdPerformSeatInfoMapper;
|
||||
private final FwdPerformProjectInfoMapper fwdPerformProjectInfoMapper;
|
||||
private final FwdPerformConfigMapper fwdPerformConfigMapper;
|
||||
private final IPerformServiceHttp performServiceHttp;
|
||||
private final DingTalkService dingTalkService;
|
||||
@Value("${DingTalk.chatId}")
|
||||
@@ -89,4 +92,29 @@ public class PerformServiceImpl implements IPerformService {
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FPerformConfig> getAvailablePerform() {
|
||||
return fwdPerformConfigMapper.getAvailablePerform();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateProjectInfo(FPerformProjectInfo projectInfo) {
|
||||
return fwdPerformProjectInfoMapper.update(projectInfo) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FPerformSeatInfo getSeatInfoBySeatId(Long seatId) {
|
||||
return fwdPerformSeatInfoMapper.getBySeatPlanId(seatId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateSeatInfo(FPerformSeatInfo seatInfoBySeatId) {
|
||||
return fwdPerformSeatInfoMapper.update(seatInfoBySeatId) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean addSeatInfo(FPerformSeatInfo fPerformSeatInfo) {
|
||||
return fwdPerformSeatInfoMapper.batchSave(Collections.singletonList(fPerformSeatInfo)) > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,10 +278,15 @@
|
||||
from fwd_perform_seat_info
|
||||
where seat_plan_id = #{seatId} and perform_id = #{performId} and project_id = #{projectId}
|
||||
</select>
|
||||
<select id="getPerformSeatByProjectId" resultType="com.xiang.xservice.fwd.entity.pojo.FPerformSeatInfo">
|
||||
<select id="getPerformSeatByProjectId" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from fwd_perform_seat_info
|
||||
where project_id = #{projectId} and sold_out = 0
|
||||
</select>
|
||||
<select id="getBySeatPlanId" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from fwd_perform_seat_info
|
||||
where seat_plan_id = #{id}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user