From 9c2d5db41e88d9bca7d125bd71d163074ccfea1e Mon Sep 17 00:00:00 2001 From: youpaishidifu <1@ypshidifu.cn> Date: Tue, 6 Oct 2026 19:58:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=85=E5=80=BC=E5=9B=9E=E6=89=A7=E5=AF=B9?= =?UTF-8?q?=E8=B4=A6=E6=8E=92=E8=BF=9B=E9=A6=96=E6=AC=A1=E5=85=A8=E9=87=8F?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=98=9F=E5=88=97=EF=BC=9A=E6=97=A0=E4=BA=BA?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=97=B6=E5=90=AF=E5=8A=A8=E5=8D=B3=E7=82=B9?= =?UTF-8?q?=E5=B7=AE=E9=9B=86=EF=BC=8C=E4=B8=8D=E5=86=8D=E5=8F=AA=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=8E=A9=E5=AE=B6=E4=B8=8A=E7=BA=BF=E7=9A=84=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E6=89=B9=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Sdf1_login/WebManager.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/Sdf1_login/WebManager.java b/src/main/java/Sdf1_login/WebManager.java index 4429a61..de7480a 100644 --- a/src/main/java/Sdf1_login/WebManager.java +++ b/src/main/java/Sdf1_login/WebManager.java @@ -1642,7 +1642,7 @@ public class WebManager { private final java.util.concurrent.atomic.AtomicBoolean fullSyncRunning = new java.util.concurrent.atomic.AtomicBoolean(false); /** - * 排一次「首次全量同步」:先与 PHP 对账流水(alignTxWatermarkOnBoot),再按优先级排队 12 项。 + * 排一次「首次全量同步」:先与 PHP 对账流水(alignTxWatermarkOnBoot),再按优先级排队 13 项。 * 由 start()(启动 10 秒后)与 reloadWebConfig()(reload 当场)共同调用。 * * @param trigger 触发来源,仅用于日志区分「启动」/「reload」 @@ -1656,7 +1656,7 @@ public class WebManager { plugin.getLogger().info("[Web通信] 全量同步已跳过(web通信-启用=false), 来源=" + trigger); return; } - // ★ 与另一条路径互斥:已经在跑就不再起第二遍(12 项排队 + 水位线对齐只做一次) + // ★ 与另一条路径互斥:已经在跑就不再起第二遍(13 项排队 + 水位线对齐只做一次) if (!fullSyncRunning.compareAndSet(false, true)) { plugin.getLogger().info("[Web通信] 已有全量同步在执行,本次(" + trigger + ")跳过"); return; @@ -1690,6 +1690,11 @@ public class WebManager { submitNormalDbTask("首次-syncBondTransactions", () -> syncBondTransactions()); fullSyncStep("交易流水(先双向对账,多退少补)"); awaitDbQueueIdle(10000); // 等队列排空再提交下一项(原为固定1.5~3.5秒) + // ★ 充值回执对账(2026-10-06):一式两份、多退少补。启动即点一次差集, + // 否则无人在线时只靠周期批次(需玩家上线触发),镜像与 PHP 永不收敛。 + submitNormalDbTask("首次-syncWebTxReceipts", () -> syncWebTxReceipts()); + fullSyncStep("充值回执(一式两份,多退少补)"); + awaitDbQueueIdle(10000); // 等队列排空再提交下一项(原为固定1.5~3.5秒) submitNormalDbTask("首次-syncAllPlayerIps", () -> syncAllPlayerIps()); fullSyncStep("玩家IP"); awaitDbQueueIdle(10000); // 等队列排空再提交下一项(原为固定1.5~3.5秒) @@ -1703,7 +1708,7 @@ public class WebManager { fullSyncStep("管理员改动"); initialSyncComplete = true; // 首次全量同步提交完成 allowLoginPolling = true; // 允许登录轮询 - plugin.getLogger().info("[Web通信] ===== 全量同步 12 项已全部提交(来源:" + trigger + "),耗时 " + plugin.getLogger().info("[Web通信] ===== 全量同步 13 项已全部提交(来源:" + trigger + "),耗时 " + (System.currentTimeMillis() - fullSyncStart) / 1000 + " 秒;随后由DB队列逐项执行,若某项失败会在日志打【失败/无响应】并下轮重试 ====="); } finally {