fix: 首次跟ai聊天没有记录的问题

This commit is contained in:
kuaifan 2025-02-25 11:14:41 +08:00
parent 707f1dd6cb
commit 213ab8418b
2 changed files with 65 additions and 0 deletions

View File

@ -770,6 +770,17 @@ class WebSocketDialog extends AbstractModel
'dialog_id' => $dialog->id,
'userid' => $receiver,
])->save();
//
if ($user->isAiBot() || User::find($receiver)?->isAiBot()) {
$session = WebSocketDialogSession::create([
'dialog_id' => $dialog->id,
'status' => 1,
'title' => '',
]);
$session->save();
$dialog->session_id = $session->id;
$dialog->save();
}
return $dialog;
});
}

View File

@ -0,0 +1,54 @@
<?php
use App\Models\WebSocketDialog;
use App\Models\WebSocketDialogMsg;
use App\Models\WebSocketDialogSession;
use App\Module\Base;
use Illuminate\Database\Migrations\Migration;
class UpdateWebSocketDialogMsgsSessionId extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
$list = WebSocketDialog::select(['web_socket_dialogs.*', 'u.email'])
->join('web_socket_dialog_users as du', 'web_socket_dialogs.id', '=', 'du.dialog_id')
->join('users as u', 'du.userid', '=', 'u.userid')
->where('u.email', 'like', 'ai-%@bot.system')
->where('web_socket_dialogs.type', 'user')
->get();
foreach ($list as $item) {
$msg = WebSocketDialogMsg::whereDialogId($item->id)->whereSessionId(0)->orderBy('id')->first();
if ($msg || empty($item->session_id)) {
$title = $msg?->key;
$session = WebSocketDialogSession::createInstance([
'dialog_id' => $item->id,
'title' => $title ? Base::cutStr($title, 100) : 'Unknown',
'created_at' => $item->created_at,
]);
$session->save();
if (empty($item->session_id)) {
$item->session_id = $session->id;
$item->save();
}
if ($msg) {
WebSocketDialogMsg::whereDialogId($item->id)->whereSessionId(0)->update(['session_id' => $session->id]);
}
}
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}