From 1a012937cffe97398e0ea58e51d3250a3952be07 Mon Sep 17 00:00:00 2001 From: tanjianbin <632190820@qq.com> Date: Fri, 27 Mar 2026 15:27:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9C=A8=E5=8F=91=E9=80=81=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=97=B6=E8=AE=BE=E7=BD=AE=E7=AD=89=E5=BE=85=E6=A0=87?= =?UTF-8?q?=E5=BF=97=E9=98=B2=E6=AD=A2=E9=87=8D=E5=A4=8D=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 WeworkController 的 sendMessage 和 replyMessage 方法开始时设置 waitingForReply = true,避免主循环在消息发送过程中重复检测并进入同一聊天窗口。同时移除 WeworkLoopImpl 中已不需要的 waitForServerReply() 调用及相关注释。 --- .../java/org/yameida/worktool/service/WeworkController.kt | 4 ++++ .../java/org/yameida/worktool/service/WeworkLoopImpl.kt | 6 +----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt index 38ea4dd..e033940 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -63,6 +63,8 @@ object WeworkController { @RequestMapping fun sendMessage(message: WeworkMessageBean): Boolean { LogUtils.d("REQUEST sendMessage(): ${message.messageId} ${message.titleList} ${message.receivedContent} ${message.at} ${message.atList?.joinToString()}") + // 进入发送消息流程,暂停主循环检测新消息,避免重复进入同一聊天页 + waitingForReply = true val result = WeworkOperationImpl.sendMessage(message, message.titleList, message.receivedContent, message.at, message.atList) // 发送完成,通知等待结束 waitingForReply = false @@ -82,6 +84,8 @@ object WeworkController { @RequestMapping fun replyMessage(message: WeworkMessageBean): Boolean { LogUtils.d("REQUEST replyMessage(): ${message.messageId} ${message.receivedName} ${message.originalContent} ${message.textType} ${message.receivedContent}") + // 进入发送消息流程,暂停主循环检测新消息,避免重复进入同一聊天页 + waitingForReply = true val result = WeworkOperationImpl.replyMessage( message, message.titleList, diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt index 16eb0c9..8b7d522 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt @@ -66,7 +66,7 @@ object WeworkLoopImpl { } // 获取消息后,等待服务端回复指令,最多30秒 if (mainLoopRunning) { - waitForServerReply() + // waitForServerReply() } // 等待完成后返回主页 if (mainLoopRunning) { @@ -327,7 +327,6 @@ object WeworkLoopImpl { null ) WeworkController.weworkService.webSocketManager.send(messageBean) - // 方案A:发送消息后立即返回主页,继续检测下一条消息,不等待 if (needInfer) { val lastMessage = messageList.lastOrNull() if (lastMessage != null && lastMessage.sender == 0) { @@ -344,13 +343,10 @@ object WeworkLoopImpl { || tempContent.isNotBlank() ) { LogUtils.v("推测需要回复: $tempContent") - // 方案A:不清空 waitingForReply,直接返回主页 - // 这样主循环会继续检测下一条消息 return true } } 2 -> { - // 方案A:不清空 waitingForReply,直接返回主页 return true } else -> return true