perf:下单优化

This commit is contained in:
xiang
2025-07-29 23:46:27 +08:00
parent 76251a1a2d
commit 03b540b2ae
7 changed files with 31 additions and 11 deletions

View File

@@ -58,14 +58,14 @@ public class IDomainServiceImpl implements IDomainService {
if (records.isEmpty()) {
log.info("未找到记录,添加记录..., ip:{}", publicIp);
addDnsRecord(client, publicIp, rr);
dingTalkService.sendChatMessage(chatId, "动态解析公网ip成功域名" + rr + "." + DOMAIN_NAME + ", 新ip:" + publicIp);
dingTalkService.sendRobotMessage("动态解析公网ip成功域名" + rr + "." + DOMAIN_NAME + ", 新ip:" + publicIp);
} else {
String recordId = records.get(0).getRecordId();
String currentValue = records.get(0).getValue();
if (!publicIp.equals(currentValue)) {
log.info("IP变更更新记录...,ip:{}", publicIp);
updateDnsRecord(client, recordId, publicIp, rr);
dingTalkService.sendChatMessage(chatId, "动态解析公网ip成功域名" + rr + "." + DOMAIN_NAME + ", 新ip:" + publicIp);
dingTalkService.sendRobotMessage("动态解析公网ip成功域名" + rr + "." + DOMAIN_NAME + ", 新ip:" + publicIp);
} else {
log.info("ip未变更无需修改ip:{}", publicIp);
}

View File

@@ -2,4 +2,5 @@ package com.xiang.xservice.fwd.constants;
public class CodeConstants {
public static final Integer SUCCESS = 10000;
public static final Integer LIMIT = 47009;
}

View File

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

View File

@@ -100,6 +100,14 @@ public class PerformServiceHttpServiceImpl implements IPerformServiceHttp {
}
return projectOrderCreateResp;
}
if (Objects.nonNull(code) && Objects.equals(code, CodeConstants.LIMIT)) {
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
return null;
}

View File

@@ -1,6 +1,7 @@
package com.xiang.xservice.fwd.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.xiang.xservice.basic.config.MyThreadFactory;
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;
@@ -24,6 +25,10 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @Author: xiang
@@ -42,6 +47,15 @@ public class PerformServiceImpl implements IPerformService {
@Value("${DingTalk.chatId}")
private String chatId;
private final HttpRequestHelper httpRequestHelper;
private final ExecutorService es =
new ThreadPoolExecutor(
10,
20,
1000,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(),
new MyThreadFactory("ticket-", Boolean.TRUE),
new ThreadPoolExecutor.AbortPolicy());
@Override
public FPerformProjectInfo getPerformByProjectId(Long projectId) {
@@ -84,12 +98,12 @@ public class PerformServiceImpl implements IPerformService {
projectOrderCreateReq.setBlackBox("0");
projectOrderCreateReq.setCombineTicketVos(null);
projectOrderCreateReq.setOrdinaryTicketVos(null);
for (int i = 0; i <= 999; i++) {
for (int i = 1; i <= 30; i++) {
ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq), "create-project-order");
if (Objects.nonNull(projectOrder)) {
log.info("下单成功,订单信息:{}", JSONObject.toJSONString(projectOrder));
String msg = "【芬玩岛】下单成功✅✅✅,演出名称:" + performByProjectId.getProjectName() + "请在2分钟内完成付款";
dingTalkService.sendChatMessage(chatId, msg);
dingTalkService.sendRobotMessage(msg);
return Boolean.TRUE;
}
}

View File

@@ -84,7 +84,7 @@ public class GLaDOSServiceImpl implements GLaDOSService{
log.info("签到成功, 签到积分:{}, 签到消息:{}", gLaDOSResponse.getPoints(), gLaDOSResponse.getMessage());
sb.append(user.getEmail()).append("签到成功,获得积分:").append(gLaDOSResponse.getPoints()).append("\n");
try {
dingTalkService.sendChatMessage(chatId, "[时间:" + LocalDateTime.now() + "] 用户: " +
dingTalkService.sendRobotMessage("[时间:" + LocalDateTime.now() + "] 用户: " +
user.getEmail() + "签到成功,获得积分:" + gLaDOSResponse.getPoints());
} catch (Exception e) {
log.error("发送钉钉消息失败", e);