perf:下单优化

This commit is contained in:
Xiang
2025-11-12 16:42:35 +08:00
parent 422ae693b2
commit 70224d4c3e
6 changed files with 12 additions and 13 deletions

View File

@@ -45,7 +45,7 @@ public class TicketGrabTask implements Runnable {
for (FUserConfig userConfig : availableUser) {
List<FAudienceConfig> audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
try {
performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()));
performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()), userConfig.getToken());
dynamicTaskSchedulerService.finishTask(param.getTaskId());
} catch (Exception e) {
log.error("创建订单失败", e);

View File

@@ -55,7 +55,8 @@ public class FwdOuterController {
@PostMapping("/createOrder")
public Result<String> createOrder(Long projectId) throws Exception {
if (performService.createProjectOrder(projectId, FREQUENT_IDS)) {
String token = fwdUserConfigMapper.getAvailableUser().get(0).getToken();
if (performService.createProjectOrder(projectId, FREQUENT_IDS, token)) {
return Result.success("下单成功!");
}
return Result.error("下单失败!");

View File

@@ -16,7 +16,7 @@ public interface IPerformService {
List<FPerformSeatInfo> getPerformSeatInfoByProjectId(Long projectId);
Boolean createProjectOrder(Long projectId, List<Long> frequentIds) throws Exception;
Boolean createProjectOrder(Long projectId, List<Long> frequentIds, String token) throws Exception;
List<FPerformConfig> getAvailablePerform();

View File

@@ -104,7 +104,10 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
return projectOrderCreateResp;
}
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.LIMIT)) {
Integer waitTime = new Random().nextInt(5);
int waitTime = new Random().nextInt(3);
if (Objects.equals(waitTime, 0)) {
waitTime = 3;
}
try {
log.info("触发FWD限流机制等待:{}秒后重新发送。", waitTime);
Thread.sleep((long) waitTime * 1000);

View File

@@ -75,11 +75,7 @@ public class PerformServiceImpl implements IPerformService {
}
@Override
public Boolean createProjectOrder(Long projectId, List<Long> frequentIds) throws Exception {
List<FUserConfig> availableUser = fwdUserConfigMapper.getAvailableUser();
if (CollectionUtils.isEmpty(availableUser)) {
return Boolean.FALSE;
}
public Boolean createProjectOrder(Long projectId, List<Long> frequentIds, String token) throws Exception {
FPerformProjectInfo performByProjectId = getPerformByProjectId(projectId);
if (Objects.isNull(performByProjectId)) {
log.info("该projectId:{}暂无演出信息", projectId);
@@ -118,11 +114,11 @@ public class PerformServiceImpl implements IPerformService {
.map(FPerformSeatInfo::getSeatPlanId)
.collect(Collectors.toList());
ProjectOrderCreateReq projectOrderCreateReq = buildReqV2(projectId, frequentIds, seatIds, performId, price);
for (int i = 1; i <= 10; i++) {
ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq, availableUser.get(0).getToken()), "create-project-order");
for (int i = 1; i <= 100; i++) {
ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq, token), "create-project-order");
if (Objects.nonNull(projectOrder)) {
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在5分钟内完成付款";
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在5分钟内完成付款订单号:" + projectOrder.getOrderNo();
dingTalkService.sendScriptMsg(msg);
return Boolean.TRUE;
}