Мастер-Тур(15):API для отдачи цен в поисковые системы — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[непроверенная версия][досмотренная версия]
(Поиск туров (GetTours))
(Установка)
 
(не показаны 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===
+
===Выгрузка списка категорий номеров (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",
+
    "version": "1.08",
"tours": [{
+
    "tours": [
"offerId": 45,
+
{
"tourId": 100000004,
+
            "offerId": 4,
"tourName": "Общая проверка системы",
+
            "tourId": 100009060,
"countryId": 90,
+
            "tourName": "NEMO_проверка_БОЕВОЙ",
"countryName": "Австрия",
+
            "countryId": 960,
"resortId": 35,
+
            "countryName": "Мальдивы",
"resortName": "Вена",
+
            "resortId": 91,
"areaId": 1,
+
            "resortName": "Мале",
"areaName": "Каринтия",
+
            "areaId": -1,
"hotelId": 705,
+
            "areaName": null,
"hotelName": "Continental",
+
            "hotelId": 357,
"hotelUrl": "www.tophotels.com/NewHotel",
+
            "hotelName": "Lhohifushi Resort",
"hotelCategoryId": 70,
+
            "hotelUrl": null,
"hotelCategoryName": "Condotel",
+
            "hotelCategoryId": 59,
"roomId": 165,
+
            "hotelCategoryName": "5*",
"roomName": "DBL",
+
            "roomId": 1,
"roomTypeId": 1939,
+
            "roomName": "Single",
"roomTypeName": "Sea View",
+
            "roomNameLat": "Single",
"htPlaceId": 1238,
+
            "roomTypeId": 27,
"htPlaceName": "2 ADL",
+
            "roomTypeName": "Grand Room",
"mealId": 62,
+
            "roomTypeNameLat": "Grand Room",
"mealName": "BB",
+
            "htPlaceId": 1163,
"tourDate": "10.11.2018",
+
            "htPlaceName": "Один взрослый",
"tourEndDate": "21.11.2018",
+
            "htPlaceNameLat": null,
"nights": 12,
+
            "mealId": 1,
"price": 15,
+
            "mealName": "Пансион",
"currencyId": 1,
+
            "tourDate": "01.06.2025",
"currencyName": "$",
+
            "tourEndDate": "07.06.2025",
"hotelIsInStop": 2,
+
            "nights": 7,
"ticketsIncluded": 1,
+
            "price": 1613.0,
"hasEconomTicketsDpt": 2,
+
            "currencyId": 1,
"hasEconomTicketsRtn": 2,
+
            "currencyName": "USD",
"hasBusinessTicketsDpt": 2,
+
            "hotelIsInStop": 2,
"hasBusinessTicketsRtn": 2,
+
            "ticketsIncluded": 1,
"tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760_0
+
            "hasEconomTicketsDpt": 2,
&adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0,
+
            "hasEconomTicketsRtn": 2,
1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0&currency=USD",
+
            "hasBusinessTicketsDpt": 0,
                "hasGDSFlight ": 0,
+
            "hasBusinessTicketsRtn": 0,
                "hasGDSHotel ": 0,
+
            "hasAnotherEconomTicketsDpt": 0,
"spoUrl": "www.megatec.ru",
+
            "hasAnotherEconomTicketsRtn": 0,
"fewPlacesInHotel": null,
+
            "hasAnotherBusinessTicketsDpt": 0,
"fewTicketsDptY": null,
+
            "hasAnotherBusinessTicketsRtn": 0,
"fewTicketsRtnY": null,
+
            "hasGDSFlight": 2,
"fewTicketsDptB": null,
+
            "hasGDSHotel": 1,
"fewTicketsRtnB": null,
+
            "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&currency=USD",
"flags": 0,
+
            "spoUrl": null,
"description": "10 н., Вена, Continental, 1 bedroom Sea View, BB",
+
            "fewPlacesInHotel": null,
"receivingParty": "",
+
            "fewTicketsDptY": null,
"earlyBookingValidTill": "",
+
            "fewTicketsRtnY": null,
"TourTypes": [{
+
            "fewTicketsDptB": null,
"Key": 2,
+
            "fewTicketsRtnB": null,
"Value": "Стандартный тур"
+
            "flags": 0,
}],
+
            "description": "6 н., Мале, Lhohifushi Resort, Grand Room, FB",
"hotelScheme": {
+
            "receivingParty": "",
"templateId": 1,
+
            "earlyBookingValidTill": "",
"durationInNight": 10,
+
            "TourTypes": [
"code": 705,
+
                {
"packetKey": 779,
+
                    "Key": 317,
"partnerKey": 12667,
+
                    "Value": "1234"
                        "gdsProviderId": 0,
+
                }
                        "totalTourDuration": 11
+
            ],
}
+
            "hotelScheme": {
"hotels": [{
+
                "templateId": 2,
"countryId": 90,
+
                "durationInNight": 6,
"countryName": "Австрия",
+
                "code": 357,
"resortId": 35,
+
                "packetKey": 198,
"resortName": "Вена",
+
                "partnerKey": 10768,
"areaId": 1,
+
                "gdsProviderId": null,
"areaName": "Каринтия",
+
                "totalTourDuration": 7
"hotelId": 705,
+
            },
"hotelName": "Continental",
+
            "hotels": [
"hotelUrl": "www.tophotels.com/NewHotel",
+
                {
"hotelCategoryId": 70,
+
                    "countryId": 960,
"hotelCategoryName": "Condotel",
+
                    "countryName": "Мальдивы",
"roomId": 165,
+
                    "resortId": 91,
"roomName": "DBL",
+
                    "resortName": "Мале",
"roomTypeId": 1939,
+
                    "areaId": -1,
"roomTypeName": "Sea View",
+
                    "areaName": null,
"htPlaceId": 1238,
+
                    "hotelId": 357,
"htPlaceName": "2 ADL",
+
                    "hotelName": "Lhohifushi Resort",
"mealId": 62,
+
                    "hotelUrl": null,
"mealName": "BB",
+
                    "hotelCategoryId": 59,
"checkIn": "2018-11-10T00:00:00",
+
                    "hotelCategoryName": "5*",
"checkOut": "2018-11-16T00:00:00",
+
                    "roomId": 1,
                        "checkInTime": null,
+
                    "roomName": "Single",
                        "checkOutTime": null,
+
                    "roomNameLat": "Single",
                        "latitude": null,
+
                    "roomTypeId": 27,
                        "longitude": null,
+
                    "roomTypeName": "Grand Room",
"htNights": 6,
+
                    "roomTypeNameLat": "Grand Room",
"hotelIsInStop": 2,
+
                    "htPlaceId": 1163,
                        "isGDS": 0,
+
                    "htPlaceName": "Один взрослый",
"hotelScheme": {
+
                    "htPlaceNameLat": null,
"templateId": 4,
+
                    "mealId": 1,
"durationInNight": 6,
+
                    "mealName": "Пансион",
"code": 705,
+
                    "checkIn": "01.06.2025",
"packetKey": 1083,
+
                    "checkOut": "07.06.2025",
"partnerKey": 12695,
+
                    "checkInTime": null,
                                "gdsProviderId" 0,
+
                    "checkOutTime": null,
                                "totalTourDuration": 7
+
                    "latitude": null,
}
+
                    "longitude": null,
},
+
                    "htNights": 6,
{
+
                    "hotelIsInStop": 2,
 
+
                    "isGDS": 0,
"countryId": 90,
+
                    "hotelScheme": {
"countryName": "Австрия",
+
                        "templateId": 2,
"resortId": 35,
+
                        "durationInNight": 6,
"resortName": "Вена",
+
                        "code": 357,
"areaId": 1,
+
                        "packetKey": 198,
"areaName": "Каринтия",
+
                        "partnerKey": 10768,
"hotelId": 178,
+
                        "gdsProviderId": null,
"hotelName": "Ananas",
+
                        "totalTourDuration": 7
"hotelUrl": "www.tophotels.com/NewHotelAnanas",
+
                    }
"hotelCategoryId": 63,
+
                }
"hotelCategoryName": "5+",
+
            ],
"roomId": 165,
+
            "services": []
"roomName": "DBL",
+
        }
"roomTypeId": 1939,
+
    ],
"roomTypeName": "Sea View",
+
    "nodeId": 2147483647
"htPlaceId": 1238,
 
"htPlaceName": "2 ADL",
 
"mealId": 62,
 
"mealName": "BB",
 
"checkIn": "2018-11-16T00:00:00",
 
"checkOut": "2018-11-20T00:00:00",
 
                        "checkInTime": null,
 
                        "checkOutTime": null,
 
                        "latitude": null,
 
                        "longitude": null,
 
"htNights": 4,
 
"hotelIsInStop": 2,
 
                        "isGDS": 0,
 
"hotelScheme": {
 
"templateId": 3,
 
"durationInNight": 4,
 
"code": 178,
 
"packetKey": 1085,
 
"partnerKey": 12796,
 
                                "gdsProviderId" 0,
 
                                "totalTourDuration": 5
 
}
 
}]
 
},
 
"nodeId": 1
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Текущая версия на 12:09, 19 февраля 2026

Версия статьи от 19-02-2026.

Поддерживаемые версии ПК «Мастер-Тур»:
Начиная с 15 версии


Содержание

Введение

Данный 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 – идентификатор города (опциональный, пер