From 13c5a64dc31488893afb15a673f464519d72a207 Mon Sep 17 00:00:00 2001 From: WrBug Date: Wed, 3 Dec 2025 06:41:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E8=B7=9F=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=97=B6=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20restartMonitoring=20=E7=A1=AE=E4=BF=9D=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建跟单时:如果启用了,调用 restartMonitoring - 更新跟单状态时:调用 restartMonitoring(而不是 addLeaderMonitoring/removeLeaderMonitoring) - 删除跟单时:调用 restartMonitoring(而不是 removeLeaderMonitoring) - 确保所有跟单状态变更后,轮询监听都能完全同步最新状态 --- .../polymarketbot/service/CopyTradingService.kt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/CopyTradingService.kt b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/CopyTradingService.kt index bf9ea7f..129e202 100644 --- a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/CopyTradingService.kt +++ b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/CopyTradingService.kt @@ -62,13 +62,13 @@ class CopyTradingService( val saved = copyTradingRepository.save(copyTrading) - // 如果跟单已启用,启动Leader监听 + // 如果跟单已启用,重新启动监听(确保状态完全同步) if (saved.enabled) { kotlinx.coroutines.runBlocking { try { - monitorService.addLeaderMonitoring(saved.leaderId) + monitorService.restartMonitoring() } catch (e: Exception) { - logger.error("启动Leader监听失败: leaderId=${saved.leaderId}", e) + logger.error("重新启动跟单监听失败", e) } } } @@ -195,15 +195,14 @@ class CopyTradingService( val copyTrading = copyTradingRepository.findById(copyTradingId).orElse(null) ?: return Result.failure(IllegalArgumentException("跟单关系不存在")) - val leaderId = copyTrading.leaderId copyTradingRepository.delete(copyTrading) - // 移除监听(如果该Leader没有其他启用的跟单关系) + // 重新启动监听(确保状态完全同步) kotlinx.coroutines.runBlocking { try { - monitorService.removeLeaderMonitoring(leaderId) + monitorService.restartMonitoring() } catch (e: Exception) { - logger.error("移除Leader监听失败: leaderId=$leaderId", e) + logger.error("重新启动跟单监听失败", e) } }