package net.tooan.ynpay.order.agent.bus;
import net.tooan.ynpay.order.agent.bean.Customer;
import net.tooan.ynpay.order.agent.bus.bean.BusOrder;
import net.tooan.ynpay.order.agent.bus.bean.BusSite;
import net.tooan.ynpay.order.agent.bus.bean.BusStation;
import net.tooan.ynpay.order.agent.bus.eadd.EaddHelper;
import net.tooan.ynpay.order.agent.bus.bean.BusClass;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-11-2
* Time: 下午9:48
*/
public abstract class AbstractBusHelper {
public static final String TYPE_EADD = "eadd";
public static AbstractBusHelper getHelper(String faceType) {
if (TYPE_EADD.equals(faceType)) {
return new EaddHelper();
}
return null;
}
/**
* 查询客运站
*
* @return 客运站列表
*/
public abstract List<BusStation> getStations();
/**
* 通过客运站查询目的站点
*
* @param station 客运站
* @return 站点列表
*/
public abstract List<BusSite> getSites(BusStation station);
/**
* 查询班次
*
* @param station 目的站列表
* @param site 目的站名称(可选)
* @param date 发车日期(YYYY-MM-DD)
* @return 班次列表
*/
public abstract List<BusClass> getClasses(BusStation station, String site, String date);
/**
* 下单
*
* @param cls 班次信息
* @param customer 顾客信息
* @param ticket 票数
* @param price 票价(单价)
* @param ticketType 票类
* @return 订单列表
*/
public abstract List<BusOrder> order(BusClass cls, Customer customer, Integer ticket, Float price, String ticketType);
/**
* 查询订单
*
* @param order 订单信息
* @return 订单列表
*/
public abstract List<BusOrder> getOrders(BusOrder order);
/**
* 查询订单
*
* @param customer 顾客信息(证件号,联系电话,身份证)
* @param getPwd 取票密码
* @param status 状态
* @param orderDate 下单日期
* @param payDate 支付日期
* @param origin 起点
* @param site 讫点
* @param station 客运站
* @return 订单列表
*/
public abstract List<BusOrder> getOrders(Customer customer, String getPwd, Integer status, String orderDate, String payDate, BusSite origin, BusSite site, BusStation station);
/**
* 支付
*
* @param orders 待支付订单列表
* @return 支付后的订单列表
*/
public abstract List<BusOrder> pay(List<BusOrder> orders);
/**
* 取消订单
*
* @param orders 待取消的订单列表
* @return 取消后的订单列表
*/
public abstract List<BusOrder> cancel(List<BusOrder> orders);
/**
* 取票
*
* @param order 订单信息
* @param ticketNo 票号
* @return 订单
*/
public abstract BusOrder take(BusOrder order, String ticketNo);
}