perf:下单优化
This commit is contained in:
1
pom.xml
1
pom.xml
@@ -16,7 +16,6 @@
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>script</module>
|
||||
<module>sda_stock_center</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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("下单失败!");
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user