From 8ab75ee6f68c3cde70319b9863db6947f668175f Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 22 Sep 2026 13:58:40 +0800
Subject: [PATCH] fix(station): 修复指令执行失败时状态更新异常问题
---
src/main/java/com/xcong/excoin/modules/station/consumer/GateMessageConsumer.java | 5 ++++-
src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java | 6 +++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java
index 72134a6..98d1c11 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java
@@ -82,11 +82,15 @@
}
} catch (Exception e) {
success = false;
- newState = "ERROR";
message = e.getMessage();
log.error("[Gate] 指令执行失败", e);
}
+ // 指令异常/未知类型时 newState 可能为空,统一回退为当前真实状态,避免污染 Station 侧实例状态
+ if (newState == null || newState.isEmpty()) {
+ newState = strategy.getState().name();
+ }
+
// 发送 ACK 到 Station
CmdAckMsg ack = CmdAckMsg.builder()
.commandId(cmd.getCommandId())
diff --git a/src/main/java/com/xcong/excoin/modules/station/consumer/GateMessageConsumer.java b/src/main/java/com/xcong/excoin/modules/station/consumer/GateMessageConsumer.java
index 5fa4ce8..5561774 100644
--- a/src/main/java/com/xcong/excoin/modules/station/consumer/GateMessageConsumer.java
+++ b/src/main/java/com/xcong/excoin/modules/station/consumer/GateMessageConsumer.java
@@ -44,7 +44,10 @@
} else if ("CMD_ACK".equals(type)) {
CmdAckMsg ack = JSON.parseObject(json.getString("payload"), CmdAckMsg.class);
- instanceRegistry.updateState(apiKeyMd5, ack.getNewState());
+ // 防御:newState 为空时跳过更新,避免把实例状态污染为非法值(导致前端误置灰)
+ if (ack.getNewState() != null && !ack.getNewState().isEmpty()) {
+ instanceRegistry.updateState(apiKeyMd5, ack.getNewState());
+ }
log.info("[Station] 指令确认: cmdId={}, success={}, newState={}",
ack.getCommandId(), ack.isSuccess(), ack.getNewState());
}
--
Gitblit v1.9.1