mirror of
https://github.com/kuaifan/dootask.git
synced 2026-01-26 12:38:13 +00:00
feat: 创建新 AI 会话时将旧会话消息批量标记已读
This commit is contained in:
parent
e83fd7af1b
commit
e75aa5c2b9
@ -3582,6 +3582,8 @@ class DialogController extends AbstractController
|
|||||||
return Base::retError('当前对话不支持');
|
return Base::retError('当前对话不支持');
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
$previousSessionId = intval($dialog->session_id);
|
||||||
|
//
|
||||||
$session = WebSocketDialogSession::whereDialogId($dialog->id)->whereTitle('')->first();
|
$session = WebSocketDialogSession::whereDialogId($dialog->id)->whereTitle('')->first();
|
||||||
if ($session) {
|
if ($session) {
|
||||||
$dialog->session_id = $session->id;
|
$dialog->session_id = $session->id;
|
||||||
@ -3596,6 +3598,8 @@ class DialogController extends AbstractController
|
|||||||
$dialog->session_id = $session->id;
|
$dialog->session_id = $session->id;
|
||||||
$dialog->save();
|
$dialog->save();
|
||||||
//
|
//
|
||||||
|
WebSocketDialogMsgRead::markSessionMessagesAsRead($dialog->id, $previousSessionId);
|
||||||
|
//
|
||||||
return Base::retSuccess('success', $session);
|
return Base::retSuccess('success', $session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -121,4 +121,30 @@ class WebSocketDialogMsgRead extends AbstractModel
|
|||||||
DB::update($sql, $bindings);
|
DB::update($sql, $bindings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标记指定会话的历史消息为已读
|
||||||
|
* @param int $dialogId
|
||||||
|
* @param int $sessionId
|
||||||
|
* @param int $chunkSize
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function markSessionMessagesAsRead(int $dialogId, int $sessionId, int $chunkSize = 100): void
|
||||||
|
{
|
||||||
|
if ($dialogId <= 0 || $sessionId <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self::whereDialogId($dialogId)
|
||||||
|
->whereNull('read_at')
|
||||||
|
->whereIn('msg_id', function ($query) use ($dialogId, $sessionId) {
|
||||||
|
$query->select('id')
|
||||||
|
->from((new WebSocketDialogMsg())->getTable())
|
||||||
|
->where('dialog_id', $dialogId)
|
||||||
|
->where('session_id', $sessionId);
|
||||||
|
})
|
||||||
|
->chunkById($chunkSize, function ($list) {
|
||||||
|
self::onlyMarkRead($list);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user