diff --git a/application/third_party/trainsystem/controllers/innerTrainSearch.php b/application/third_party/trainsystem/controllers/innerTrainSearch.php index a7c9bad9..442798fe 100644 --- a/application/third_party/trainsystem/controllers/innerTrainSearch.php +++ b/application/third_party/trainsystem/controllers/innerTrainSearch.php @@ -209,200 +209,7 @@ class innerTrainSearch extends CI_Controller{ return json_encode($return_data); } - // //携程数据接口 - // public function ctripApi($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; - // } - - // //转换三字码为中文 - // $this->load->model("ctrip_model"); - // $FromName = $this->ctrip_model->ReplaceCodeToName($from); - // $ToName = $this->ctrip_model->ReplaceCodeToName($to); - - - // if(!$FromName || !$ToName){ - // header("HTTP/1.1 404 Not Found"); - // exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}'); - // }else{ - // $FromName = $FromName->station_name; - // $ToName = $ToName->station_name; - // } - - // //生成请求链接 - // $TimeStamp = time(); - // $Sign = md5($TimeStamp.DATAKEY); - - // $url = JSONRETURN.'SearchS2S/?From='.urlencode($FromName).'&To='.urlencode($ToName).'&DepartDate='.$date.'&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign; - - // $api_start_time = microtime(true); - - // //获取数据 - // $ResponseJson = GetPost_http($url,'','GET'); - - // $api_end_time = microtime(true); - - // $ResponseData = json_decode($ResponseJson); - - // $api_responsive_time = $api_end_time - $api_start_time; - - // if(empty($ResponseData->Trains)){ - // log_message('error','ctrip_trian|status:trains is empty |相应时间:'.$api_responsive_time); - // }else{ - // log_message('error','ctrip_trian|status:'.$ResponseData->ResponseStatus->Ack.'|相应时间:'.$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 = 'ctrip'; - // $ReturnData->data->result = array(); - // $ReturnData->data->map = new stdClass(); - // $obj = array(); - // $i = 0; - // $PriceStr = ''; - - // //数据解析 - // if(!empty($ResponseData->Trains)){ - // foreach ($ResponseData->Trains as $TrainInfo){ - // $obj[$TrainInfo->FromTelcode] = $TrainInfo->FromStationName; - // $obj[$TrainInfo->ToTelcode] = $TrainInfo->ToStationName; - // $SeaType = ''; - // //余数初始化为空 - // $gjrwNum = $rwNum = $rzNum = $tdzNum = $wzNum = $yzNum = $edzNum = $ydzNum = $swzNum = $ywNum = $dwNum = $ydwNum = $edzNum = null; - // foreach($TrainInfo->Seats as $Seats){ - // //从香港出发的 D/G 火车加价3% - // if($from == 'XJA'){ - // if(stripos($TrainInfo->TrainNo, "G") !== false || stripos($TrainInfo->TrainNo, "D") !== false){ - // $Seats->Price = $Seats->Price * 1.03; - // } - // } - - // if($Seats->SeatName == '高级软卧上'){ - // $gjrwXiaPrice = $Seats->Price * 10; - // $SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->Price.'",'; - // $gjrwNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '软卧上'){ - // $rwPrice = $Seats->Price * 10; - // $SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->Price.'",'; - // $rwNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '一等双软上'){ - // $SeaType .= '"YDW":"¥'.$Seats->Price.'",'; - // $ydwNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '软座'){ - // $rzPrice = $Seats->Price * 10; - // $SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->Price.'",'; - // $rzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '特等座'){ - // $SeaType .= '"P":"¥'.$Seats->Price.'",'; - // $tdzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '无座'){ - // $SeaType .= '"WZ":"¥'.$Seats->Price.'",'; - // $wzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '硬座'){ - // $yzPrice = $Seats->Price * 10; - // $SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->Price.'",'; - // $yzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '二等座'){ - // $SeaType .= '"O":"¥'.$Seats->Price.'",'; - // $edzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '一等座'){ - // $SeaType .= '"M":"¥'.$Seats->Price.'",'; - // $ydzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '商务座'){ - // $swzPrice = $Seats->Price * 10; - // $SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->Price.'",'; - // $swzNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '硬卧上'){ - // $ywPrice = $Seats->Price * 10; - // $SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->Price.'",'; - // $ywNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '二等双软上'){ - // $SeaType .= '"EDW":"¥'.$Seats->Price.'",'; - // $erwNum = $Seats->TicketLeft; - // } - - // if($Seats->SeatName == '动卧上'){ - // $SeaType .= '"F":"¥'.$Seats->Price.'",'; - // $dwNum = $Seats->TicketLeft; - // } - - // $PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->TrainNo.'"'; - - // } - - // //对返回的数据进行容错处理 - // $gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->Price,$gjrwNum,$iseven) : ''; - // $rwNum = isset($rwNum) ? ticket_exchange($Seats->Price,$rwNum,$iseven) : ''; - // $rzNum = isset($rzNum) ? ticket_exchange($Seats->Price,$rzNum,$iseven) : ''; - // $tdzNum = isset($tdzNum) ? ticket_exchange($Seats->Price,$tdzNum,$iseven) : ''; - // $wzNum = isset($wzNum) ? ticket_exchange($Seats->Price,$wzNum,$iseven) : ''; - // $ywNum = isset($ywNum) ? ticket_exchange($Seats->Price,$ywNum,$iseven) : ''; - // $yzNum = isset($yzNum) ? ticket_exchange($Seats->Price,$yzNum,$iseven) : ''; - // $edzNum = isset($edzNum) ? ticket_exchange($Seats->Price,$edzNum,$iseven) : ''; - // $ydzNum = isset($ydzNum) ? ticket_exchange($Seats->Price,$ydzNum,$iseven) : ''; - // $swzNum = isset($swzNum) ? ticket_exchange($Seats->Price,$swzNum,$iseven) : ''; - // $dwNum = isset($dwNum) ? ticket_exchange($Seats->Price,$dwNum,$iseven) : ''; - // $ydwNum = isset($ydwNum) ? ticket_exchange($Seats->Price,$ydwNum,$iseven) : ''; - // $erwNum = isset($erwNum) ? ticket_exchange($Seats->Price,$erwNum,$iseven) : ''; - - // $runMin = $TrainInfo->DurationMinutes % 60; - // $runHour = ($TrainInfo->DurationMinutes - $runMin) / 60; - - // $ReturnData->data->result[$i] = '|预定|'.$TrainInfo->Train12306No.'|'.$TrainInfo->TrainNo.'|'.$TrainInfo->FromStationName.'|'.$TrainInfo->ToStationName.'|'.$TrainInfo->FromTelcode.'|'.$TrainInfo->ToTelcode.'|'.$TrainInfo->StartTime.'|'.$TrainInfo->ArriveTime.'|'.$runHour.':'.$runMin.'|'.$TrainInfo->CanWebBuy.'||'.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); - // } - // } - // } - - + /** * @description: 新的携程(顺途)火车票查询接口 @@ -467,7 +274,7 @@ class innerTrainSearch extends CI_Controller{ // //获取数据 // echo ($url . "
"); // echo(json_encode($post_data) . "
"); - $ResponseJson = GetPost_http($url,json_encode($post_data),'json_ctrip'); + $ResponseJson = GetPost_http($url,json_encode($post_data),'json'); $api_end_time = microtime(true); @@ -678,7 +485,7 @@ class innerTrainSearch extends CI_Controller{ } } - //查询经停站(基于携程api) + //查询经停站(基于携程api) public function getstopstation(){ //接收参数 $DepartDate = $this->input->get_post('DepartDate'); @@ -724,28 +531,41 @@ class innerTrainSearch extends CI_Controller{ } } - //获取所有站点信息(基于携程api) + //获取所有站点信息(基于新携程接口 2022-7-18) public function getallstation(){ + ini_set('max_execution_time', 600); //生成请求参数 - $TimeStamp = time(); - $Sign = md5($TimeStamp.DATAKEY); - - $url = JSONRETURN.'/GetAllStations/?&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign; + $TimeStamp = date("Y-m-d H:i:s"); + $serviceName = "train.getAllStations"; + $strSign = $TimeStamp.$serviceName.COMPANYID.CTRIPKEY; //加密前的令牌 + $Sign = md5($strSign); + $url = CTRIPURL."/getAllStations"; - $ResponseJson = GetPost_http($url,'','GET'); + //构建接口参数,POST方式JSON格式 + $post_data = new stdClass(); + $post_data->authentication = new stdClass(); + $post_data->authentication->timeStamp = $TimeStamp; + $post_data->authentication->serviceName = $serviceName; + $post_data->authentication->companyId = COMPANYID; + $post_data->authentication->messageIdentity = $Sign; + //获取数据 + $ResponseJson = GetPost_http($url,json_encode($post_data),'json'); + //echo $ResponseJson; $ResponseData = json_decode($ResponseJson); $data = array(); - foreach ($ResponseData->Stations as $items){ - $data['StationName'] = isset($items->StationName) ? checkNull($items->StationName) : ''; - $data['PinYin'] = isset($items->PinYin) ? checkNull($items->PinYin) : ''; - $data['Telecode'] = isset($items->Telecode) ? checkNull($items->Telecode) : ''; - $data['Address'] = isset($items->Address) ? checkNull($items->Address) : ''; - $data['Geography'] = isset($items->Geography) ? checkNull($items->Geography) : ''; + foreach ($ResponseData->stationList as $items){ + $data['StationName'] = isset($items->stationName) ? checkNull($items->stationName) : ''; + $data['PinYin'] = isset($items->pinYin) ? checkNull($items->pinYin) : ''; + $data['Telecode'] = isset($items->telecode) ? checkNull($items->telecode) : ''; + $data['Address'] = isset($items->address) ? checkNull($items->address) : ''; + $data['Geography'] = isset($items->shortPinYin) ? checkNull($items->shortPinYin) : ''; $this->load->model("ctrip_model"); $this->ctrip_model->AddOrUpdate($data); } + + echo("所有站点数据更新完毕!"); } public function testgetstation(){ @@ -852,7 +672,7 @@ class innerTrainSearch extends CI_Controller{ exit('传参错误!'); } - $back_json = $this->juheApi($train_date,$fromStation,$toStation,true); + $back_json = $this->NewCtripApi($train_date,$fromStation,$toStation,true); $train_info = new stdClass(); $train_info = json_decode($back_json); @@ -982,29 +802,226 @@ class innerTrainSearch extends CI_Controller{ print_r(json_encode($return_data)); } + + ////携程数据接口(旧) + // public function ctripApi($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; + // } + + // //转换三字码为中文 + // $this->load->model("ctrip_model"); + // $FromName = $this->ctrip_model->ReplaceCodeToName($from); + // $ToName = $this->ctrip_model->ReplaceCodeToName($to); + + + // if(!$FromName || !$ToName){ + // header("HTTP/1.1 404 Not Found"); + // exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}'); + // }else{ + // $FromName = $FromName->station_name; + // $ToName = $ToName->station_name; + // } + + // //生成请求链接 + // $TimeStamp = time(); + // $Sign = md5($TimeStamp.DATAKEY); + + // $url = JSONRETURN.'SearchS2S/?From='.urlencode($FromName).'&To='.urlencode($ToName).'&DepartDate='.$date.'&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign; + + // $api_start_time = microtime(true); + + // //获取数据 + // $ResponseJson = GetPost_http($url,'','GET'); + + // $api_end_time = microtime(true); + + // $ResponseData = json_decode($ResponseJson); + + // $api_responsive_time = $api_end_time - $api_start_time; + + // if(empty($ResponseData->Trains)){ + // log_message('error','ctrip_trian|status:trains is empty |相应时间:'.$api_responsive_time); + // }else{ + // log_message('error','ctrip_trian|status:'.$ResponseData->ResponseStatus->Ack.'|相应时间:'.$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 = 'ctrip'; + // $ReturnData->data->result = array(); + // $ReturnData->data->map = new stdClass(); + // $obj = array(); + // $i = 0; + // $PriceStr = ''; + + // //数据解析 + // if(!empty($ResponseData->Trains)){ + // foreach ($ResponseData->Trains as $TrainInfo){ + // $obj[$TrainInfo->FromTelcode] = $TrainInfo->FromStationName; + // $obj[$TrainInfo->ToTelcode] = $TrainInfo->ToStationName; + // $SeaType = ''; + // //余数初始化为空 + // $gjrwNum = $rwNum = $rzNum = $tdzNum = $wzNum = $yzNum = $edzNum = $ydzNum = $swzNum = $ywNum = $dwNum = $ydwNum = $edzNum = null; + // foreach($TrainInfo->Seats as $Seats){ + // //从香港出发的 D/G 火车加价3% + // if($from == 'XJA'){ + // if(stripos($TrainInfo->TrainNo, "G") !== false || stripos($TrainInfo->TrainNo, "D") !== false){ + // $Seats->Price = $Seats->Price * 1.03; + // } + // } + + // if($Seats->SeatName == '高级软卧上'){ + // $gjrwXiaPrice = $Seats->Price * 10; + // $SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->Price.'",'; + // $gjrwNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '软卧上'){ + // $rwPrice = $Seats->Price * 10; + // $SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->Price.'",'; + // $rwNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '一等双软上'){ + // $SeaType .= '"YDW":"¥'.$Seats->Price.'",'; + // $ydwNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '软座'){ + // $rzPrice = $Seats->Price * 10; + // $SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->Price.'",'; + // $rzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '特等座'){ + // $SeaType .= '"P":"¥'.$Seats->Price.'",'; + // $tdzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '无座'){ + // $SeaType .= '"WZ":"¥'.$Seats->Price.'",'; + // $wzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '硬座'){ + // $yzPrice = $Seats->Price * 10; + // $SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->Price.'",'; + // $yzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '二等座'){ + // $SeaType .= '"O":"¥'.$Seats->Price.'",'; + // $edzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '一等座'){ + // $SeaType .= '"M":"¥'.$Seats->Price.'",'; + // $ydzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '商务座'){ + // $swzPrice = $Seats->Price * 10; + // $SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->Price.'",'; + // $swzNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '硬卧上'){ + // $ywPrice = $Seats->Price * 10; + // $SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->Price.'",'; + // $ywNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '二等双软上'){ + // $SeaType .= '"EDW":"¥'.$Seats->Price.'",'; + // $erwNum = $Seats->TicketLeft; + // } + + // if($Seats->SeatName == '动卧上'){ + // $SeaType .= '"F":"¥'.$Seats->Price.'",'; + // $dwNum = $Seats->TicketLeft; + // } + + // $PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->TrainNo.'"'; + + // } + + // //对返回的数据进行容错处理 + // $gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->Price,$gjrwNum,$iseven) : ''; + // $rwNum = isset($rwNum) ? ticket_exchange($Seats->Price,$rwNum,$iseven) : ''; + // $rzNum = isset($rzNum) ? ticket_exchange($Seats->Price,$rzNum,$iseven) : ''; + // $tdzNum = isset($tdzNum) ? ticket_exchange($Seats->Price,$tdzNum,$iseven) : ''; + // $wzNum = isset($wzNum) ? ticket_exchange($Seats->Price,$wzNum,$iseven) : ''; + // $ywNum = isset($ywNum) ? ticket_exchange($Seats->Price,$ywNum,$iseven) : ''; + // $yzNum = isset($yzNum) ? ticket_exchange($Seats->Price,$yzNum,$iseven) : ''; + // $edzNum = isset($edzNum) ? ticket_exchange($Seats->Price,$edzNum,$iseven) : ''; + // $ydzNum = isset($ydzNum) ? ticket_exchange($Seats->Price,$ydzNum,$iseven) : ''; + // $swzNum = isset($swzNum) ? ticket_exchange($Seats->Price,$swzNum,$iseven) : ''; + // $dwNum = isset($dwNum) ? ticket_exchange($Seats->Price,$dwNum,$iseven) : ''; + // $ydwNum = isset($ydwNum) ? ticket_exchange($Seats->Price,$ydwNum,$iseven) : ''; + // $erwNum = isset($erwNum) ? ticket_exchange($Seats->Price,$erwNum,$iseven) : ''; + + // $runMin = $TrainInfo->DurationMinutes % 60; + // $runHour = ($TrainInfo->DurationMinutes - $runMin) / 60; + + // $ReturnData->data->result[$i] = '|预定|'.$TrainInfo->Train12306No.'|'.$TrainInfo->TrainNo.'|'.$TrainInfo->FromStationName.'|'.$TrainInfo->ToStationName.'|'.$TrainInfo->FromTelcode.'|'.$TrainInfo->ToTelcode.'|'.$TrainInfo->StartTime.'|'.$TrainInfo->ArriveTime.'|'.$runHour.':'.$runMin.'|'.$TrainInfo->CanWebBuy.'||'.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); + // } + // } + // } + + + + // //获取所有站点信息(基于携程api)旧接口 + // public function getallstation(){ + // //生成请求参数 + // $TimeStamp = time(); + // $Sign = md5($TimeStamp.DATAKEY); + + // $url = JSONRETURN.'/GetAllStations/?&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign; + + // $ResponseJson = GetPost_http($url,'','GET'); + + // $ResponseData = json_decode($ResponseJson); + + // $data = array(); + // foreach ($ResponseData->Stations as $items){ + // $data['StationName'] = isset($items->StationName) ? checkNull($items->StationName) : ''; + // $data['PinYin'] = isset($items->PinYin) ? checkNull($items->PinYin) : ''; + // $data['Telecode'] = isset($items->Telecode) ? checkNull($items->Telecode) : ''; + // $data['Address'] = isset($items->Address) ? checkNull($items->Address) : ''; + // $data['Geography'] = isset($items->Geography) ? checkNull($items->Geography) : ''; + // $this->load->model("ctrip_model"); + // $this->ctrip_model->AddOrUpdate($data); + // } + // } + + - //字符串转Unicode编码 - function unicode_encode($strLong) { - $strArr = preg_split('/(?