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

Материал из Megatec
Перейти к: навигация, поиск
[непроверенная версия][досмотренная версия]
(Выгрузка настроек службы поиска (Settings))
(Установка)
 
(не показано 205 промежуточных версий 9 участников)
Строка 12: Строка 12:
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 +
 +
==Swagger==
 +
Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI''
  
 
==Список методов==
 
==Список методов==
Строка 17: Строка 20:
 
Последовательность вызова методов сервиса<br />
 
Последовательность вызова методов сервиса<br />
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 +
 +
===Информация о состоянии службы поиска (statusCache)===
 +
Метод выводит информацию о состоянии службы поиска при ее загрузке.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/statusCache?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена)
 +
** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена''
 +
** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название)
 +
** '''Iteration''' – порядковый номер считаемого справочника кеша
 +
** '''CacheCount''' – общее количество кешей
 +
** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока:
 +
*** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД''
 +
*** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234''
 +
*** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Settings
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/statusCache
 +
</syntaxhighlight>
 +
Возвращаемый результат метода statusCache (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ToursSearchView",
 +
    "Iteration": 10,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Загрузка кэшей из БД"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "HotelScheme",
 +
    "Iteration": 109,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "tours load: 956 / 1234"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ActualFilters",
 +
    "Iteration": 112,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Actual filter processed: 783012 / 3865687"
 +
}
 +
{
 +
    "Initialized": true,
 +
    "Status": "Инициализация кэшей завершена",
 +
    "CacheName": null,
 +
    "Iteration": 0,
 +
    "CacheCount": 0,
 +
    "ProcessMessage": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 
===Авторизация (Token)===
 
===Авторизация (Token)===
Строка 75: Строка 140:
 
** нет принимаемых параметров
 
** нет принимаемых параметров
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
+
** '''ChildAgesSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальный возраст ребенка]] (массив возрастов, при которых турист будет считаться ребенком
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Панель администрирования#Общие настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
+
** '''DurationSetting''' – регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки|максимальная продолжительность тура]] (массив продолжительностей, доступных в фильтрах для поиска)
 
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
 
** '''RoundServiceSetting''' – признак округления цены (количество знаков после запятой)
 
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
 
** '''CacheReady''' – статус готовности службы поиска к работе (true/false)
Строка 105: Строка 170:
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 
+
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 
+
** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 
+
** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 
+
** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
Строка 179: Строка 247:
 
   "MaxSearchDatesCountClient": 10,
 
   "MaxSearchDatesCountClient": 10,
 
   "MaxDurationsCountClient": 14
 
   "MaxDurationsCountClient": 14
 +
  "UseHotelCategoryGlobalCodeInDopFilter": false
 +
  "UsePansionGlobalCodeInDopFilter": false
 +
  "CheckTouristDataInBasket": true
 +
  "SimpleRegistration": false
 +
  "ShowHotelImagesInSearch": true
 +
  "CacheReadyMessage": "Кеш инициализирован"
 +
    "nodeId": 2147483647,
 +
    "FullPaymentPeriod": null,
 +
    "FullPaymentCheckin": 5,
 +
    "PrePaymentPeriod": null,
 +
    "PrePaymentCheckin": 10,
 +
    "PrePaymentPercent": 50.0,
 +
    "PrePaymentCu": null
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 184: Строка 265:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка валют (Currency)===
+
===Выгрузка списка валют в онлайне (Currency)===
 
Метод возвращает список используемых валют.
 
Метод возвращает список используемых валют.
 
* Формат запроса:
 
* Формат запроса:
Строка 196: Строка 277:
 
** '''IsNational''' – признак валюты «Национальная»
 
** '''IsNational''' – признак валюты «Национальная»
 
** '''IsoCode''' – ISO код валюты
 
** '''IsoCode''' – ISO код валюты
 +
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
 +
** '''Symbol''' – символ валюты (обрабатывается с 15.7)
 
** '''Key''' – идентификатор валюты
 
** '''Key''' – идентификатор валюты
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
+
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 215: Строка 298:
 
       "IsNational": false,
 
       "IsNational": false,
 
       "IsoCode": "EUR",
 
       "IsoCode": "EUR",
       "Key": 2,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "€",
 +
       "Key": 2
 
   },
 
   },
 
       {
 
       {
Строка 224: Строка 308:
 
       "IsNational": true,
 
       "IsNational": true,
 
       "IsoCode": "RUR",
 
       "IsoCode": "RUR",
       "Key": 14,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "₽",
 +
       "Key": 14
 
   },
 
   },
 
       {
 
       {
Строка 233: Строка 318:
 
       "IsNational": false,
 
       "IsNational": false,
 
       "IsoCode": "USD",
 
       "IsoCode": "USD",
       "Key": 1,
+
       "IsShowInSearch": true,
       "IsShowInSearch": true
+
      "Symbol": "$",
 +
       "Key": 1
 
   }
 
   }
 
]
 
]
Строка 241: Строка 327:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка квотируемых услуг системы (QuotedServices)===
+
 
Метод производит выгрузку услуг с признаком «Квотируемая»
+
===Выгрузка курсов валют (CurrencyRates) начиная с 15.7===
 +
Полный аналог метода [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Выгрузка курсов валют (GetCurrencyRates)|Выгрузка курсов валют (GetCurrencyRates)]]<br />
 +
Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком ''Отображать в онлайне''
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/QuotedServices
+
** GET .../TourSearchOwin/CurrencyRates
 
* Принимаемые параметры:
 
* Принимаемые параметры:
** нет принимаемых параметров
+
** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9).
 +
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор услуги
+
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
** '''Code''' – код услуги
+
** '''currencyId''' – идентификатор валюты, курс которой приводится
** '''Name''' – наименование услуги (русский)
+
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
** '''NameLat''' – наименование услуги (английский)
+
** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты
** '''IsDuration''' – наличие продолжительности у услуги
+
 
** '''IsCity''' – наличие города у услуги
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode1]] у услуги
+
<div class="mw-collapsible-content">
** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode2]] у услуги
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
** '''Quoted''' – признак квотируемости услуги
+
Вызов метода CurrencyRates
** '''CheckGeoPoint''' – наличие геоточек у услуги
+
<syntaxhighlight lang="java" enclose="div">
** '''IsRoute''' – признак маршрутной услуги
+
http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
+
</syntaxhighlight>
** '''Control''' – идентификатор статуса услуги
+
Возвращаемый результат метода CurrencyRates (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.429200,
 +
        "Date": "18.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 101.505700,
 +
        "Date": "18.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.671200,
 +
        "Date": "19.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 102.039000,
 +
        "Date": "19.09.2024"
 +
    }
 +
]
 +
 
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка списка всех валют (getAllCurrencies)===
 +
Метод возвращает список всех валют.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/AllCurencies/getAllCurrencies
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Code''' – код валюты
 +
** '''Name''' – наименование валюты
 +
** '''IsMain''' – признак валюты «Главная»
 +
** '''IsNational''' – признак валюты «Национальная»
 +
** '''IsoCode''' – ISO код валюты
 +
** '''IsShowInSearch''' – признак показывать ли валюту в поиске
 +
** '''Symbol''' – символ валюты (обрабатывается с 15.7)
 +
** '''Key''' – идентификатор валюты
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода QuotedServices
+
Вызов метода getAllCurrencies
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/QuotedServices
+
GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода QuotedServices (в формате JSON)
+
Возвращаемый результат метода getAllCurrencies (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Key": 1,
+
       "Code": "EU",
       "Code": "А_П",
+
      "Name": "Euro",
       "Name": "Авиаперелет",
+
       "IsMain": false,
       "NameLat": "Flight",
+
      "IsNational": false,
       "IsDuration": false,
+
       "IsoCode": "EUR",
       "IsCity": true,
+
      "IsShowInSearch": true,
       "IsSubCode1": true,
+
       "Symbol": "",
       "IsSubCode2": false,
+
       "Key": 2
       "Quoted": true,
+
  },
       "CheckGeoPoint": true,
+
      {
       "IsRoute": true,
+
       "Code": "рб",
       "IsPartnerBasedOn": false,
+
       "Name": "Рубль",
       "Control": 1
+
       "IsMain": false,
 +
       "IsNational": true,
 +
       "IsoCode": "RUR",
 +
       "IsShowInSearch": true,
 +
       "Symbol": "₽",
 +
       "Key": 14
 
   },
 
   },
 
       {
 
       {
       "Key": 3,
+
       "Code": "$",
       "Code": "HOTEL",
+
       "Name": "US Dollar",
       "Name": "Отель/Круиз",
+
       "IsMain": true,
       "NameLat": "Hotel/Cruise",
+
      "IsNational": false,
       "IsDuration": true,
+
       "IsoCode": "USD",
       "IsCity": true,
+
       "IsShowInSearch": true,
       "IsSubCode1": true,
+
       "Symbol": "$",
      "IsSubCode2": true,
+
       "Key": 1
      "Quoted": true,
+
  },
      "CheckGeoPoint": true,
+
  {
      "IsRoute": true,
+
      "Code": "гр",
      "IsPartnerBasedOn": false,
+
      "Name": "Гривна",
      "Control": 1
+
      "IsMain": false,
 +
      "IsNational": false,
 +
      "IsoCode": "UAH",
 +
      "IsShowInSearch": true,
 +
      "Symbol": "₴",
 +
      "Key": 6
 
   }
 
   }
 
]
 
]
Строка 307: Строка 455:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка городов отправления (departureCities)===
+
 
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
+
===Получение сконвертированных цен (convertFilterPrice)===
 +
