perf:爬虫数据拉取优化

This commit is contained in:
Zhujx
2025-07-25 17:10:53 +08:00
parent 58cd81bf7e
commit 3b19a75e52
5 changed files with 195 additions and 176 deletions

View File

@@ -2,6 +2,7 @@ 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.google.common.collect.Maps;
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.FPerformProjectInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
@@ -69,15 +70,24 @@ public class PullDataFromFWDJob {
@Scheduled(cron = "0 0 1 1/1 * ?") @Scheduled(cron = "0 0 1 1/1 * ?")
@PostMapping("/pullProjectsDataJob") @PostMapping("/pullProjectsDataJob")
public void pullProjectsDataJob() { public void pullProjectsDataJob() {
ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(); int i = 0;
while (true) {
i++;
BaseRequest request = new BaseRequest();
request.setCurrent(i);
request.setPageSize(10 * i);
ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(request);
if (Objects.isNull(showProjectsFromHttp)) { if (Objects.isNull(showProjectsFromHttp)) {
return; return;
} }
if (CollectionUtils.isEmpty(showProjectsFromHttp.getList())) {
break;
}
List<ProjectList> projectList = showProjectsFromHttp.getList(); List<ProjectList> projectList = showProjectsFromHttp.getList();
List<CompletableFuture> futureList = Lists.newArrayList(); List<CompletableFuture> futureList = Lists.newArrayList();
for (ProjectList project : projectList) { for (ProjectList project : projectList) {
CompletableFuture future = CompletableFuture.runAsync(() -> { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId()); ProjectInfoResp projectInfoFromHttp = performServiceHttp.getProjectInfoFromHttp(project.getProjectId());
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId()); Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId());
if (Objects.nonNull(projectInfoFromHttp) && Objects.nonNull(performsByProjectIdFromHttp)) { if (Objects.nonNull(projectInfoFromHttp) && Objects.nonNull(performsByProjectIdFromHttp)) {
@@ -123,9 +133,6 @@ public class PullDataFromFWDJob {
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
continue; 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());
@@ -152,6 +159,7 @@ public class PullDataFromFWDJob {
fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime()));
} }
fPerformSeatInfo.setProjectId(project.getProjectId()); fPerformSeatInfo.setProjectId(project.getProjectId());
fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0);
FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(fPerformSeatInfo.getSeatPlanId(), fPerformSeatInfo.getPerformId(), project.getProjectId()); FPerformSeatInfo seatInfo = performSeatInfoMapper.getPerformSeatInfoBySeatIdAndPerformIdAndProjectId(fPerformSeatInfo.getSeatPlanId(), fPerformSeatInfo.getPerformId(), project.getProjectId());
if (Objects.nonNull(seatInfo)) { if (Objects.nonNull(seatInfo)) {
fPerformSeatInfo.setId(seatInfo.getId()); fPerformSeatInfo.setId(seatInfo.getId());
@@ -213,9 +221,6 @@ public class PullDataFromFWDJob {
if (!seatMap.containsKey(seatPlan.getSeatPlanId())) { if (!seatMap.containsKey(seatPlan.getSeatPlanId())) {
continue; 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());
@@ -242,6 +247,7 @@ public class PullDataFromFWDJob {
fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime())); fPerformSeatInfo.setSaleTime(DateUtils.getTimeFromStr(seatPlan.getSaleTime()));
} }
fPerformSeatInfo.setProjectId(project.getProjectId()); fPerformSeatInfo.setProjectId(project.getProjectId());
fPerformSeatInfo.setSoldOut(seatMap.get(seatPlan.getSeatPlanId()) ? 1 : 0);
} }
} }
} }
@@ -260,6 +266,7 @@ 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) { private Map<Long, Boolean> getSeatMap(List<Long> seatPlanIds) {
List<SeatPlanStatus> statusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds); List<SeatPlanStatus> statusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds);

View File

