|
|
@ -41,6 +41,9 @@ class innerTrainSearch extends CI_Controller{
|
|
|
|
case 'ctrip':
|
|
|
|
case 'ctrip':
|
|
|
|
$this->NewCtripApi($date,$from,$to);
|
|
|
|
$this->NewCtripApi($date,$from,$to);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'lanhai':
|
|
|
|
|
|
|
|
$this->LanHaiApi($date,$from,$to);
|
|
|
|
|
|
|
|
break;
|
|
|
|
default :
|
|
|
|
default :
|
|
|
|
$this->NewCtripApi($date,$from,$to);
|
|
|
|
$this->NewCtripApi($date,$from,$to);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -430,6 +433,224 @@ class innerTrainSearch extends CI_Controller{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @description: 三亚澜海商务的火车票查询接口
|
|
|
|
|
|
|
|
* @param {*} $data
|
|
|
|
|
|
|
|
* @param {*} $from
|
|
|
|
|
|
|
|
* @param {*} $to
|
|
|
|
|
|
|
|
* @param {*} $return
|
|
|
|
|
|
|
|
* @return {*}
|
|
|
|
|
|
|
|
* @Date Changed:
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public function LanHaiApi($date=null,$from=null,$to=null,$return=false){
|
|
|
|
|
|
|
|
if(!$date || !$from || !$to){
|
|
|
|
|
|
|
|
header("HTTP/1.1 404 Not Found");
|
|
|
|
|
|
|
|
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
$isCache = false;
|
|
|
|
|
|
|
|
$iseven = false;
|
|
|
|
|
|
|
|
$cachedata = false;
|
|
|
|
|
|
|
|
$now_time = time();
|
|
|
|
|
|
|
|
$differ = (strtotime($date) - $now_time) / 86400;
|
|
|
|
|
|
|
|
//屏蔽掉超过预售期的搜索,提高速度,2021-7-5 zp修改预售期为15天,不再是30天
|
|
|
|
|
|
|
|
if($differ > 14){
|
|
|
|
|
|
|
|
$date = date('Y-m-d',strtotime('+7day'));
|
|
|
|
|
|
|
|
$iseven = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//生成请求链接
|
|
|
|
|
|
|
|
$url = "http://ctrip.lhticket.com/api/open/query/train";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//构建接口参数,POST方式JSON格式
|
|
|
|
|
|
|
|
$post_data = new stdClass();
|
|
|
|
|
|
|
|
$post_data->date = $date;
|
|
|
|
|
|
|
|
$post_data->fromStationCode = $from;
|
|
|
|
|
|
|
|
$post_data->toStationCode = $to;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$api_start_time = microtime(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// //获取数据
|
|
|
|
|
|
|
|
// echo ($url . "<hr/>");
|
|
|
|
|
|
|
|
// echo(json_encode($post_data) . "<hr/>");
|
|
|
|
|
|
|
|
$ResponseJson = GetPost_http($url,json_encode($post_data),'json');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$api_end_time = microtime(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ResponseData = json_decode($ResponseJson);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // 获取 microtime
|
|
|
|
|
|
|
|
// $microtime = microtime(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // 将时间戳转换为毫秒
|
|
|
|
|
|
|
|
// $timestampInMilliseconds = round($microtime * 1000);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// echo $timestampInMilliseconds;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo($ResponseJson);
|
|
|
|
|
|
|
|
die();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$api_responsive_time = $api_end_time - $api_start_time;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(empty($ResponseData->data)){
|
|
|
|
|
|
|
|
log_message('error','lanhai_train|status:trains is empty |相应时间:'.$api_responsive_time);
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
log_message('error','lanhai_train|status:'.$ResponseData->success.'|相应时间:'.$api_responsive_time);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//定义返回的json
|
|
|
|
|
|
|
|
$ReturnData = new stdClass();
|
|
|
|
|
|
|
|
$ReturnData->httpstatus = 200;
|
|
|
|
|
|
|
|
$ReturnData->data = new stdClass();
|
|
|
|
|
|
|
|
$ReturnData->data->seven = $iseven;
|
|
|
|
|
|
|
|
$ReturnData->data->cache = $isCache;
|
|
|
|
|
|
|
|
$ReturnData->data->supplier = 'lanhai';
|
|
|
|
|
|
|
|
$ReturnData->data->result = array();
|
|
|
|
|
|
|
|
$ReturnData->data->map = new stdClass();
|
|
|
|
|
|
|
|
$obj = array();
|
|
|
|
|
|
|
|
$i = 0;
|
|
|
|
|
|
|
|
$PriceStr = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//数据解析
|
|
|
|
|
|
|
|
if(!empty($ResponseData->data)){
|
|
|
|
|
|
|
|
foreach ($ResponseData->data as $TrainInfo){
|
|
|
|
|
|
|
|
$obj[$TrainInfo->fromStationCode] = $TrainInfo->fromStationName;
|
|
|
|
|
|
|
|
$obj[$TrainInfo->toStationCode] = $TrainInfo->toStationName;
|
|
|
|
|
|
|
|
$SeaType = '';
|
|
|
|
|
|
|
|
//余数初始化为空
|
|
|
|
|
|
|
|
$gjrwNum = $rwNum = $rzNum = $tdzNum = $wzNum = $yzNum = $edzNum = $ydzNum = $swzNum = $ywNum = $dwNum = $ydwNum = $edzNum = null;
|
|
|
|
|
|
|
|
foreach($TrainInfo->seats as $Seats){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ticketLeft = 0 ; //澜海余票会传有和无的中文
|
|
|
|
|
|
|
|
if ($Seats->count == "有"){
|
|
|
|
|
|
|
|
$ticketLeft = 99;
|
|
|
|
|
|
|
|
}else if ($Seats->count == "无"){
|
|
|
|
|
|
|
|
$ticketLeft = 0;
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
$ticketLeft = $Seats->count;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//从香港出发的 D/G 火车加价3%
|
|
|
|
|
|
|
|
if($from == 'XJA'){
|
|
|
|
|
|
|
|
if(stripos($TrainInfo->trainCode, "G") !== false || stripos($TrainInfo->trainCode, "D") !== false){
|
|
|
|
|
|
|
|
$Seats->ticketPrice = $Seats->ticketPrice * 1.03;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '高级软卧上' || $Seats->seatTypeName == '高级软卧'){
|
|
|
|
|
|
|
|
$gjrwXiaPrice = $Seats->ticketPrice * 10;
|
|
|
|
|
|
|
|
$SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$gjrwNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '软卧上' || $Seats->seatTypeName == '软卧' ){
|
|
|
|
|
|
|
|
$rwPrice = $Seats->ticketPrice * 10;
|
|
|
|
|
|
|
|
$SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$rwNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '一等双软上' || $Seats->seatTypeName=='一等卧'){
|
|
|
|
|
|
|
|
$SeaType .= '"YDW":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$ydwNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '软座'){
|
|
|
|
|
|
|
|
$rzPrice = $Seats->ticketPrice * 10;
|
|
|
|
|
|
|
|
$SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$rzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '特等座'){
|
|
|
|
|
|
|
|
$SeaType .= '"P":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$tdzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '无座'){
|
|
|
|
|
|
|
|
$SeaType .= '"WZ":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$wzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '硬座'){
|
|
|
|
|
|
|
|
$yzPrice = $Seats->ticketPrice * 10;
|
|
|
|
|
|
|
|
$SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$yzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '二等座'){
|
|
|
|
|
|
|
|
$SeaType .= '"O":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$edzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '一等座'){
|
|
|
|
|
|
|
|
$SeaType .= '"M":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$ydzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '商务座'){
|
|
|
|
|
|
|
|
$swzPrice = $Seats->ticketPrice * 10;
|
|
|
|
|
|
|
|
$SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$swzNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '硬卧上' || $Seats->seatTypeName == '硬卧'){
|
|
|
|
|
|
|
|
$ywPrice = $Seats->ticketPrice * 10;
|
|
|
|
|
|
|
|
$SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$ywNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '二等双软上' || $Seats->seatTypeName == '二等卧'){
|
|
|
|
|
|
|
|
$SeaType .= '"EDW":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$erwNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($Seats->seatTypeName == '动卧上' || $Seats->seatTypeName == '动卧'){
|
|
|
|
|
|
|
|
$SeaType .= '"F":"¥'.$Seats->ticketPrice.'",';
|
|
|
|
|
|
|
|
$dwNum = $ticketLeft;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->trainCode.'"';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//对返回的数据进行容错处理
|
|
|
|
|
|
|
|
$gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->ticketPrice,$gjrwNum,$iseven) : '';
|
|
|
|
|
|
|
|
$rwNum = isset($rwNum) ? ticket_exchange($Seats->ticketPrice,$rwNum,$iseven) : '';
|
|
|
|
|
|
|
|
$rzNum = isset($rzNum) ? ticket_exchange($Seats->ticketPrice,$rzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$tdzNum = isset($tdzNum) ? ticket_exchange($Seats->ticketPrice,$tdzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$wzNum = isset($wzNum) ? ticket_exchange($Seats->ticketPrice,$wzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$ywNum = isset($ywNum) ? ticket_exchange($Seats->ticketPrice,$ywNum,$iseven) : '';
|
|
|
|
|
|
|
|
$yzNum = isset($yzNum) ? ticket_exchange($Seats->ticketPrice,$yzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$edzNum = isset($edzNum) ? ticket_exchange($Seats->ticketPrice,$edzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$ydzNum = isset($ydzNum) ? ticket_exchange($Seats->ticketPrice,$ydzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$swzNum = isset($swzNum) ? ticket_exchange($Seats->ticketPrice,$swzNum,$iseven) : '';
|
|
|
|
|
|
|
|
$dwNum = isset($dwNum) ? ticket_exchange($Seats->ticketPrice,$dwNum,$iseven) : '';
|
|
|
|
|
|
|
|
$ydwNum = isset($ydwNum) ? ticket_exchange($Seats->ticketPrice,$ydwNum,$iseven) : '';
|
|
|
|
|
|
|
|
$erwNum = isset($erwNum) ? ticket_exchange($Seats->ticketPrice,$erwNum,$iseven) : '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//时间处理
|
|
|
|
|
|
|
|
$startTime = date("H:i", strtotime($TrainInfo->startTime));;
|
|
|
|
|
|
|
|
$arrivalTime = date("H:i", strtotime($TrainInfo->arrivalTime));;
|
|
|
|
|
|
|
|
$runMin = $TrainInfo->travelTime % 60;
|
|
|
|
|
|
|
|
$runHour = ($TrainInfo->travelTime - $runMin) / 60;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ReturnData->data->result[$i] = '|预定|'.$TrainInfo->trainNo.'|'.$TrainInfo->trainCode.'|'.$TrainInfo->fromStationName.'|'.$TrainInfo->toStationName.'|'.$TrainInfo->fromStationCode.'|'.$TrainInfo->toStationCode.'|'.$startTime.'|'.$arrivalTime.'|'.$runHour.':'.$runMin.'|Y||'.date('Ymd',strtotime($date)).'||||||||'.$gjrwNum.'||'.$rwNum.'|'.$rzNum.'|'.$tdzNum.'|'.$wzNum.'||'.$ywNum.'|'.$yzNum.'|'.$edzNum.'|'.$ydzNum.'|'.$swzNum.'|'.$dwNum.'|||'.$ydwNum.'|'.$erwNum;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$PriceStr.'},"messages":[],"validateMessages":{}}';
|
|
|
|
|
|
|
|
$ReturnData->data->price[$i] = $data;
|
|
|
|
|
|
|
|
$i++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//print_r($ResponseData);die();
|
|
|
|
|
|
|
|
$ReturnData->data->map = (object)$obj;
|
|
|
|
|
|
|
|
if($return){
|
|
|
|
|
|
|
|
return json_encode($ReturnData);
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
echo json_encode($ReturnData);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//App项目组的接口 暂时不用
|
|
|
|
//App项目组的接口 暂时不用
|
|
|
|
public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){
|
|
|
|
public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){
|
|
|
|
set_time_limit(0);
|
|
|
|
set_time_limit(0);
|
|
|
|