fix:芬玩岛数据拉取token更新

This commit is contained in:
Xiang
2025-11-12 16:31:56 +08:00
parent 7c2b8f4731
commit 422ae693b2
9 changed files with 61 additions and 126 deletions

View File

@@ -16,6 +16,7 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<modules> <modules>
<module>script</module> <module>script</module>
<module>sda_stock_center</module>
</modules> </modules>
<properties> <properties>

View File

@@ -2,8 +2,6 @@ package com.xiang.xservice.application.script.fwd.constants;
public class UrlConstants { public class UrlConstants {
public static final String token = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJjdCI6MTc1MjYzODAwNTUxNywic3ViIjoiTDIxMTQzMjU2NDEiLCJhdWQiOiJMSVZFTEFCIiwiaXNzIjoiVElDS0VUIiwibWlkIjoxNzU4ODA4NTcxMzgzNjcxNTUzLCJ0eXBlIjoiYXBwbGV0IiwiaWF0IjoxNzUyNjM4MDA1LCJkaWQiOiI2RTRDMDQ5RS00RkFBLTQ0NDMtQjI3NC1DNjRBMjZEMUFGNTkiLCJrZXkiOiJMSVZFTEFCIn0.iw1u3LyCYlxYCI1gMwTeuJlPdv-rQKCVlO2ySF_UrJ-lrEH6fm5lGo4wGalLn1qGkyqZaxuTx1K6X7Oy7sHgBA";
/** /**
* 芬玩岛的基础URL * 芬玩岛的基础URL
*/ */

View File

@@ -3,6 +3,7 @@ package com.xiang.xservice.application.script.fwd.schedule;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xiang.xservice.application.script.fwd.entity.pojo.FUserConfig;
import com.xiang.xservice.basic.utils.DateUtils; import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.basic.utils.PrimaryKeyUtils; import com.xiang.xservice.basic.utils.PrimaryKeyUtils;
import com.xiang.xservice.application.script.fwd.entity.param.FwdOrderTaskParam; import com.xiang.xservice.application.script.fwd.entity.param.FwdOrderTaskParam;
@@ -139,6 +140,9 @@ public class FwdImportantMsgJob {
@PostMapping("/presaleSeatReminderJob") @PostMapping("/presaleSeatReminderJob")
public void presaleSeatReminderJob() { public void presaleSeatReminderJob() {
List<FUserConfig> availableUser = fwdUserConfigMapper.getAvailableUser();
String token = availableUser.get(0).getToken();
ScheduledTaskEntity entity = new ScheduledTaskEntity(); ScheduledTaskEntity entity = new ScheduledTaskEntity();
entity.setStatus(TaskStatusEnum.UN_START.getCode()); entity.setStatus(TaskStatusEnum.UN_START.getCode());
List<ScheduledTaskEntity> taskList = dynamicTaskSchedulerService.getTaskList(entity); List<ScheduledTaskEntity> taskList = dynamicTaskSchedulerService.getTaskList(entity);
@@ -162,7 +166,7 @@ public class FwdImportantMsgJob {
log.error("异常错误信息:{}", JSON.toJSONString(taskEntity), e); log.error("异常错误信息:{}", JSON.toJSONString(taskEntity), e);
} }
if (Objects.nonNull(projectId)) { if (Objects.nonNull(projectId)) {
Perform performsByProjectIdFromHttp = iPerformServiceHttp.getPerformsByProjectIdFromHttp(projectId); Perform performsByProjectIdFromHttp = iPerformServiceHttp.getPerformsByProjectIdFromHttp(projectId, token);
if (Objects.nonNull(performsByProjectIdFromHttp)) { if (Objects.nonNull(performsByProjectIdFromHttp)) {
for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) { for (PerformInfo performInfo : performsByProjectIdFromHttp.getPerformInfos()) {
for (PerformDetail performDetail : performInfo.getPerformInfo()) { for (PerformDetail performDetail : performInfo.getPerformInfo()) {
@@ -171,7 +175,7 @@ public class FwdImportantMsgJob {
List<SeatPlan> seatPlans = performDetail.getSeatPlans(); List<SeatPlan> seatPlans = performDetail.getSeatPlans();
Map<Long, SeatPlan> seatPlanMap = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a)); Map<Long, SeatPlan> seatPlanMap = seatPlans.stream().collect(Collectors.toMap(SeatPlan::getSeatPlanId, Function.identity(), (a, b) -> a));
List<Long> seatPlanIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList()); List<Long> seatPlanIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList());
List<SeatPlanStatus> seatPlanStatusFromHttp = iPerformServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds); List<SeatPlanStatus> seatPlanStatusFromHttp = iPerformServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds, token);
for (SeatPlanStatus seatPlanStatus : seatPlanStatusFromHttp) { for (SeatPlanStatus seatPlanStatus : seatPlanStatusFromHttp) {
if (!seatPlanStatus.getSoldOutFlag()) { if (!seatPlanStatus.getSoldOutFlag()) {
FPerformSeatInfo seatInfoBySeatId = iPerformService.getSeatInfoBySeatId(seatPlanStatus.getSeatPlanId()); FPerformSeatInfo seatInfoBySeatId = iPerformService.getSeatInfoBySeatId(seatPlanStatus.getSeatPlanId());

View File

@@ -1,9 +1,6 @@
package com.xiang.xservice.application.script.fwd.schedule; package com.xiang.xservice.application.script.fwd.schedule;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
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.application.script.fwd.entity.pojo.FAudienceConfig; import com.xiang.xservice.application.script.fwd.entity.pojo.FAudienceConfig;
import com.xiang.xservice.application.script.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.application.script.fwd.entity.pojo.FPerformProjectInfo;
import com.xiang.xservice.application.script.fwd.entity.pojo.FPerformSeatInfo; import com.xiang.xservice.application.script.fwd.entity.pojo.FPerformSeatInfo;
@@ -23,6 +20,10 @@ import com.xiang.xservice.application.script.fwd.mapper.FwdPerformProjectInfoMap
import com.xiang.xservice.application.script.fwd.mapper.FwdPerformSeatInfoMapper; import com.xiang.xservice.application.script.fwd.mapper.FwdPerformSeatInfoMapper;
import com.xiang.xservice.application.script.fwd.mapper.FwdUserConfigMapper; import com.xiang.xservice.application.script.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.application.script.fwd.service.IPerformServiceHttp; import com.xiang.xservice.application.script.fwd.service.IPerformServiceHttp;
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.basic.utils.RandomCodeUtils;
import com.xiang.xservice.http.helper.HttpRequestHelper; import com.xiang.xservice.http.helper.HttpRequestHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -36,7 +37,6 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService; 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;
@@ -139,6 +139,8 @@ public class PullDataFromFWDJob {
@Scheduled(cron = "0 0 1 1/1 * ?") @Scheduled(cron = "0 0 1 1/1 * ?")
public void pullPerformDataJobV2() { public void pullPerformDataJobV2() {
int pageNum = 0; int pageNum = 0;
List<FUserConfig> availableUser = userConfigMapper.getAvailableUser();
String token = availableUser.get(0).getToken();
while (true) { while (true) {
pageNum++; pageNum++;
BaseRequest baseRequest = new BaseRequest(); BaseRequest baseRequest = new BaseRequest();
@@ -149,12 +151,12 @@ public class PullDataFromFWDJob {
break; break;
} }
List<ProjectList> projects = projectsResp.getList(); List<ProjectList> projects = projectsResp.getList();
List<CompletableFuture<FPerformProjectInfo>> futures = Lists.newArrayList(); List<FPerformProjectInfo> results = Lists.newArrayList();
for (ProjectList project : projects) { for (ProjectList project : projects) {
CompletableFuture<FPerformProjectInfo> future = CompletableFuture.supplyAsync(() -> handleProjectData(project), es); FPerformProjectInfo performProjectInfo = handleProjectData(project, token);
futures.add(future); results.add(performProjectInfo);
} }
List<FPerformProjectInfo> results = futures.stream().map(CompletableFuture::join).toList(); results = results.stream().filter(Objects::nonNull).toList();
// 查询演出座位档次信息 // 查询演出座位档次信息
List<FPerformSeatInfo> insertList = Lists.newCopyOnWriteArrayList(); List<FPerformSeatInfo> insertList = Lists.newCopyOnWriteArrayList();
List<FPerformSeatInfo> updateList = Lists.newCopyOnWriteArrayList(); List<FPerformSeatInfo> updateList = Lists.newCopyOnWriteArrayList();
@@ -164,7 +166,7 @@ public class PullDataFromFWDJob {
continue; continue;
} }
List<Long> seatPlanIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).toList(); List<Long> seatPlanIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).toList();
List<SeatPlanStatus> seatPlanStatusList = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds), "fetch-seat-plan-status"); List<SeatPlanStatus> seatPlanStatusList = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds, token), "fetch-seat-plan-status");
if (CollectionUtils.isEmpty(seatPlanStatusList)) { if (CollectionUtils.isEmpty(seatPlanStatusList)) {
continue; continue;
} }
@@ -186,6 +188,7 @@ public class PullDataFromFWDJob {
} }
} }
} }
stopThread();
} }
if (!CollectionUtils.isEmpty(insertList)) { if (!CollectionUtils.isEmpty(insertList)) {
performSeatInfoMapper.batchSave(insertList); performSeatInfoMapper.batchSave(insertList);
@@ -198,14 +201,14 @@ public class PullDataFromFWDJob {
} }
} }
private FPerformProjectInfo handleProjectData(ProjectList project) { private FPerformProjectInfo handleProjectData(ProjectList project, String token) {
// 查询演出的详情 // 查询演出的详情
ProjectInfoResp projectInfoFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getProjectInfoFromHttp(project.getProjectId()), "fetch-project-info"); ProjectInfoResp projectInfoFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getProjectInfoFromHttp(project.getProjectId(), token), "fetch-project-info");
if (Objects.isNull(projectInfoFromHttp)) { if (Objects.isNull(projectInfoFromHttp)) {
return null; return null;
} }
// 查询演出信息 // 查询演出信息
Perform performsByProjectIdFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId()), "fetch-perform-by-project-id"); Perform performsByProjectIdFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getPerformsByProjectIdFromHttp(project.getProjectId(), token), "fetch-perform-by-project-id");
if (Objects.isNull(performsByProjectIdFromHttp)) { if (Objects.isNull(performsByProjectIdFromHttp)) {
return null; return null;
} }
@@ -235,100 +238,17 @@ public class PullDataFromFWDJob {
} }
projectInfo.setSeatPlans(seats); projectInfo.setSeatPlans(seats);
stopThread();
return projectInfo; return projectInfo;
} }
private static void stopThread() {
public void pullPerformDataJob() { try {
int pageNum = 0; String random = RandomCodeUtils.getNumberRandomCode(1);
while (true) { log.info("线程暂停:{}s", random);
pageNum++; Thread.sleep(Long.parseLong(random) * 1000);
BaseRequest baseRequest = new BaseRequest(); } catch (InterruptedException e) {
baseRequest.setCurrent(pageNum); log.error("线程暂停1s失败");
baseRequest.setPageSize(50);
// 查询所有的演出
ProjectsResp projectsResp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getShowProjectsFromHttp(baseRequest), "fetch-projects");
if (Objects.isNull(projectsResp)) {
break;
}
List<ProjectList> projectLists = projectsResp.getList();
if (CollectionUtils.isEmpty(projectLists)) {
break;
}
for (ProjectList projectList : projectLists) {
// 查询演出的详情
ProjectInfoResp projectInfoFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getProjectInfoFromHttp(projectList.getProjectId()), "fetch-project-info");
if (Objects.isNull(projectInfoFromHttp)) {
continue;
}
// 查询演出信息
Perform performsByProjectIdFromHttp = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getPerformsByProjectIdFromHttp(projectList.getProjectId()), "fetch-perform-by-project-id");
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;
}
// 查询演出座位档次信息
List<FPerformSeatInfo> insertList = Lists.newCopyOnWriteArrayList();
List<FPerformSeatInfo> updateList = Lists.newCopyOnWriteArrayList();
for (PerformInfo performInfo : performInfos) {
List<PerformDetail> performs = performInfo.getPerformInfo();
if (CollectionUtils.isEmpty(performs)) {
continue;
}
for (PerformDetail perform : performs) {
if (CollectionUtils.isEmpty(perform.getSeatPlans())) {
continue;
}
List<Long> seatPlanIds = perform.getSeatPlans().stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList());
List<SeatPlanStatus> seatPlanStatusList = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.getSeatPlanStatusFromHttp(seatPlanIds), "fetch-seat-plan-status");
if (CollectionUtils.isEmpty(seatPlanStatusList)) {
continue;
}
Map<Long, SeatPlanStatus> map = seatPlanStatusList.stream().collect(Collectors.toMap(SeatPlanStatus::getSeatPlanId, Function.identity(), (a, b) -> a));
Map<Long, FPerformSeatInfo> existSeatMap = performSeatInfoMapper.getPerformSeatInfoBySeatIds(seatPlanIds)
.stream()
.collect(Collectors.toMap(FPerformSeatInfo::getSeatPlanId, Function.identity(), (a, b) -> a));
for (SeatPlan seatPlan : perform.getSeatPlans()) {
if (map.containsKey(seatPlan.getSeatPlanId())) {
SeatPlanStatus value = map.get(seatPlan.getSeatPlanId());
if (existSeatMap.containsKey(seatPlan.getSeatPlanId())) {
// 更新
FPerformSeatInfo performSeatInfo = existSeatMap.get(seatPlan.getSeatPlanId());
performSeatInfo.setSoldStock(value.getSoldOutFlag() ? 1 : 0);
updateList.add(performSeatInfo);
} else {
// 新增
saveSeatInfo(projectList.getProjectId(), seatPlan.getSeatPlanId(), value, seatPlan, insertList);
}
}
}
}
}
if (!CollectionUtils.isEmpty(insertList)) {
performSeatInfoMapper.batchSave(insertList);
}
if (!CollectionUtils.isEmpty(updateList)) {
for (FPerformSeatInfo seatInfo : updateList) {
performSeatInfoMapper.update(seatInfo);
}
}
}
} }
} }