Метод возвращает сконвертированные цен для допфильтра ''Цена'' (используется в canary)
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/departureCities?
+
** GET .../TourSearchOwin/AllCurencies/convertFilterPrice
* Принимаемые параметры:
+
* Принимаемые параметры ( '''*''' – обязательный):
** нет принимаемых параметров
+
** '''SourceRateKey *''' – ключ исходной валюты конвертации
 +
** '''TargetRateKey *''' – ключ валюты, в которую будет произведена конвертация
 +
** '''MinPrice *''' – значение минимальной цены, которое будет участвовать в конвертации
 +
** '''MaxPrice *''' – значение максимальной цены, которое будет участвовать в конвертации
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор города
+
** '''m_Item1''' – сконвертированная минимальная цена
** '''Name''' – название города
+
** '''m_Item12''' – сконвертированная максимальная цена
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода departureCities
+
Вызов метода convertFilterPrice
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/departureCities
+
GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода departureCities (в формате JSON)
+
Возвращаемый результат метода convertFilterPrice (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
      {
+
    "m_Item1": 12.035142616440004814057046576,
      "Key": -1,
+
    "m_Item2": 240.70285232880009628114093152
      "Name": "Без перелета"
+
}
  },
+
</syntaxhighlight>
      {
 
      "Key": 312,
 
      "Name": "Астрахань"
 
  },
 
      {
 
      "Key": 1,
 
      "Name": "Москва"
 
  }
 
]
 
