From 03b540b2ae117620f5bfd44f3a96a108d3a23a13 Mon Sep 17 00:00:00 2001 From: xiang Date: Tue, 29 Jul 2025 23:46:27 +0800 Subject: [PATCH] =?UTF-8?q?perf=EF=BC=9A=E4=B8=8B=E5=8D=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../domain/service/IDomainServiceImpl.java | 4 ++-- .../xservice/fwd/constants/CodeConstants.java | 1 + .../xservice/fwd/schedule/TicketGrabTask.java | 7 ++----- .../impl/PerformServiceHttpServiceImpl.java | 8 ++++++++ .../fwd/service/impl/PerformServiceImpl.java | 18 ++++++++++++++++-- .../glados/service/GLaDOSServiceImpl.java | 2 +- 7 files changed, 31 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 47fb50b..6e05f59 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ com.xiang xservice-third-part - 1.0-snapshot + 1.1-snapshot com.xiang diff --git a/script/src/main/java/com/xiang/xservice/domain/service/IDomainServiceImpl.java b/script/src/main/java/com/xiang/xservice/domain/service/IDomainServiceImpl.java index 92e2cdd..4f4dd6e 100644 --- a/script/src/main/java/com/xiang/xservice/domain/service/IDomainServiceImpl.java +++ b/script/src/main/java/com/xiang/xservice/domain/service/IDomainServiceImpl.java @@ -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); } diff --git a/script/src/main/java/com/xiang/xservice/fwd/constants/CodeConstants.java b/script/src/main/java/com/xiang/xservice/fwd/constants/CodeConstants.java index fdaa507..39c160b 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/constants/CodeConstants.java +++ b/script/src/main/java/com/xiang/xservice/fwd/constants/CodeConstants.java @@ -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; } diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java index ae6b271..88eee70 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java +++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java @@ -45,11 +45,8 @@ public class TicketGrabTask implements Runnable { for (FUserConfig userConfig : availableUser) { List 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()); diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java index 1a6145e..2ea1380 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java +++ b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceHttpServiceImpl.java @@ -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; } diff --git a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java index 4dafea6..3980f78 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java +++ b/script/src/main/java/com/xiang/xservice/fwd/service/impl/PerformServiceImpl.java @@ -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; } } diff --git a/script/src/main/java/com/xiang/xservice/glados/service/GLaDOSServiceImpl.java b/script/src/main/java/com/xiang/xservice/glados/service/GLaDOSServiceImpl.java index 18fbb0f..7ae1cab 100644 --- a/script/src/main/java/com/xiang/xservice/glados/service/GLaDOSServiceImpl.java +++ b/script/src/main/java/com/xiang/xservice/glados/service/GLaDOSServiceImpl.java @@ -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);