Мастер-Тур(15):API для отдачи цен в поисковые системы — различия между версиями
| [непроверенная версия] | [досмотренная версия] |
Gavrilov (обсуждение | вклад) (→Поиск туров (GetTours)) |
Biryukov (обсуждение | вклад) (→Установка) |
||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 20: | Строка 20: | ||
Для поддержки систем с большой нагрузкой можно использовать сторонние "балансировщики нагрузки". | Для поддержки систем с большой нагрузкой можно использовать сторонние "балансировщики нагрузки". | ||
Пример настройки балансировщика [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]. | Пример настройки балансировщика [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]. | ||
| + | |||
| + | ==Swagger== | ||
| + | Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI'' | ||
==Загрузка справочников== | ==Загрузка справочников== | ||
| Строка 880: | Строка 883: | ||
</div></div><br /> | </div></div><br /> | ||
| − | ===Выгрузка списка | + | ===Выгрузка списка категорий номеров (GetRoomTypes) начиная с релиза 15.3=== |
Метод возвращает список всех доступных категорий номеров, на которые есть актуальные цены. | Метод возвращает список всех доступных категорий номеров, на которые есть актуальные цены. | ||
* Формат запроса: | * Формат запроса: | ||
| Строка 2269: | Строка 2272: | ||
** '''roomId''' – идентификатор типа номера. | ** '''roomId''' – идентификатор типа номера. | ||
** '''roomName''' – название типа номера. | ** '''roomName''' – название типа номера. | ||
| + | ** '''roomNameLat''' – латинское название типа номера. | ||
** '''roomTypeId''' – идентификатор категории номера. | ** '''roomTypeId''' – идентификатор категории номера. | ||
| − | ** '''roomTypeName''' – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view). | + | ** '''roomTypeName''' – название категории номера (примеры: стандарт, делюкс, семейный, супер делюкс с видом на океан). |
| + | ** '''roomTypeNameLat''' – латинское название категории номера (примеры: standard, deluxe, family, deluxe super ocean view). | ||
** '''htPlaceId''' – идентификатор типа размещения. | ** '''htPlaceId''' – идентификатор типа размещения. | ||
| − | ** '''htPlaceName''' – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF) | + | ** '''htPlaceName''' – название типа размещения в номере (примеры: 2 ВЗР + 1 РЕБЕНОК (2-12), 2 ВЗР + МЛАДЕНЕЦ). |
| + | ** '''htPlaceNameLat''' – латинское название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF) | ||
** '''mealId''' – идентификатор вида питания. | ** '''mealId''' – идентификатор вида питания. | ||
** '''mealName''' – название питания. | ** '''mealName''' – название питания. | ||
| Строка 2329: | Строка 2335: | ||
*** '''roomId''' – идентификатор типа номера | *** '''roomId''' – идентификатор типа номера | ||
*** '''roomName''' – название типа номера | *** '''roomName''' – название типа номера | ||
| + | ** '''roomNameLat''' – латинское название типа номера. | ||
*** '''roomTypeId''' – идентификатор категории номера | *** '''roomTypeId''' – идентификатор категории номера | ||
*** '''roomTypeName''' – название категории номера | *** '''roomTypeName''' – название категории номера | ||
| + | ** '''roomTypeNameLat''' – латинское название категории номера | ||
*** '''htPlaceId''' – идентификатор типа размещения | *** '''htPlaceId''' – идентификатор типа размещения | ||
*** '''htPlaceName''' – название типа размещения | *** '''htPlaceName''' – название типа размещения | ||
| + | ** '''htPlaceNameLat''' – латинское название типа размещения в номере | ||
*** '''mealId''' – идентификатор питания | *** '''mealId''' – идентификатор питания | ||
*** '''mealName''' – название питания | *** '''mealName''' – название питания | ||
| Строка 2387: | Строка 2396: | ||
<syntaxhighlight lang="java" enclose="div"> | <syntaxhighlight lang="java" enclose="div"> | ||
{ | { | ||
| − | + | "version": "1.08", | |
| − | + | "tours": [ | |
| − | + | { | |
| − | + | "offerId": 4, | |
| − | + | "tourId": 100009060, | |
| − | + | "tourName": "NEMO_проверка_БОЕВОЙ", | |
| − | + | "countryId": 960, | |
| − | + | "countryName": "Мальдивы", | |
| − | + | "resortId": 91, | |
| − | + | "resortName": "Мале", | |
| − | + | "areaId": -1, | |
| − | + | "areaName": null, | |
| − | + | "hotelId": 357, | |
| − | + | "hotelName": "Lhohifushi Resort", | |
| − | + | "hotelUrl": null, | |
| − | + | "hotelCategoryId": 59, | |
| − | + | "hotelCategoryName": "5*", | |
| − | + | "roomId": 1, | |
| − | + | "roomName": "Single", | |
| − | + | "roomNameLat": "Single", | |
| − | + | "roomTypeId": 27, | |
| − | + | "roomTypeName": "Grand Room", | |
| − | + | "roomTypeNameLat": "Grand Room", | |
| − | + | "htPlaceId": 1163, | |
| − | + | "htPlaceName": "Один взрослый", | |
| − | + | "htPlaceNameLat": null, | |
| − | + | "mealId": 1, | |
| − | + | "mealName": "Пансион", | |
| − | + | "tourDate": "01.06.2025", | |
| − | + | "tourEndDate": "07.06.2025", | |
| − | + | "nights": 7, | |
| − | + | "price": 1613.0, | |
| − | + | "currencyId": 1, | |
| − | + | "currencyName": "USD", | |
| − | + | "hotelIsInStop": 2, | |
| − | + | "ticketsIncluded": 1, | |
| − | + | "hasEconomTicketsDpt": 2, | |
| − | &adultCount= | + | "hasEconomTicketsRtn": 2, |
| − | + | "hasBusinessTicketsDpt": 0, | |
| − | + | "hasBusinessTicketsRtn": 0, | |
| − | + | "hasAnotherEconomTicketsDpt": 0, | |
| − | + | "hasAnotherEconomTicketsRtn": 0, | |
| − | + | "hasAnotherBusinessTicketsDpt": 0, | |
| − | + | "hasAnotherBusinessTicketsRtn": 0, | |
| − | + | "hasGDSFlight": 2, | |
| − | + | "hasGDSHotel": 1, | |
| − | + | "tourUrl": "http://supp-08.megatec.ru/TourSearchClient_MT15.9/Basket?departureCities=1&destination=1_960&tour=100009060&date=01.06.25&duration=7&hotelScheme=2_6_357_198_10768_0_7&adultCount=1&hotelQuota=7&aviaQuota=7&busTransferQuota=7&serviceDescriptions=1_0_0_1_552_89_1_960_91_304_11023_1_0,2_0_0_3_357_1137_1_960_91_198_10768_1_6,3_0_1_1_553_89_91_460_1_304_11023_7_0¤cy=USD", | |
| − | + | "spoUrl": null, | |
| − | + | "fewPlacesInHotel": null, | |
| − | + | "fewTicketsDptY": null, | |
| − | + | "fewTicketsRtnY": null, | |
| − | + | "fewTicketsDptB": null, | |
| − | + | "fewTicketsRtnB": null, | |
| − | + | "flags": 0, | |
| − | + | "description": "6 н., Мале, Lhohifushi Resort, Grand Room, FB", | |
| − | + | "receivingParty": "", | |
| − | + | "earlyBookingValidTill": "", | |
| − | + | "TourTypes": [ | |
| − | + | { | |
| − | + | "Key": 317, | |
| − | + | "Value": "1234" | |
| − | + | } | |
| − | + | ], | |
| − | + | "hotelScheme": { | |
| − | + | "templateId": 2, | |
| − | + | "durationInNight": 6, | |
| − | + | "code": 357, | |
| − | + | "packetKey": 198, | |
| − | + | "partnerKey": 10768, | |
| − | + | "gdsProviderId": null, | |
| − | + | "totalTourDuration": 7 | |
| − | + | }, | |
| − | + | "hotels": [ | |
| − | + | { | |
| − | + | "countryId": 960, | |
| − | + | "countryName": "Мальдивы", | |
| − | + | "resortId": 91, | |
| − | + | "resortName": "Мале", | |
| − | + | "areaId": -1, | |
| − | + | "areaName": null, | |
| − | + | "hotelId": 357, | |
| − | + | "hotelName": "Lhohifushi Resort", | |
| − | + | "hotelUrl": null, | |
| − | + | "hotelCategoryId": 59, | |
| − | + | "hotelCategoryName": "5*", | |
| − | + | "roomId": 1, | |
| − | + | "roomName": "Single", | |
| − | + | "roomNameLat": "Single", | |
| − | + | "roomTypeId": 27, | |
| − | + | "roomTypeName": "Grand Room", | |
| − | + | "roomTypeNameLat": "Grand Room", | |
| − | + | "htPlaceId": 1163, | |
| − | + | "htPlaceName": "Один взрослый", | |
| − | + | "htPlaceNameLat": null, | |
| − | + | "mealId": 1, | |
| − | + | "mealName": "Пансион", | |
| − | + | "checkIn": "01.06.2025", | |
| − | + | "checkOut": "07.06.2025", | |
| − | + | "checkInTime": null, | |
| − | + | "checkOutTime": null, | |
| − | + | "latitude": null, | |
| − | + | "longitude": null, | |
| − | + | "htNights": 6, | |
| − | + | "hotelIsInStop": 2, | |
| − | + | "isGDS": 0, | |
| − | + | "hotelScheme": { | |
| − | + | "templateId": 2, | |
| − | + | "durationInNight": 6, | |
| − | + | "code": 357, | |
| − | + | "packetKey": 198, | |
| − | + | "partnerKey": 10768, | |
| − | + | "gdsProviderId": null, | |
| − | + | "totalTourDuration": 7 | |
| − | + | } | |
| − | + | } | |
| − | + | ], | |
| − | + | "services": [] | |
| − | + | } | |
| − | + | ], | |
| − | + | "nodeId": 2147483647 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | "nodeId": | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Текущая версия на 12:09, 19 февраля 2026
Версия статьи от 19-02-2026.
|
Поддерживаемые версии ПК «Мастер-Тур»: |
Содержание
- 1 Введение
- 2 Установка
- 3 Swagger
- 4 Загрузка справочников
- 4.1 Выгрузка списка стран (GetCountries)
- 4.2 Выгрузка списка городов вылета (GetDepartCities)
- 4.3 Выгрузка списка городов (GetResorts)
- 4.4 Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4
- 4.5 Выгрузка актуальных дат заездов (GetDates) начиная с релиза 15.4
- 4.6 Выгрузка актуальных продолжительностей (GetDurations) начиная с релиза 15.4
- 4.7 Выгрузка программ туров (GetTourPrograms) начиная с релиза 15.4
- 4.8 Выгрузка списка курортов (GetAreas) начиная с релиза 15.3
- 4.9 Выгрузка списка категорий отелей (GetHotelCategories)
- 4.10 Выгрузка списка отелей (GetHotels)
- 4.11 Выгрузка описания и изображений отеля (GetHotelInfo) начиная с релиза 15.5
- 4.12 Выгрузка списка типов номеров (GetRooms) начиная с релиза 15.3
- 4.13 Выгрузка списка категорий номеров (GetRoomTypes) начиная с релиза 15.3
- 4.14 Выгрузка списка типов размещения (GetHtPlaces) начиная с релиза 15.3
- 4.15 Выгрузка видов питания (GetMeals)
- 4.16 Выгрузка списка валют (GetCurrencies)
- 4.17 Выгрузка курсов валют (GetCurrencyRates)
- 5 Поиск туров (GetTours)
- 6 Поиск всех цен по туру (GetToursAllPrices) начиная с релиза 15.3
- 7 Поиск минимальных цен по каждому варианту питания (GetToursAllPricesPansion) начиная с релиза 15.9
- 8 Актуализация тура (ActualizeTour)
- 9 Пример работы с методами
- 10 Приложения
Введение
Данный web-сервис разработан для отдачи цен во внешние поисковые системы и выполняет следующие задачи:
- выгружает справочники (города вылета, страны, города, отели и т.д.)
- осуществляет поиск цен с указанныеми параметрами
- актуализирует выбранный вариант тура по его идентификатору
Выдача результатов осуществляется в формате JSON
Установка
Для работы с web-сервисом необходимо на отдающей стороне установить службу поиска.
После установки web-сервис будет доступен по адресу http://значение настройки "serviceAddress" в TourSearchOwin/searchApi?action="название метода" (пример: http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries)
Для поддержки систем с большой нагрузкой можно использовать сторонние "балансировщики нагрузки". Пример настройки балансировщика HaProxy.
Swagger
Работу методов можно проверить с помощью Swagger по пути: http://localhost:9000/TourSearchOwin/SwaggerUI
Загрузка справочников
Выгрузка списка стран (GetCountries)
Метод производит выгрузку всех направлений туроператора.
- Формат запроса:
- ?action=GetCountries
- Принимаемые параметры:
- id – идентификатор страны (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор страны
- name – название страны (рус)
- lname – название страны (анг)
|
Вызов метода GetCountries http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries
Возвращаемый результат метода GetCountries (в формате JSON) {
"version": "1.08",
"countries": [
{
"id": 97,
"name": "Тунис",
"lname": "Tunisia"
},
{
"id": 90,
"name": "Австрия",
"lname": "Австрия"
},
{
"id": 30,
"name": "Франция",
"lname": "France"
}
]
}
|
Выгрузка списка городов вылета (GetDepartCities)
Метод производит выгрузку всех доступных городов вылета, а также содержит данные о том, какие направления доступны из каждого города вылета.
- Формат запроса:
- ?action=GetDepartCities
- Принимаемые параметры:
- id – идентификатор города вылета (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
- Возвращаемый результат:
- id – идентификатор города
- name – название города (рус)
- lname – название города (анг)
- countriesTo – идентификаторы стран, которые присутствуют в данном городе вылета
- countryId – идентификатор страны города вылета
- countryName – название страны города вылета
- countryCode – код страны города вылета
|
Вызов метода GetDepartCities http://localhost:9000/TourSearchOwin/searchApi?action=GetDepartCities
Возвращаемый результат метода GetDepartCities (в формате JSON) {
"version": "1.08",
"departCities": [
{
"id": -1,
"name": "Без перелета",
"lname": "No flights",
"countriesTo": [
97,
90
],
"countryId": -1,
"countryName": "",
"countryCode": ""
},
{
"id": 1,
"name": "Москва",
"lname": "Moscow",
"countriesTo": [
90,
30
],
"countryId": 460,
"countryName": "Россия",
"countryCode": "RUS"
}
]
}
|
Выгрузка списка городов (GetResorts)
Метод возвращает список всех доступных городов.
- Формат запроса:
- ?action=GetResorts
- Принимаемые параметры:
- id – идентификатор города (опциональный, пер