@@ -1,5 +1,6 @@
package com.xiang.xservice.fwd.server; package com.xiang.xservice.fwd.server;
import com.xiang.xservice.basic.common.req.BaseRequest;
import com.xiang.xservice.basic.common.resp.Result; import com.xiang.xservice.basic.common.resp.Result;
import com.xiang.xservice.fwd.entity.resp.http.perform.Perform; import com.xiang.xservice.fwd.entity.resp.http.perform.Perform;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectsResp;
@@ -30,7 +31,7 @@ public class FwdOuterController {
@GetMapping("/getShowProjects") @GetMapping("/getShowProjects")
public Result<ProjectsResp> getShowProjects() { public Result<ProjectsResp> getShowProjects() {
ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(); ProjectsResp showProjectsFromHttp = performServiceHttp.getShowProjectsFromHttp(new BaseRequest());
return Result.success("查询成功!", showProjectsFromHttp); return Result.success("查询成功!", showProjectsFromHttp);
} }

View File

@@ -1,5 +1,6 @@
package com.xiang.xservice.fwd.service; package com.xiang.xservice.fwd.service;
import com.xiang.xservice.basic.common.req.BaseRequest;
import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq; import com.xiang.xservice.fwd.entity.req.ProjectOrderCreateReq;
import com.xiang.xservice.fwd.entity.resp.http.perform.Perform; import com.xiang.xservice.fwd.entity.resp.http.perform.Perform;
import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp; import com.xiang.xservice.fwd.entity.resp.http.perform.ProjectInfoResp;
@@ -15,7 +16,7 @@ public interface IPerformServiceHttp {
* http请求查询全部演出列表 * http请求查询全部演出列表
* @return ProjectsResp * @return ProjectsResp
*/ */
ProjectsResp getShowProjectsFromHttp(); ProjectsResp getShowProjectsFromHttp(BaseRequest request);
/** /**
* http请求根据projectId查询演出详情 * http请求根据projectId查询演出详情

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xiang.xservice.basic.common.req.BaseRequest;
import com.xiang.xservice.basic.utils.HttpUtils; import com.xiang.xservice.basic.utils.HttpUtils;
import com.xiang.xservice.basic.utils.JsonUtils; import com.xiang.xservice.basic.utils.JsonUtils;
import com.xiang.xservice.fwd.constants.CodeConstants; import com.xiang.xservice.fwd.constants.CodeConstants;
@@ -31,13 +32,19 @@ import java.util.Objects;
public class PerformServiceHttpServiceImpl implements IPerformServiceHttp { public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
@Override @Override
public ProjectsResp getShowProjectsFromHttp() { public ProjectsResp getShowProjectsFromHttp(BaseRequest request) {
int pageNum = 1;
int pageSize = 9999;
Map<String, String> params = Maps.newHashMap(); Map<String, String> params = Maps.newHashMap();
params.put("projectModuleId", "7"); params.put("projectModuleId", "7");
params.put("pageNum", String.valueOf(pageNum)); if (Objects.isNull(request.getCurrent())) {
params.put("pageSize", String.valueOf(pageSize)); params.put("pageNum", String.valueOf(1));
} else {
params.put("pageNum", String.valueOf(request.getCurrent()));
}
if (Objects.isNull(request.getPageSize())) {
params.put("pageSize", String.valueOf(10));
} else {
params.put("pageSize", String.valueOf(request.getPageSize()));
}
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_URL, buildFWDHeaders(null), params); String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_URL, buildFWDHeaders(null), params);
if (StringUtils.isBlank(respStr)) { if (StringUtils.isBlank(respStr)) {
return new ProjectsResp(); return new ProjectsResp();

View File

@@ -62,6 +62,9 @@ public class PerformServiceImpl implements IPerformService {
return Boolean.FALSE; return Boolean.FALSE;
} }
for (FPerformSeatInfo fPerformSeatInfo : seatInfoByProjectId) { for (FPerformSeatInfo fPerformSeatInfo : seatInfoByProjectId) {
if (1 == fPerformSeatInfo.getSoldOut()) {
continue;
}
ProjectOrderCreateReq projectOrderCreateReq = new ProjectOrderCreateReq(); ProjectOrderCreateReq projectOrderCreateReq = new ProjectOrderCreateReq();
projectOrderCreateReq.setDeliveryType(1); projectOrderCreateReq.setDeliveryType(1);
projectOrderCreateReq.setContactName("朱吉祥"); projectOrderCreateReq.setContactName("朱吉祥");