</syntaxhighlight>
 
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка стран (Destination)===
+
===Выгрузка квотируемых услуг системы (QuotedServices)===
Метод производит выгрузку всех доступных направлений туроператора.
+
Метод производит выгрузку услуг с признаком «Квотируемая»
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/Destination?
+
** GET .../TourSearchOwin/QuotedServices
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
+
** нет принимаемых параметров
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Name''' – название страны
+
** '''Key''' – идентификатор услуги
** '''Key''' – идентификатор страны
+
** '''Code''' – код услуги
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Name''' – наименование услуги (русский)
 +
** '''NameLat''' – наименование услуги (английский)
 +
** '''IsDuration''' – наличие продолжительности у услуги
 +
** '''IsCity''' – наличие города у услуги
 +
** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode1]] у услуги
 +
** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|SubCode2]] у услуги
 +
** '''Quoted''' – признак квотируемости услуги
 +
** '''CheckGeoPoint''' – наличие геоточек у услуги
 +
** '''IsRoute''' – признак маршрутной услуги
 +
** '''IsPartnerBasedOn''' – признак сопоставления партнера услуги в зависимости от отеля
 +
** '''Control''' – идентификатор статуса услуги
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода Destination
+
Вызов метода QuotedServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
+
GET http://localhost:9000/TourSearchOwin/QuotedServices
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Destination (в формате JSON)
+
Возвращаемый результат метода QuotedServices (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Name": "Болгария",
+
      "Key": 1,
       "Key": 359,
+
      "Code": "А_П",
       "DestinationType": 1
+
       "Name": "Авиаперелет",
  },
