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('当前对话不支持');
|
||||
}
|
||||
//
|
||||
$previousSessionId = intval($dialog->session_id);
|
||||
//
|
||||
$session = WebSocketDialogSession::whereDialogId($dialog->id)->whereTitle('')->first();
|
||||
if ($session) {
|
||||
$dialog->session_id = $session->id;
|
||||
@ -3596,6 +3598,8 @@ class DialogController extends AbstractController
|
||||
$dialog->session_id = $session->id;
|
||||
$dialog->save();
|
||||
//
|
||||
WebSocketDialogMsgRead::markSessionMessagesAsRead($dialog->id, $previousSessionId);
|
||||
//
|
||||
return Base::retSuccess('success', $session);
|
||||
}
|
||||
|
||||
|
||||
@ -121,4 +121,30 @@ class WebSocketDialogMsgRead extends AbstractModel
|
||||
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