XML - результаты поиска/Поиск туров — различия между версиями
Материал из TourClient - Руководство пользователя
Jeka (обсуждение | вклад) |
Jeka (обсуждение | вклад) (→Алгоритм организации поиска) |
||
Строка 1: | Строка 1: | ||
== Алгоритм организации поиска == | == Алгоритм организации поиска == | ||
− | [http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg <img src="http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg" width=200px>] | + | [http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg <img src="http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg" width="200px" style="float: right">] |
# Приложение формирует поисковый запрос и обращается к сервису '''поиска туров'''. | # Приложение формирует поисковый запрос и обращается к сервису '''поиска туров'''. | ||
Строка 15: | Строка 15: | ||
* В случае если поиск с заданными параметрами уже завершен, сервис сразу вернет результат из кеша поиска. | * В случае если поиск с заданными параметрами уже завершен, сервис сразу вернет результат из кеша поиска. | ||
* На данный момент время жизни кеша 15 минут. | * На данный момент время жизни кеша 15 минут. | ||
− | |||
− | |||
== Сервис Поиск туров == | == Сервис Поиск туров == |
Версия 23:16, 7 июля 2014
Содержание
Алгоритм организации поиска
- Приложение формирует поисковый запрос и обращается к сервису поиска туров.
- Сервис начинает новый поиск.
- Приложение ожидает ответа от сервиса.
- Сервис возвращает данные по запрошенной странице.
- Сервис продолжает поиск до нахождения всех данных для запроса.
Особенности работы
- В случае если поиск с заданными параметрами уже происходит в текущий момент, сервис будет использовать его результаты. Если данные для запрашиваемой страницы уже получены, она будет возвращена сразу. Если нет, сервис подождет пока поступит необходимое количество данных.
- В случае если поиск с заданными параметрами уже завершен, сервис сразу вернет результат из кеша поиска.
- На данный момент время жизни кеша 15 минут.
Сервис Поиск туров
Работа с сервисом осуществляется путем отправки POST запросов на адрес ... .
Параметр request должен содержать xml запроса.
В результате сервис вернет ответ в формате xml.
Запрос к сервису
<?xml version="1.0" encoding="UTF-8"?> <root> <TourSearchRequest> <dataOffset>0</dataOffset> <dataLimit>50</dataLimit> <seatStatus>3</seatStatus> <cityId>1000</cityId> <countryId>12</countryId> <roomSizeId>14</roomSizeId> <adults>2</adults> <children>0</children> <childAge1>0</childAge1> <childAge2>0</childAge2> <durationFrom>7</durationFrom> <durationTill>14</durationTill> <departureFrom>2014-07-25</departureFrom> <departureTill>2014-08-10</departureTill> <ticket>1</ticket> <priceFrom>500</priceFrom> <priceTill>50000</priceTill> <currency>3</currency> <operatorIds> <id>111</id> <id>222</id> <id>333</id> </operatorIds> <resortIds> <id>111</id> <id>222</id> <id>333</id> </resortIds> <resortPlaceIds> <id>111</id> <id>222</id> <id>333</id> </resortPlaceIds> <allocCatId>7</allocCatId> <allocRate>3.56</allocRate> <allocationIds> <id>111</id> <id>222</id> <id>333</id> </allocationIds> <mealIds> <id>111</id> <id>222</id> <id>333</id> </mealIds> <roomViewIds> <id>111</id> <id>222</id> <id>333</id> </roomViewIds> <roomTypeIds> <id>111</id> <id>222</id> <id>333</id> </roomTypeIds> </TourSearchRequest> <TourExtraEntities> <entity>OnlineSeatsState</entity> <entity>ExtraCharges</entity> <entity>City</entity> <entity>Country</entity> <entity>RoomSize</entity> <entity>Resort</entity> <entity>ResortPlace</entity> <entity>Allocation</entity> <entity>AllocCat</entity> <entity>Meal</entity> <entity>RoomType</entity> <entity>RoomView</entity> </TourExtraEntities> </root>
Ответ сервиса
Сервис возвращает ответ, содержащий массив объектов Тур (Tours) и объект Статус поиска (SearchStatus)
<?xml version="1.0" encoding="UTF-8"?> <root> <Tours> <Tour>...</Tour> <Tour>...</Tour> <Tour>...</Tour> ... </Tours> <SearchStatus> ... </SearchStatus> </root>
Сервис Статус поиска
Работа с сервисом осуществляется путем отправки POST запросов на адрес ... .
Параметр request должен содержать xml запроса.
В результате сервис вернет ответ в формате xml.
Запрос к сервису
<?xml version="1.0" encoding="UTF-8"?> <root> <SearchStatusRequest> <key>df1b446a09606710d301153157fc862b</key> <!-- Уникальный ключ поискового запроса. --> </SearchStatusRequest> </root>
Ответ сервиса
Сервис возвращает ответ объект Статус поиска (SearchStatus)
Сервис возвращает ответ, содержащий массив объектов Тур (Tours) и объект Статус поиска (SearchStatus)
<?xml version="1.0" encoding="UTF-8"?> <root> <SearchStatus> ... </SearchStatus> </root>
Описание объектов
Объект Статус поиска
<SearchStatus> <key>df1b446a09606710d301153157fc862b</key> <!-- Уникальный ключ поискового запроса. --> <inProgress>true</inProgress> <!-- Параметр показывающий завершен ли поиск. --> <toursCount>450</toursCount> <!-- Количество найденных (на момент получения статуса) туров в рамках данного поискового запроса. --> <exactCount>false</exactCount> <!-- Параметр показывающий что количество найденных туров окончательное, и при изменении параметров offset и limit изменяться не будет. --> </SearchStatus>
Объект Тур
<Tour> <id>3145968261@511</id> <!-- Уникальный идентификатор тура. --> <operatorId>308</operatorId> <!-- Идентификатор туроператора. --> <cityId>1000</cityId> <!-- Идентификатор города вылета. --> <countryId>12</countryId> <!-- Идентификатор страны прилета. --> <roomSizeId>14</roomSizeId> <!-- Идентификатор размещения (DBL,SNGL,TRL...). --> <departure>2014-07-10</departure> <!-- Дата вылета. --> <arrival>2014-07-17</arrival> <!-- Дата прилета. --> <duration>7</duration> <!-- Продолжительность (количество ночей в отеле). --> <ticket>1</ticket> <!-- Дата прилета. --> <!-- 0 - без билета, 1 - авиаперелет, 2 - поезд, 3 - автобус, 4 - паром, 5 - автомобиль --> <directFlight>false</directFlight> <!-- Прямой перелет. true - известно что перелет прямой. --> <!-- false - известно что перелет с пересадкой. Если не опеределен, то не известно. --> <price>18000</price> <!-- Стоимость тура в валюте запроса. --> <currency>2</currency> <!-- Идентификатор валюты запроса. --> <priceIsApprox>true</priceIsApprox> <!-- Параметр показывает что цена была пересчитана по кросс-курсу и может содержать погрешность пересчета --> <!-- (возникает в случаях когда валюта запроса отлична от валюты предложения и оператор не имеет кросскурса для пересчета). --> <priceOrig>500</priceOrig> <!-- Стоимость тура в валюте туроператора. --> <currencyOrig>1</currencyOrig> <!-- Стоимость тура в валюты туроператора. --> <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH --> <prevPriceOrig>0</prevPriceOrig> <!-- Предыдущая стоимость тура (в валюте туроператора). --> <priceDiffPercent>0</priceDiffPercent> <!-- Стоимость тура в валюте запроса. --> <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH --> <ch1From>0</ch1From> <!-- Возраст 1-го ребенка ОТ (для размещений с детьми) --> <ch1Till>0</ch1Till> <!-- Возраст 1-го ребенка ДО (для размещений с детьми) --> <ch2From>0</ch2From> <!-- Возраст 2-го ребенка ОТ (для размещений с детьми) --> <ch2Till>0</ch2Till> <!-- Возраст 2-го ребенка До (для размещений с детьми) --> <resortId>4</resortId> <!-- Идентификатор курорта --> <resortPlaceId>2392</resortPlaceId> <!-- Идентификатор района --> <allocationId>12395</allocationId> <!-- Идентификатор отеля --> <allocCatId>7</allocCatId> <!-- Идентификатор категории отеля --> <mealId>2</mealId> <!-- Идентификатор питания --> <roomTypeId>4</roomTypeId> <!-- Идентификатор типа номера --> <roomViewId>22</roomViewId> <!-- Идентификатор вида из номера --> <isStop>false</isStop> <!-- Параметр показывающий что тур в стопе --> <isStopAllocation>false</isStopAllocation> <!-- Параметр показывающий что тур в т.к. нет мест в отеле --> <isStopFlight>false</isStopFlight> <!-- Параметр показывающий что тур в стопе т.к. нет мест на рейсы --> <!-- Дополнительные объекты, описывающие параметры тура. Присутствуют объекте тур опционарно, в зависимости от параметров входящего запроса --> <OnlineSeatsState>...</OnlineSeatsState> <ExtraCharges>...</ExtraCharges> <City>...</City> <Country>...</Country> <Operator>...</Operator> <RoomSize>...</RoomSize> <Resort>...</Resort> <ResortPlace>...</ResortPlace> <Allocation>...</Allocation> <AllocCat>...</AllocCat> <Meal>...</Meal> <RoomType>...</RoomType> <RoomView>...</RoomView> </Tour>
Дополнительные объекты для объекта Тур
Наличие мест
<OnlineSeatsState> <allocation>1</allocation> <flightThereEco>1</flightThereEco> <flightBackEco>1</flightBackEco> <flightThereBus>2</flightThereBus> <flightBackBus>2</flightBackBus> <isStopFlight>false</isStopFlight> <isStopAllocation>false</isStopAllocation> </OnlineSeatsState>
Доплаты
<ExtraCharges> <visa> <min>25</min> <max>25</max> <currency>1</currency> </visa> <feeFuel> <min>0</min> <max>40</max> <currency>1</currency> </feeFuel> </ExtraCharges>
Город вылета
<City> <id>1000</id> <name>Москва</name> </City>
Страна
<Country> <id>12</id> <name>Египет</name> </Country>
Туроператор
<Operator> <id>308</id> <name>Troyka</name> </Operator>
Размещение
<RoomSize> <id>14</id> <name>DBL</name> <description>2-е взрослых</description> <adults>2</adults> <children>0</children> </RoomSize>
Курорт
<Resort> <id>4</id> <name>Хургада</name> </Resort>
Район (курорта)
<ResortPlace> <id>2392</id> <name>Эль-Дахар</name> </ResortPlace>
Отель
<Allocation> <id>12395</id> <name>Sea View</name> <rate>2.5</rate> </Allocation>
Категория отеля
<AllocCat> <id>7</id> <name>2*</name> </AllocCat>
Питание
<Meal> <id>1</id> <name>AI</name> <description>питание+напитки местного производства</description> </Meal>
Тип номера
<RoomType> <id>13</id> <name>Executive</name> <description>улучш. номер "Executive"</description> </RoomType>
Вид из номера
<RoomView> <id>22</id> <name>ROH</name> <description>без опред. вида из номера</description> </RoomView>