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

@@ -35,7 +35,7 @@
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>
<artifactId>xservice-third-part</artifactId> <artifactId>xservice-third-part</artifactId>
<version>1.0-snapshot</version> <version>1.1-snapshot</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>

View File

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

View File

@@ -2,4 +2,5 @@ package com.xiang.xservice.fwd.constants;
public class CodeConstants { public class CodeConstants {
public static final Integer SUCCESS = 10000; 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) { for (FUserConfig userConfig : availableUser) {
List<FAudienceConfig> audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId()); List<FAudienceConfig> audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId());
try { try {
if (performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()))) { performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList()));
dynamicTaskSchedulerService.finishTask(param.getTaskId()); dynamicTaskSchedulerService.finishTask(param.getTaskId());
} else {
dynamicTaskSchedulerService.finishTask(param.getTaskId());
}
} catch (Exception e) { } catch (Exception e) {
log.error("创建订单失败", e); log.error("创建订单失败", e);
dynamicTaskSchedulerService.errTask(param.getTaskId()); dynamicTaskSchedulerService.errTask(param.getTaskId());

View File

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

View File

@@ -1,6 +1,7 @@
package com.xiang.xservice.fwd.service.impl; package com.xiang.xservice.fwd.service.impl;
import com.alibaba.fastjson2.JSONObject; 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.basic.xservice.dingTalk.service.DingTalkService;
import com.xiang.xservice.fwd.entity.pojo.FPerformConfig; import com.xiang.xservice.fwd.entity.pojo.FPerformConfig;
import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo;
@@ -24,6 +25,10 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; 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 * @Author: xiang
@@ -42,6 +47,15 @@ public class PerformServiceImpl implements IPerformService {
@Value("${DingTalk.chatId}") @Value("${DingTalk.chatId}")
private String chatId; private String chatId;
private final HttpRequestHelper httpRequestHelper; 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 @Override
public FPerformProjectInfo getPerformByProjectId(Long projectId) { public FPerformProjectInfo getPerformByProjectId(Long projectId) {
@@ -84,12 +98,12 @@ public class PerformServiceImpl implements IPerformService {
projectOrderCreateReq.setBlackBox("0"); projectOrderCreateReq.setBlackBox("0");
projectOrderCreateReq.setCombineTicketVos(null); projectOrderCreateReq.setCombineTicketVos(null);
projectOrderCreateReq.setOrdinaryTicketVos(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"); ProjectOrderCreateResp projectOrder = httpRequestHelper.fetchWithRetry(() -> performServiceHttp.createProjectOrder(projectOrderCreateReq), "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() + "请在2分钟内完成付款";
dingTalkService.sendChatMessage(chatId, msg); dingTalkService.sendRobotMessage(msg);
return Boolean.TRUE; return Boolean.TRUE;
} }
} }

View File

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