фикс
This commit is contained in:
parent
41a6664c32
commit
c2791255ee
@ -324,11 +324,45 @@ const getConversationMessages = async (req, res) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Получить диалог по ID
|
||||||
|
* @route GET /api/admin/conversations/:id
|
||||||
|
* @access Admin
|
||||||
|
*/
|
||||||
|
const getConversationById = async (req, res) => {
|
||||||
|
try {
|
||||||
|
const conversationId = req.params.id;
|
||||||
|
console.log(`[ADMIN] Запрос диалога с ID: ${conversationId}`);
|
||||||
|
|
||||||
|
if (!mongoose.Types.ObjectId.isValid(conversationId)) {
|
||||||
|
console.log(`[ADMIN] Недопустимый формат ID диалога: ${conversationId}`);
|
||||||
|
return res.status(400).json({ message: 'Недопустимый формат ID диалога' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Получаем диалог с данными участников
|
||||||
|
const conversation = await Conversation.findById(conversationId)
|
||||||
|
.populate('participants', 'name email photos')
|
||||||
|
.populate('lastMessage');
|
||||||
|
|
||||||
|
if (!conversation) {
|
||||||
|
console.log(`[ADMIN] Диалог с ID ${conversationId} не найден в базе данных`);
|
||||||
|
return res.status(404).json({ message: 'Диалог не найден' });
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`[ADMIN] Диалог найден, возвращаем данные`);
|
||||||
|
res.json(conversation);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('[ADMIN] Ошибка при получении диалога:', error);
|
||||||
|
res.status(500).json({ message: 'Ошибка сервера при получении диалога' });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getAllUsers,
|
getAllUsers,
|
||||||
getUserDetails,
|
getUserDetails,
|
||||||
toggleUserActive,
|
toggleUserActive,
|
||||||
getAppStatistics,
|
getAppStatistics,
|
||||||
getAllConversations,
|
getAllConversations,
|
||||||
|
getConversationById,
|
||||||
getConversationMessages
|
getConversationMessages
|
||||||
};
|
};
|
@ -29,6 +29,7 @@ router.put('/reports/:id', updateReportStatus);
|
|||||||
|
|
||||||
// Маршруты для просмотра диалогов и сообщений
|
// Маршруты для просмотра диалогов и сообщений
|
||||||
router.get('/conversations', adminController.getAllConversations);
|
router.get('/conversations', adminController.getAllConversations);
|
||||||
|
router.get('/conversations/:id', adminController.getConversationById); // Новый маршрут для получения диалога по ID
|
||||||
router.get('/conversations/:id/messages', adminController.getConversationMessages);
|
router.get('/conversations/:id/messages', adminController.getConversationMessages);
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
@ -151,30 +151,20 @@ export default {
|
|||||||
error.value = null;
|
error.value = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const token = localStorage.getItem('userToken'); // Исправлено с 'token' на 'userToken'
|
const token = localStorage.getItem('userToken');
|
||||||
|
|
||||||
// Здесь мы используем маршрут для получения данных о диалоге
|
// Прямой запрос к диалогу по его ID
|
||||||
// Это должен быть запрос к API, который возвращает данные о конкретном диалоге
|
|
||||||
// На бэкенде такого маршрута может не быть, поэтому используем маршрут для получения списка диалогов
|
|
||||||
// и фильтруем результаты на клиенте
|
|
||||||
const response = await axios.get(
|
const response = await axios.get(
|
||||||
`/api/admin/conversations`,
|
`/api/admin/conversations/${props.id}`,
|
||||||
{
|
{
|
||||||
params: { userId: props.id, limit: 1 }, // Временное решение, по API нужно реализовать маршрут GET /api/admin/conversations/:id
|
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${token}`
|
Authorization: `Bearer ${token}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
if (response.data.conversations && response.data.conversations.length > 0) {
|
if (response.data) {
|
||||||
conversation.value = response.data.conversations.find(c => c._id === props.id);
|
conversation.value = response.data;
|
||||||
|
|
||||||
if (!conversation.value) {
|
|
||||||
// Если не нашли диалог по ID, возьмем первый из ответа (временное решение)
|
|
||||||
conversation.value = response.data.conversations[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Загружаем сообщения для диалога
|
// Загружаем сообщения для диалога
|
||||||
loadMessages();
|
loadMessages();
|
||||||
} else {
|
} else {
|
||||||
@ -182,7 +172,11 @@ export default {
|
|||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Ошибка при загрузке данных диалога:', err);
|
console.error('Ошибка при загрузке данных диалога:', err);
|
||||||
error.value = 'Ошибка при загрузке информации о диалоге. Пожалуйста, попробуйте позже.';
|
if (err.response && err.response.status === 404) {
|
||||||
|
error.value = 'Диалог не найден. Проверьте ID диалога.';
|
||||||
|
} else {
|
||||||
|
error.value = 'Ошибка при загрузке информации о диалоге. Пожалуйста, попробуйте позже.';
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user