fix: 在发送消息时设置等待标志防止重复进入聊天页

在 WeworkController 的 sendMessage 和 replyMessage 方法开始时设置 waitingForReply = true,避免主循环在消息发送过程中重复检测并进入同一聊天窗口。同时移除 WeworkLoopImpl 中已不需要的 waitForServerReply() 调用及相关注释。
This commit is contained in:
2026-03-27 15:27:15 +08:00
parent 493501b809
commit 1a012937cf
2 changed files with 5 additions and 5 deletions

View File

@@ -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,

View File

@@ -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