Добавлены новые поля ssd в типы GraphQL и обновлен резолвер для улучшения обработки категорий и узлов. Реализована логика получения узлов в зависимости от наличия categoryId и SSD, что повышает гибкость и надежность взаимодействия с API.

This commit is contained in:
Bivekich
2025-07-03 15:35:34 +03:00
parent 4ee005cea9
commit dfd21aad5c
2 changed files with 60 additions and 1 deletions

View File

@ -1825,7 +1825,63 @@ export const resolvers = {
ssdLength: ssd?.length
})
const result = await laximoService.getListUnits(catalogCode, vehicleId, ssd, categoryId)
let result: any[] = []
// Если есть categoryId, то мы ищем узлы в конкретной категории
if (categoryId) {
console.log('🔧 Поиск узлов в категории:', categoryId)
// Для обычных категорий НЕ используем SSD - он нужен только для быстрых групп
try {
console.log('🔧 Пробуем ListUnits БЕЗ SSD для обычной категории...')
result = await laximoService.getListUnits(catalogCode, vehicleId, undefined, categoryId)
console.log('✅ Получено узлов в категории:', result.length)
} catch (error: any) {
console.log('⚠️ Ошибка ListUnits без SSD:', error.message)
// Если и без SSD не работает, пробуем получить категории вместо узлов
try {
console.log('🔧 Пробуем получить подкатегории...')
result = await laximoService.getListCategories(catalogCode, vehicleId, undefined)
// Фильтруем только подкатегории данной категории, если есть parent-child связи
console.log('✅ Получено подкатегорий:', result.length)
} catch (categoriesError: any) {
console.log('⚠️ Ошибка получения подкатегорий:', categoriesError.message)
}
}
} else {
// Если categoryId нет, получаем список всех категорий
console.log('🔧 Получаем список всех категорий...')
try {
result = await laximoService.getListCategories(catalogCode, vehicleId, ssd)
// Если получили категории, используем SSD из первой категории для получения узлов
if (result.length > 0 && result[0].ssd) {
console.log('🔧 Найден SSD в категориях, пробуем получить узлы...')
const categorySsd = result[0].ssd
console.log('🔑 SSD из категории:', categorySsd.substring(0, 30) + '...')
// Пробуем получить узлы для первой категории с найденным SSD
try {
const unitsResult = await laximoService.getListUnits(catalogCode, vehicleId, categorySsd, result[0].quickgroupid)
if (unitsResult.length > 0) {
console.log('✅ Получены узлы с SSD из категории:', unitsResult.length)
result = unitsResult
}
} catch (error: any) {
console.log('⚠️ Ошибка получения узлов с SSD из категории:', error.message)
}
}
} catch (error: any) {
console.log('⚠️ Ошибка ListCategories:', error.message)
// Пробуем без SSD
if (ssd) {
console.log('🔧 Пробуем ListCategories без SSD...')
result = await laximoService.getListCategories(catalogCode, vehicleId, undefined)
}
}
}
console.log('✅ GraphQL Resolver - получено узлов каталога:', result?.length || 0)
if (result && result.length > 0) {

View File

@ -1394,6 +1394,7 @@ export const typeDefs = gql`
code: String
imageurl: String
largeimageurl: String
ssd: String
}
type LaximoQuickGroupsResponse {
@ -1414,6 +1415,7 @@ export const typeDefs = gql`
description: String
imageurl: String
largeimageurl: String
ssd: String
details: [LaximoDetail!]
attributes: [LaximoDetailAttribute!]
}
@ -1554,6 +1556,7 @@ export const typeDefs = gql`
description: String
imageurl: String
largeimageurl: String
ssd: String
attributes: [LaximoDetailAttribute!]
}