perf:下单优化
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -35,7 +35,7 @@
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
<artifactId>xservice-third-part</artifactId>
|
||||
<version>1.0-snapshot</version>
|
||||
<version>1.1-snapshot</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xiang</groupId>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user