|
|
@@ -915,8 +915,6 @@ public class PayScoreServiceImpl implements PayScoreService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 3. 暴力扫描:尝试取消当前设备最近一段时间内可能存在的孤儿订单
|
|
|
- bruteForceCancelRecentOrders(userId, deviceId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1001,35 +999,42 @@ public class PayScoreServiceImpl implements PayScoreService {
|
|
|
log.debug("[支付分服务] 查询用户设备列表异常: {}", e.getMessage());
|
|
|
}
|
|
|
|
|
|
- log.info("[支付分服务] 暴力扫描 {} 个设备后缀,窗口4小时", suffixes.size());
|
|
|
+ log.info("[支付分服务] 暴力扫描 {} 个设备后缀", suffixes.size());
|
|
|
|
|
|
long nowSec = System.currentTimeMillis() / 1000;
|
|
|
int cancelledCount = 0;
|
|
|
int totalAttempts = 0;
|
|
|
|
|
|
- // 扫描过去4小时,每15秒一个时间点
|
|
|
- for (int i = 0; i < 960; i++) {
|
|
|
- long ts = nowSec - (i * 15L);
|
|
|
- for (String suffix : suffixes) {
|
|
|
- totalAttempts++;
|
|
|
- String outOrderNo = "PS" + ts + suffix;
|
|
|
- try {
|
|
|
- PayScoreCancelRequest cancelReq = new PayScoreCancelRequest();
|
|
|
- cancelReq.setOutOrderNo(outOrderNo);
|
|
|
- cancelReq.setReason("自动清理孤儿订单");
|
|
|
- PayScoreResult cancelResult = payScoreStrategy.cancelServiceOrder(cancelReq);
|
|
|
- if (cancelResult.isSuccess()) {
|
|
|
- cancelledCount++;
|
|
|
- if (cancelledCount <= 5) {
|
|
|
- log.info("[支付分服务] 暴力清理成功 - outOrderNo: {}", outOrderNo);
|
|
|
+ // 高精度扫描最近5分钟(每1秒),覆盖密集重试场景
|
|
|
+ // 之后每15秒扫描到1小时,覆盖较早的孤儿订单
|
|
|
+ int[][] scanStages = {
|
|
|
+ {0, 300, 1}, // 0-5min, 每1秒 (300次/设备)
|
|
|
+ {300, 3600, 15}, // 5min-1h, 每15秒 (220次/设备)
|
|
|
+ };
|
|
|
+
|
|
|
+ for (int[] stage : scanStages) {
|
|
|
+ int startSec = stage[0];
|
|
|
+ int endSec = stage[1];
|
|
|
+ int interval = stage[2];
|
|
|
+
|
|
|
+ for (int s = startSec; s < endSec; s += interval) {
|
|
|
+ long ts = nowSec - s;
|
|
|
+ for (String suffix : suffixes) {
|
|
|
+ totalAttempts++;
|
|
|
+ String outOrderNo = "PS" + ts + suffix;
|
|
|
+ try {
|
|
|
+ PayScoreCancelRequest cancelReq = new PayScoreCancelRequest();
|
|
|
+ cancelReq.setOutOrderNo(outOrderNo);
|
|
|
+ cancelReq.setReason("自动清理孤儿订单");
|
|
|
+ PayScoreResult cancelResult = payScoreStrategy.cancelServiceOrder(cancelReq);
|
|
|
+ if (cancelResult.isSuccess()) {
|
|
|
+ cancelledCount++;
|
|
|
+ if (cancelledCount <= 5) {
|
|
|
+ log.info("[支付分服务] 暴力清理成功 - outOrderNo: {}", outOrderNo);
|
|
|
+ }
|
|
|
}
|
|
|
+ } catch (Exception ignored) {
|
|
|
}
|
|
|
- } catch (Exception ignored) {
|
|
|
- }
|
|
|
-
|
|
|
- if (totalAttempts % 500 == 0 && cancelledCount > 0) {
|
|
|
- log.info("[支付分服务] 暴力清理进度 - 已尝试 {} 次, 成功取消 {} 笔",
|
|
|
- totalAttempts, cancelledCount);
|
|
|
}
|
|
|
}
|
|
|
}
|