From 8ff086c483b43ff6721e215749781bb6beb4d0ed Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 12 Dec 2025 16:27:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=B0=D1=88=D0=B5=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/routes/messages.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/backend/routes/messages.js b/backend/routes/messages.js index 912fe1e..226bab3 100644 --- a/backend/routes/messages.js +++ b/backend/routes/messages.js @@ -200,14 +200,18 @@ router.get('/public', requireAuth, async (req, res) => { // Если нужен только подсчет if (countOnly) { const countResult = await db.getQuery()( - `SELECT COUNT(*) FROM messages WHERE message_type = 'public' - AND ((user_id = $1 AND sender_id = $2) OR (user_id = $2 AND sender_id = $1))`, + `SELECT COUNT(*) FROM messages + WHERE ( + (message_type = 'public' AND ((user_id = $1 AND sender_id = $2) OR (user_id = $2 AND sender_id = $1))) + OR (message_type = 'user_chat' AND user_id = $1) + )`, [targetUserId, currentUserId] ); const totalCount = parseInt(countResult.rows[0].count, 10); return res.json({ success: true, count: totalCount, total: totalCount }); } + // Загружаем публичные сообщения между пользователями И личные сообщения с ИИ целевого пользователя const result = await db.getQuery()( `SELECT m.id, m.user_id, m.sender_id, decrypt_text(m.sender_type_encrypted, $2) as sender_type, decrypt_text(m.content_encrypted, $2) as content, @@ -218,8 +222,10 @@ router.get('/public', requireAuth, async (req, res) => { arm.last_read_at FROM messages m LEFT JOIN admin_read_messages arm ON arm.user_id = m.user_id AND arm.admin_id = $5 - WHERE m.message_type = 'public' - AND ((m.user_id = $1 AND m.sender_id = $5) OR (m.user_id = $5 AND m.sender_id = $1)) + WHERE ( + (m.message_type = 'public' AND ((m.user_id = $1 AND m.sender_id = $5) OR (m.user_id = $5 AND m.sender_id = $1))) + OR (m.message_type = 'user_chat' AND m.user_id = $1) + ) ORDER BY m.created_at DESC LIMIT $3 OFFSET $4`, [targetUserId, encryptionKey, limit, offset, currentUserId] @@ -227,8 +233,11 @@ router.get('/public', requireAuth, async (req, res) => { // Получаем общее количество для пагинации const countResult = await db.getQuery()( - `SELECT COUNT(*) FROM messages WHERE message_type = 'public' - AND ((user_id = $1 AND sender_id = $2) OR (user_id = $2 AND sender_id = $1))`, + `SELECT COUNT(*) FROM messages + WHERE ( + (message_type = 'public' AND ((user_id = $1 AND sender_id = $2) OR (user_id = $2 AND sender_id = $1))) + OR (message_type = 'user_chat' AND user_id = $1) + )`, [targetUserId, currentUserId] ); const totalCount = parseInt(countResult.rows[0].count, 10);