+
      "NameLat": "Flight",
       {
+
       "IsDuration": false,
       "Name": "Индия",
+
       "IsCity": true,
       "Key": 26,
+
      "IsSubCode1": true,
       "DestinationType": 1
+
       "IsSubCode2": false,
 +
       "Quoted": true,
 +
      "CheckGeoPoint": true,
 +
      "IsRoute": true,
 +
       "IsPartnerBasedOn": false,
 +
       "Control": 1
 
   },
 
   },
 
       {
 
       {
       "Name": "Финляндия",
+
      "Key": 3,
       "Key": 64,
+
      "Code": "HOTEL",
       "DestinationType": 1
+
       "Name": "Отель/Круиз",
 +
      "NameLat": "Hotel/Cruise",
 +
      "IsDuration": true,
 +
      "IsCity": true,
 +
      "IsSubCode1": true,
 +
       "IsSubCode2": true,
 +
      "Quoted": true,
 +
      "CheckGeoPoint": true,
 +
      "IsRoute": true,
 +
      "IsPartnerBasedOn": false,
 +
       "Control": 1
 
   }
 
   }
 
]
 
]
Строка 386: Строка 552:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка городов (ActualizeCities)===
+
===Выгрузка актуальных городов отправления (departureCities)===
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
+
Метод производит выгрузку всех доступных городов отправления для поискового запроса.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/ActualizeCities?
+
** GET .../TourSearchOwin/departureCities?  
* Принимаемые параметры ( '''*''' – обязательный):
+
* Принимаемые параметры:
** '''cityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** нет принимаемых параметров
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Key''' – идентификатор города
 
** '''Key''' – идентификатор города
Строка 401: Строка 565:
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода ActualizeCities
+
Вызов метода departureCities
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90
+
GET http://localhost:9000/TourSearchOwin/departureCities
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода ActualizeCities (в формате JSON)
+
Возвращаемый результат метода departureCities (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
 
       "Key": -1,
 
       "Key": -1,
       "Name": "Все"
+
       "Name": "Без перелета"
 
   },
 
   },
 
       {
 
       {
       "Key": 35,
+
       "Key": 312,
       "Name": "Вена"
+
       "Name": "Астрахань"
 
   },
 
   },
 
       {
 
       {
       "Key": 440,
+
       "Key": 1,
       "Name": "Зельден"
+
       "Name": "Москва"
 
   }
 
   }
 
]
 
]
Строка 425: Строка 589:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка типов туров (ActualizeTourType)===
+
===Выгрузка актуальных стран (Destination)===
Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.
+
Метод производит выгрузку всех доступных направлений туроператора.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/ActualizeTourType?
+
** GET .../TourSearchOwin/Destination?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – идентификатор типа тура
+
** '''Name''' – название страны
** '''Name''' – название типа тура
+
** '''Key''' – идентификатор страны
** '''ParentId''' – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается ''null'')
+
** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
 +
** '''IsExist''' – не используется
 +
** '''Data''' – массив данных для контекстного поиска
 +
*** '''CityKey''' – код города
 +
*** '''CityName''' – Название
 +
*** '''HotelKey''' – код отеля
 +
*** '''HotelName''' – название отеля
 +
*** '''ResortKey''' – код курорта
 +
*** '''ResortName''' – название курорта
 +
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода ActualizeTourType
+
Вызов метода Destination
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Type=1&destinationCity=-1
+
 
 +
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода ActualizeTourType (в формате JSON)
+
Возвращаемый результат метода Destination (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
[
 
       {
 
       {
       "Key": -1,
+
       "Data": null,
       "Name": "Все",
+
      "DestinationType": 1,
       "ParentId": null
+
       "IsExist": false,
 +
      "Key": 90,
 +
       "Name": "Австрия"
 +
   
 +
   
 
   },
 
   },
 
       {
 
       {
       "Key": 2,
+
       "Data": null,
       "Name": "Стандартный тур",
+
      "DestinationType": 1,
       "ParentId": null
+
       "IsExist": false,
 +
      "Key": 53,
 +
       "Name": "Тайланд"
 +
     
 +
     
 
   },
 
   },
 
       {
 
       {
       "Key": 16,
+
       "Data": null,
       "Name": "Экскурсионный тур",
+
      "DestinationType": 1,
       "ParentId": 35
+
       "IsExist": false,
 +
      "Key": 460,
 +
       "Name": "Россия"
 +
     
 +
     
 
   }
 
   }
 +
]
 +
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
{
 +
  "Name": "Австрия",
 +
  "Key": 90,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 178,
 +
          "HotelName": "Ananas, 5+++*",
 +
          "ResortKey": 232,
 +
          "ResortName": "Малина"
 +
        },
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 20748,
 +
          "HotelName": "Dev, 1-4*Boutique",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
        },
 +
      ],
 +
}
 +
{
 +
  "Name": "Тайланд",
 +
  "Key": 53,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 415,
 +
            "CityName": "Пхукет",
 +
            "HotelKey": 5263,
 +
            "HotelName": "7Q Hotel, HV",
 +
            "ResortKey": 123,
 +
            "ResortName": "Пхукет"
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "Россия",
 +
  "Key": 460,
 +
  "DestinationType": 1,
 +
  "IsExist": false,