diff --git a/application/third_party/trainsystem/controllers/innerTrainSearch.php b/application/third_party/trainsystem/controllers/innerTrainSearch.php index c5c847fb..6dfefc51 100644 --- a/application/third_party/trainsystem/controllers/innerTrainSearch.php +++ b/application/third_party/trainsystem/controllers/innerTrainSearch.php @@ -41,6 +41,9 @@ class innerTrainSearch extends CI_Controller{ case 'ctrip': $this->NewCtripApi($date,$from,$to); break; + case 'lanhai': + $this->LanHaiApi($date,$from,$to); + break; default : $this->NewCtripApi($date,$from,$to); 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 . "
"); + // echo(json_encode($post_data) . "
"); + $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项目组的接口 暂时不用 public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){ set_time_limit(0);