|
|
package com.artmark.avs5rs;
|
|
|
|
|
|
import com.artmark.avs5rs.model.*;
|
|
|
|
|
|
import javax.ws.rs.POST;
|
|
|
import javax.ws.rs.Path;
|
|
|
|
|
|
/**
|
|
|
* Сервис продажи билетов.
|
|
|
* @author Ushmodin N.
|
|
|
* @since 07.07.2016 10:06
|
|
|
*/
|
|
|
|
|
|
@Path("/sales")
|
|
|
public interface SaleService {
|
|
|
|
|
|
/**
|
|
|
* Метод примает в параметра произвольную строку и возвращает её в теле ответа.
|
|
|
* Не выпольняет ни какой логики. Необходим для проверки доступен ли сервис.
|
|
|
*/
|
|
|
@Path("/echo")
|
|
|
@POST
|
|
|
Response<EchoResponse> echo(EchoRequest request);
|
|
|
|
|
|
/**
|
|
|
* Метод получения станций отправления.
|
|
|
* Продажа происходит от станции отправления до станции назначения, поэтому метод должен вернуть хотябы один элемент.
|
|
|
* Обычно станциями отправления являются автовокзалы или автоматизированные остановочные пункты с фунцией продажи билетов.
|
|
|
*/
|
|
|
@Path("/getDispatchStations")
|
|
|
@POST
|
|
|
Response<GetDispatchStationsResponse> getDispatchStations(GetDispatchStationsRequest request);
|
|
|
|
|
|
/**
|
|
|
* Метод получения станций назначения от станции отправления. В параметра принимает идентификато станции отправления.
|
|
|
* Станциями назначения могут быть любые остановочные пункты до которых есть хотябы один рейс
|
|
|
*/
|
|
|
@Path("/getArrivalStations")
|
|
|
@POST
|
|
|
Response<GetArrivalStationsResponse> getArrivalStations(GetArrivalStationsRequest request);
|
|
|
|
|
|
/**
|
|
|
* Метод возвращает список рейсов от станции отправления до станции назначения на заданную дату.
|
|
|
* В параметрах передается идентификатор станции отправления, идентификатор станции назначения и дата.
|
|
|
*/
|
|
|
@Path("/searchTrips")
|
|
|
@POST
|
|
|
Response<SearchTripsResponse> searchTrips(SearchTripsRequest request);
|
|
|
|
|
|
/**
|
|
|
* Метод возвращает список остановочных пунктов для рейса.
|
|
|
* В параметра принимает идентификатор рейса.
|
|
|
* Метод информационный.
|
|
|
*/
|
|
|
@Path("/getTripStops")
|
|
|
@POST
|
|
|
Response<GetTripStopsResponse> getTripStops(GetTripStopsRequest request);
|
|
|
|
|
|
/**
|
|
|
* Получение списка свободных мест для рейса.
|
|
|
* В параметра принимает идентификатор рейса, идентификтор станции отправления и идентификатор станции назначения.
|
|
|
*/
|
|
|
@Path("/getFreeSeats")
|
|
|
@POST
|
|
|
Response<GetFreeSeatsResponse> getFreeSeats(GetFreeSeatsRequest request);
|
|
|
|
|
|
/**
|
|
|
* Получение списка типов билетов, доступных для продажи.
|
|
|
* В параметра принимает идентификатор рейса, идентификтор станции отправления и идентификатор станции назначения.
|
|
|
*/
|
|
|
@Path("/getTicketTypes")
|
|
|
@POST
|
|
|
Response<GetTicketTypesResponse> getTicketTypes(GetTicketTypesRequest request);
|
|
|
|
|
|
/**
|
|
|
* Получение списка типов документов, допустимых при оформлении билетов. Система должна предоставить хотя бы один тип документа.
|
|
|
* Рекомендуется использовать документы из (приказа)[http://base.garant.ru/70229008/] в Таблице 1.
|
|
|
* В параметра принимает идентификатор рейса, идентификатор станции отправления и идентификатор станции назначения.
|
|
|
*/
|
|
|
@Path("/getDocumentTypes")
|
|
|
@POST
|
|
|
Response<GetDocumentTypesResponse> getDocumentTypes(GetDocumentTypesRequest request);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* Бронирование заказа. Бронь сохраняется в течение ограниченного времени, от 20 до 60 минут. Если в указанный
|
|
|
* период времени не поступает подтверждение оплаты через метод confirmOrder(), то бронирование автоматически
|
|
|
* отменяется. Метод должен выполнить все возможные проверки корректности переданных данных. В случае ошибки
|
|
|
* заказ не должен быть создан.
|
|
|
* В параметра принимает идентификатор рейса, идентификтор станции отправления, идентификатор станции назначения,
|
|
|
* информацию о бронируемых билетах, информацию об агенте совершивший эту операцию. Информаци о бронируемых билетах
|
|
|
* включает в себя идентификатор типа билета, идентификато места и информацию о пассажире. Информация об
|
|
|
* агенте включает в себя наименование и ИНН агента.
|
|
|
*/
|
|
|
@Path("/bookOrder")
|
|
|
@POST
|
|
|
Response<BookOrderResponse> bookOrder(BookOrderRequest request);
|
|
|
|
|
|
/**
|
|
|
* Получение информации о заказе. В пареметрах принимает идентификатор заказа, полученный в результате bookOrder
|
|
|
* Метод должен работать на любом этапе жизни заказа т.е. после создания, подтверждения, отмены, возврата.
|
|
|
*/
|
|
|
@Path("/getOrder")
|
|
|
@POST
|
|
|
Response<GetOrderResponse> getOrder(GetOrderRequest request);
|
|
|
|
|
|
/**
|
|
|
* Подтверждение оплаты заказа. Данный метод должен вызываться только после того как заказ действительно был
|
|
|
* оплачен покупателем. Метод не должен делать проверок корректности заказа. Все проверки должны делать в bookOrder
|
|
|
* или updateTicket. Вызов этого метода означает, все данные заполнены правильно и деньги от покупателя получены.
|
|
|
* В пареметрах принимает идентификатор заказа, полученный в результате bookOrder и информацию об агенте который
|
|
|
* совершил операцию
|
|
|
*/
|
|
|
@Path("/confirmOrder")
|
|
|
@POST
|
|
|
Response<ConfirmOrderResponse> confirmOrder(ConfirmOrderRequest request);
|
|
|
|
|
|
/**
|
|
|
* Возврат билета. При возврате возможны удержания. В пареметрах принимает идентификатор билета и информацию
|
|
|
* об агенте который совершил операцию. Билет можно вернуть только после подтверждения confirmOrder.
|
|
|
*/
|
|
|
@Path("/returnTicket")
|
|
|
@POST
|
|
|
Response<ReturnTicketResponse> returnTicket(ReturnTicketRequest request);
|
|
|
|
|
|
/**
|
|
|
* Отмена билета. Техническая операция, выполняет полный возврат билета без удержаний.
|
|
|
* Необходима при нештатных ситуациях например в случае сбоев ККМ или ошибки выбора рейса.
|
|
|
* В пареметрах принимает идентификатор билета и информацию об агенте который совершил операцию.
|
|
|
* Можно выполнять после создания заказа и в течении 5-30 минут после подтвержения заказа.
|
|
|
*/
|
|
|
@Path("/cancelTicket")
|
|
|
@POST
|
|
|
Response<CancelTicketResponse> cancelTicket(CancelTicketRequest request);
|
|
|
|
|
|
/**
|
|
|
* Изменение персональных данных пассажира в забронированном или проданном билете.
|
|
|
* В пареметрах принимает идентификатор билета, информацию о пассажире и информацию
|
|
|
* об агенте который совершил операцию.
|
|
|
*/
|
|
|
@Path("/updateTicket")
|
|
|
@POST
|
|
|
Response<UpdateTicketResponse> updateTicket(UpdateTicketRequest request);
|
|
|
}
|