View File

@@ -1,5 +1,6 @@
package com.xiang.xservice.application.script.fwd.server; package com.xiang.xservice.application.script.fwd.server;
import com.xiang.xservice.application.script.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.basic.common.resp.Result; import com.xiang.xservice.basic.common.resp.Result;
import com.xiang.xservice.basic.utils.DateUtils; import com.xiang.xservice.basic.utils.DateUtils;
import com.xiang.xservice.application.script.fwd.entity.pojo.FPerformConfig; import com.xiang.xservice.application.script.fwd.entity.pojo.FPerformConfig;
@@ -27,13 +28,15 @@ public class FwdDataController {
private final IPerformService performService; private final IPerformService performService;
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final FwdUserConfigMapper userConfigMapper;
@PostMapping("/refreshData") @PostMapping("/refreshData")
public Result<String> refreshData() { public Result<String> refreshData() {
String token = userConfigMapper.getAvailableUser().get(0).getToken();
List<FPerformConfig> availablePerforms = performService.getAvailablePerform(); List<FPerformConfig> availablePerforms = performService.getAvailablePerform();
for (FPerformConfig availablePerform : availablePerforms) { for (FPerformConfig availablePerform : availablePerforms) {
ProjectInfoResp info = performServiceHttp.getProjectInfoFromHttp(availablePerform.getProjectId()); ProjectInfoResp info = performServiceHttp.getProjectInfoFromHttp(availablePerform.getProjectId(), token);
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(availablePerform.getProjectId()); Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(availablePerform.getProjectId(), token);
FPerformProjectInfo performByProjectId = performService.getPerformByProjectId(availablePerform.getProjectId()); FPerformProjectInfo performByProjectId = performService.getPerformByProjectId(availablePerform.getProjectId());
performByProjectId.setStatus(info.getStatus()); performByProjectId.setStatus(info.getStatus());
performByProjectId.setPreSaleTime(DateUtils.getDateTimeFromStr(info.getPreSaleTime())); performByProjectId.setPreSaleTime(DateUtils.getDateTimeFromStr(info.getPreSaleTime()));
@@ -53,7 +56,7 @@ public class FwdDataController {
continue; continue;
} }
List<Long> seatIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList()); List<Long> seatIds = seatPlans.stream().map(SeatPlan::getSeatPlanId).collect(Collectors.toList());
List<SeatPlanStatus> seatPlanStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatIds); List<SeatPlanStatus> seatPlanStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(seatIds, token);
if (CollectionUtils.isEmpty(seatPlanStatusFromHttp)) { if (CollectionUtils.isEmpty(seatPlanStatusFromHttp)) {
continue; continue;
} }

View File

@@ -1,5 +1,6 @@
package com.xiang.xservice.application.script.fwd.server; package com.xiang.xservice.application.script.fwd.server;
import com.xiang.xservice.application.script.fwd.mapper.FwdUserConfigMapper;
import com.xiang.xservice.basic.common.req.BaseRequest; 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.application.script.fwd.entity.resp.http.perform.Perform; import com.xiang.xservice.application.script.fwd.entity.resp.http.perform.Perform;
@@ -28,6 +29,7 @@ public class FwdOuterController {
private final IPerformServiceHttp performServiceHttp; private final IPerformServiceHttp performServiceHttp;
private final IPerformService performService; private final IPerformService performService;
private final FwdUserConfigMapper fwdUserConfigMapper;
private static final List<Long> FREQUENT_IDS = List.of(50438548L, 35320661L, 50436621L, 50442739L); private static final List<Long> FREQUENT_IDS = List.of(50438548L, 35320661L, 50436621L, 50442739L);
@@ -39,13 +41,15 @@ public class FwdOuterController {
@GetMapping("/getProjectInfo/{id}") @GetMapping("/getProjectInfo/{id}")
public Result<Perform> getProjectInfo(@PathVariable("id") Long id) { public Result<Perform> getProjectInfo(@PathVariable("id") Long id) {
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(id); String token = fwdUserConfigMapper.getAvailableUser().get(0).getToken();
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(id, token);
return Result.success("查询成功!", performsByProjectIdFromHttp); return Result.success("查询成功!", performsByProjectIdFromHttp);
} }
@GetMapping("/getPerformsByProjectIdFromHttp/{id}") @GetMapping("/getPerformsByProjectIdFromHttp/{id}")
public Result<Perform> getPerformsByProjectIdFromHttp(@PathVariable("id") Long id) { public Result<Perform> getPerformsByProjectIdFromHttp(@PathVariable("id") Long id) {
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(id); String token = fwdUserConfigMapper.getAvailableUser().get(0).getToken();
Perform performsByProjectIdFromHttp = performServiceHttp.getPerformsByProjectIdFromHttp(id, token);
return Result.success("查询成功!", performsByProjectIdFromHttp); return Result.success("查询成功!", performsByProjectIdFromHttp);
} }
@@ -59,7 +63,8 @@ public class FwdOuterController {
@GetMapping("/getSeatPlanStatus") @GetMapping("/getSeatPlanStatus")
public Result<SeatPlanStatus> getSeatPlanStatu (@RequestParam List<Long> ids) { public Result<SeatPlanStatus> getSeatPlanStatu (@RequestParam List<Long> ids) {
List<SeatPlanStatus> seatPlanStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(ids); String token = fwdUserConfigMapper.getAvailableUser().get(0).getToken();
List<SeatPlanStatus> seatPlanStatusFromHttp = performServiceHttp.getSeatPlanStatusFromHttp(ids, token);
return Result.success("查询成功!", seatPlanStatusFromHttp); return Result.success("查询成功!", seatPlanStatusFromHttp);
} }

View File

@@ -24,7 +24,7 @@ public interface IPerformServiceHttp {
* @param projectId projectId * @param projectId projectId
* @return ProjectInfoResp * @return ProjectInfoResp
*/ */
ProjectInfoResp getProjectInfoFromHttp(Long projectId); ProjectInfoResp getProjectInfoFromHttp(Long projectId, String token);
/** /**
* http请求创建演出订单 * http请求创建演出订单
@@ -38,14 +38,14 @@ public interface IPerformServiceHttp {
* @param projectId * @param projectId
* @return * @return
*/ */
Perform getPerformsByProjectIdFromHttp(Long projectId); Perform getPerformsByProjectIdFromHttp(Long projectId, String token);
/** /**
* http请求获取座位状态信息 * http请求获取座位状态信息
* @param seatPlanIds * @param seatPlanIds
* @return * @return
*/ */
List<SeatPlanStatus> getSeatPlanStatusFromHttp(List<Long> seatPlanIds); List<SeatPlanStatus> getSeatPlanStatusFromHttp(List<Long> seatPlanIds, String token);
/** /**
* http请求查询观影人信息 * http请求查询观影人信息

View File

@@ -66,11 +66,11 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
} }
@Override @Override
public ProjectInfoResp getProjectInfoFromHttp(Long projectId) { public ProjectInfoResp getProjectInfoFromHttp(Long projectId, String token) {
Map<String, String> params = Maps.newHashMap(); Map<String, String> params = Maps.newHashMap();
params.put("project_id", String.valueOf(projectId)); params.put("project_id", String.valueOf(projectId));
params.put("v", String.valueOf(Instant.now().getEpochSecond())); params.put("v", String.valueOf(Instant.now().getEpochSecond()));
String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_INFO_URL, buildFWDHeaders(UrlConstants.token), params); String respStr = HttpUtils.doGet(UrlConstants.PROJECTS_INFO_URL, buildFWDHeaders(token), params);
if (StringUtils.isBlank(respStr)) { if (StringUtils.isBlank(respStr)) {
return null; return null;
} }
@@ -104,19 +104,23 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
return projectOrderCreateResp; return projectOrderCreateResp;
} }
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.LIMIT)) { if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.LIMIT)) {
Integer waitTime = new Random().nextInt(10); Integer waitTime = new Random().nextInt(5);
try {
log.info("触发FWD限流机制等待:{}秒后重新发送。", waitTime); log.info("触发FWD限流机制等待:{}秒后重新发送。", waitTime);
Thread.sleep((long) waitTime * 1000);
} catch (InterruptedException e) {
log.error("线程暂停失败!");
}
return null; return null;
} }
return null; return null;
} }
@Override @Override
public Perform getPerformsByProjectIdFromHttp(Long projectId) { public Perform getPerformsByProjectIdFromHttp(Long projectId, String token) {
Map<String, String> params = Maps.newHashMap(); Map<String, String> params = Maps.newHashMap();
params.put("project_id", String.valueOf(projectId)); params.put("project_id", String.valueOf(projectId));
params.put("v", String.valueOf(Instant.now().getEpochSecond())); params.put("v", String.valueOf(Instant.now().getEpochSecond()));
String respStr = HttpUtils.doGet(UrlConstants.PERFORMS_URL, buildFWDHeaders(UrlConstants.token), params); String respStr = HttpUtils.doGet(UrlConstants.PERFORMS_URL, buildFWDHeaders(token), params);
if (StringUtils.isBlank(respStr)) { if (StringUtils.isBlank(respStr)) {
return null; return null;
} }
@@ -134,7 +138,7 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
} }
@Override @Override
public List<SeatPlanStatus> getSeatPlanStatusFromHttp(List<Long> seatPlanIds) { public List<SeatPlanStatus> getSeatPlanStatusFromHttp(List<Long> seatPlanIds, String token) {
StringBuilder seatIds = new StringBuilder(); StringBuilder seatIds = new StringBuilder();
for (Long seatPlanId : seatPlanIds) { for (Long seatPlanId : seatPlanIds) {
seatIds.append(seatPlanId).append(","); seatIds.append(seatPlanId).append(",");
@@ -142,7 +146,7 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
Map<String, String> params = Maps.newHashMap(); Map<String, String> params = Maps.newHashMap();
params.put("seatPlanIds", seatIds.substring(0, seatIds.length() - 2)); params.put("seatPlanIds", seatIds.substring(0, seatIds.length() - 2));
params.put("type", "3"); params.put("type", "3");
String respStr = HttpUtils.doGet(UrlConstants.PROJECT_SEAT_STATUS_URL, buildFWDHeaders(UrlConstants.token), params); String respStr = HttpUtils.doGet(UrlConstants.PROJECT_SEAT_STATUS_URL, buildFWDHeaders(token), params);
if (StringUtils.isBlank(respStr)) { if (StringUtils.isBlank(respStr)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }

View File

@@ -122,7 +122,7 @@ public class PerformServiceImpl implements IPerformService {
ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq, availableUser.get(0).getToken()), "create-project-order"); ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq, availableUser.get(0).getToken()), "create-project-order");
if (Objects.nonNull(projectOrder)) { if (Objects.nonNull(projectOrder)) {
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder)); log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + ",请在2分钟内完成付款!"; String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + ",请在5分钟内完成付款!";
dingTalkService.sendScriptMsg(msg); dingTalkService.sendScriptMsg(msg);
return Boolean.TRUE; return Boolean.TRUE;
} }