From 556801f1499e77f6591a2b5fe3d00b99d1bfd1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=B9=8F?= Date: Fri, 15 Jul 2022 16:26:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E6=90=BA=E7=A8=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third_party/trainsystem/config/config.php | 7 + .../controllers/innerTrainSearch.php | 525 +++++++++++++++--- .../trainsystem/helpers/train_helper.php | 8 + 3 files changed, 457 insertions(+), 83 deletions(-) diff --git a/application/third_party/trainsystem/config/config.php b/application/third_party/trainsystem/config/config.php index 816ba8a3..8fe0fae8 100644 --- a/application/third_party/trainsystem/config/config.php +++ b/application/third_party/trainsystem/config/config.php @@ -19,6 +19,13 @@ define("DATAKEY","0dbf1652763c2289533e27437a971854"); //携程接口地址 define("JSONRETURN","http://m.ctrip.com/restapi/soa2/12976/json/"); +//新携程接口(顺途)用的企业ID +define("COMPANYID","4003171843"); +//新携程接口(顺途)用的Key +define("CTRIPKEY","hajkrtbc"); +//新携程接口(顺途)的地址 +define("CTRIPURL","https://apiproxy.ctrip.com/apiproxy/soa2/19946"); + //聚合火车订票API key define("JUHE_TRAIN_API_KEY","79f03107b921ef31310bd40a1415c1cb"); diff --git a/application/third_party/trainsystem/controllers/innerTrainSearch.php b/application/third_party/trainsystem/controllers/innerTrainSearch.php index be6726ad..a7c9bad9 100644 --- a/application/third_party/trainsystem/controllers/innerTrainSearch.php +++ b/application/third_party/trainsystem/controllers/innerTrainSearch.php @@ -39,10 +39,10 @@ class innerTrainSearch extends CI_Controller{ $this->juheApi($date,$from,$to); break; case 'ctrip': - $this->ctripApi($date,$from,$to); + $this->NewCtripApi($date,$from,$to); break; default : - $this->juheApi($date,$from,$to); + $this->NewCtripApi($date,$from,$to); break; } } @@ -209,8 +209,211 @@ class innerTrainSearch extends CI_Controller{ return json_encode($return_data); } - //携程数据接口 - public function ctripApi($date=null,$from=null,$to=null,$return=false){ + // //携程数据接口 + // 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: 新的携程(顺途)火车票查询接口 + * @param {*} $date 日期 + * @param {*} $from 出发站点三字码 + * @param {*} $to 到达站点三字码 + * @param {*} $return + * @return {*} + * @Date Changed: + */ + public function NewCtripApi($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":{}}}'); @@ -241,23 +444,40 @@ class innerTrainSearch extends CI_Controller{ } //生成请求链接 - $TimeStamp = time(); - $Sign = md5($TimeStamp.DATAKEY); - - $url = JSONRETURN.'SearchS2S/?From='.urlencode($FromName).'&To='.urlencode($ToName).'&DepartDate='.$date.'&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign; + $TimeStamp = date("Y-m-d H:i:s"); + $serviceName = "train.searchTrainsBetweenStations"; //每个接口都有自己名称 + $strSign = $TimeStamp.$serviceName.COMPANYID.CTRIPKEY; //加密前的令牌 + $Sign = md5($strSign); + $url = CTRIPURL."/searchTrainsBetweenStations"; + + //构建接口参数,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; + $post_data->searchTrainsParam = new stdClass(); + $post_data->searchTrainsParam->departDate = $date; + $post_data->searchTrainsParam->fromStationName = $FromName; + $post_data->searchTrainsParam->toStationName = $ToName; $api_start_time = microtime(true); - //获取数据 - $ResponseJson = GetPost_http($url,'','GET'); + // //获取数据 + // echo ($url . "
"); + // echo(json_encode($post_data) . "
"); + $ResponseJson = GetPost_http($url,json_encode($post_data),'json_ctrip'); $api_end_time = microtime(true); $ResponseData = json_decode($ResponseJson); + // echo($ResponseJson); + $api_responsive_time = $api_end_time - $api_start_time; - if(empty($ResponseData->Trains)){ + if(empty($ResponseData->trainList)){ 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); @@ -269,7 +489,7 @@ class innerTrainSearch extends CI_Controller{ $ReturnData->data = new stdClass(); $ReturnData->data->seven = $iseven; $ReturnData->data->cache = $isCache; - $ReturnData->data->supplier = 'ctrip'; + $ReturnData->data->supplier = 'newctrip'; $ReturnData->data->result = array(); $ReturnData->data->map = new stdClass(); $obj = array(); @@ -277,115 +497,115 @@ class innerTrainSearch extends CI_Controller{ $PriceStr = ''; //数据解析 - if(!empty($ResponseData->Trains)){ - foreach ($ResponseData->Trains as $TrainInfo){ - $obj[$TrainInfo->FromTelcode] = $TrainInfo->FromStationName; - $obj[$TrainInfo->ToTelcode] = $TrainInfo->ToStationName; + if(!empty($ResponseData->trainList)){ + foreach ($ResponseData->trainList 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){ + foreach($TrainInfo->seatList 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(stripos($TrainInfo->trainNo, "G") !== false || stripos($TrainInfo->trainNo, "D") !== false){ + $Seats->maxPrice = $Seats->maxPrice * 1.03; } } - if($Seats->SeatName == '高级软卧上'){ - $gjrwXiaPrice = $Seats->Price * 10; - $SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->Price.'",'; - $gjrwNum = $Seats->TicketLeft; + if($Seats->seatName == '高级软卧上'){ + $gjrwXiaPrice = $Seats->maxPrice * 10; + $SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->maxPrice.'",'; + $gjrwNum = $Seats->ticketLeft; } - if($Seats->SeatName == '软卧上'){ - $rwPrice = $Seats->Price * 10; - $SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->Price.'",'; - $rwNum = $Seats->TicketLeft; + if($Seats->seatName == '软卧上'){ + $rwPrice = $Seats->maxPrice * 10; + $SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->maxPrice.'",'; + $rwNum = $Seats->ticketLeft; } - if($Seats->SeatName == '一等双软上'){ - $SeaType .= '"YDW":"¥'.$Seats->Price.'",'; - $ydwNum = $Seats->TicketLeft; + if($Seats->seatName == '一等双软上'){ + $SeaType .= '"YDW":"¥'.$Seats->maxPrice.'",'; + $ydwNum = $Seats->ticketLeft; } - if($Seats->SeatName == '软座'){ - $rzPrice = $Seats->Price * 10; - $SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->Price.'",'; - $rzNum = $Seats->TicketLeft; + if($Seats->seatName == '软座'){ + $rzPrice = $Seats->maxPrice * 10; + $SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->maxPrice.'",'; + $rzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '特等座'){ - $SeaType .= '"P":"¥'.$Seats->Price.'",'; - $tdzNum = $Seats->TicketLeft; + if($Seats->seatName == '特等座'){ + $SeaType .= '"P":"¥'.$Seats->maxPrice.'",'; + $tdzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '无座'){ - $SeaType .= '"WZ":"¥'.$Seats->Price.'",'; - $wzNum = $Seats->TicketLeft; + if($Seats->seatName == '无座'){ + $SeaType .= '"WZ":"¥'.$Seats->maxPrice.'",'; + $wzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '硬座'){ - $yzPrice = $Seats->Price * 10; - $SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->Price.'",'; - $yzNum = $Seats->TicketLeft; + if($Seats->seatName == '硬座'){ + $yzPrice = $Seats->maxPrice * 10; + $SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->maxPrice.'",'; + $yzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '二等座'){ - $SeaType .= '"O":"¥'.$Seats->Price.'",'; - $edzNum = $Seats->TicketLeft; + if($Seats->seatName == '二等座'){ + $SeaType .= '"O":"¥'.$Seats->maxPrice.'",'; + $edzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '一等座'){ - $SeaType .= '"M":"¥'.$Seats->Price.'",'; - $ydzNum = $Seats->TicketLeft; + if($Seats->seatName == '一等座'){ + $SeaType .= '"M":"¥'.$Seats->maxPrice.'",'; + $ydzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '商务座'){ - $swzPrice = $Seats->Price * 10; - $SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->Price.'",'; - $swzNum = $Seats->TicketLeft; + if($Seats->seatName == '商务座'){ + $swzPrice = $Seats->maxPrice * 10; + $SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->maxPrice.'",'; + $swzNum = $Seats->ticketLeft; } - if($Seats->SeatName == '硬卧上'){ - $ywPrice = $Seats->Price * 10; - $SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->Price.'",'; - $ywNum = $Seats->TicketLeft; + if($Seats->seatName == '硬卧上'){ + $ywPrice = $Seats->maxPrice * 10; + $SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->maxPrice.'",'; + $ywNum = $Seats->ticketLeft; } - if($Seats->SeatName == '二等双软上'){ - $SeaType .= '"EDW":"¥'.$Seats->Price.'",'; - $erwNum = $Seats->TicketLeft; + if($Seats->seatName == '二等双软上'){ + $SeaType .= '"EDW":"¥'.$Seats->maxPrice.'",'; + $erwNum = $Seats->ticketLeft; } - if($Seats->SeatName == '动卧上'){ - $SeaType .= '"F":"¥'.$Seats->Price.'",'; - $dwNum = $Seats->TicketLeft; + if($Seats->seatName == '动卧上'){ + $SeaType .= '"F":"¥'.$Seats->maxPrice.'",'; + $dwNum = $Seats->ticketLeft; } - $PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->TrainNo.'"'; + $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; + $gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->maxPrice,$gjrwNum,$iseven) : ''; + $rwNum = isset($rwNum) ? ticket_exchange($Seats->maxPrice,$rwNum,$iseven) : ''; + $rzNum = isset($rzNum) ? ticket_exchange($Seats->maxPrice,$rzNum,$iseven) : ''; + $tdzNum = isset($tdzNum) ? ticket_exchange($Seats->maxPrice,$tdzNum,$iseven) : ''; + $wzNum = isset($wzNum) ? ticket_exchange($Seats->maxPrice,$wzNum,$iseven) : ''; + $ywNum = isset($ywNum) ? ticket_exchange($Seats->maxPrice,$ywNum,$iseven) : ''; + $yzNum = isset($yzNum) ? ticket_exchange($Seats->maxPrice,$yzNum,$iseven) : ''; + $edzNum = isset($edzNum) ? ticket_exchange($Seats->maxPrice,$edzNum,$iseven) : ''; + $ydzNum = isset($ydzNum) ? ticket_exchange($Seats->maxPrice,$ydzNum,$iseven) : ''; + $swzNum = isset($swzNum) ? ticket_exchange($Seats->maxPrice,$swzNum,$iseven) : ''; + $dwNum = isset($dwNum) ? ticket_exchange($Seats->maxPrice,$dwNum,$iseven) : ''; + $ydwNum = isset($ydwNum) ? ticket_exchange($Seats->maxPrice,$ydwNum,$iseven) : ''; + $erwNum = isset($erwNum) ? ticket_exchange($Seats->maxPrice,$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; @@ -399,6 +619,62 @@ class innerTrainSearch extends CI_Controller{ }else{ echo json_encode($ReturnData); } + + } + } + + //App项目组的接口 + public function appGroupApi($train_date=null,$fromStation=null,$toStation=null,$return=false){ + set_time_limit(0); + + //判断数据是否合法 + if(!$train_date || !$fromStation || !$toStation){ + exit('传参不能为空!'); + }else{ + if(strlen($fromStation) != 3){ + exit('fromStation:参数错误!'); + } + if(strlen($toStation) != 3){ + exit('toStation:参数错误!'); + } + + $api_start_time = microtime(true); + $train_date = date('Y-m-d', strtotime($train_date)); // 调整格式:YYYY-mm-dd + //调用查询模块 + $this->train_date = $train_date; + $now_time = time(); + $this->differ_time = (strtotime($train_date) - $now_time) / 86400; + $this->seveth = false; + //屏蔽掉超过预售期的搜索 ,修改预售期为15天,不再是30天 + if($this->differ_time > 14){ + $train_date = date('Y-m-d',strtotime('+7day')); + $this->seveth = true; + } + $appGroupUrl = "http://106.14.5.249:8016/otn/leftTicket/query?leftTicketDTO.train_date=2022-07-15&leftTicketDTO.from_station=GLZ&leftTicketDTO.to_station=NNZ&purpose_codes=ADULT"; + //$appGroupUrl = "http://106.14.5.249:8185/otn/leftTicket/query?leftTicketDTO.train_date=2022-07-15&leftTicketDTO.from_station=GLZ&leftTicketDTO.to_station=NNZ&purpose_codes=ADULT"; + $this->url = $appGroupUrl; + $train_info = GetPost_http($this->url); + + //$search_return = $train_info; + $api_end_time = microtime(true); + + //调用拼接处理模块 + $trainjson = json_encode($train_info); + $end_time = microtime(true); + + //聚合接口相应时间 + $api_responsive_time = $api_end_time - $api_start_time; + + //我们的接口相应时间 + $responsive_time = $end_time - $this->start_time; + log_message('error','TRAINSPEED|请求url:'.$this->url.'|APP项目组相应时间:'.$api_responsive_time.'s|接口运行时间:'.$responsive_time.'s|+7天:'.$this->seveth); + + if($return){ + return ($trainjson); + }else{ + echo ($trainjson); + } + } } @@ -472,6 +748,63 @@ class innerTrainSearch extends CI_Controller{ } } + public function testgetstation(){ + $TimeStamp = date("Y-m-d H:i:s"); + //$TimeStamp = time(); + $serviceName = "train.getAllStations"; + $companyId = "4003171843"; + $key = "hajkrtbc"; + $strSign = $TimeStamp.$serviceName.$companyId.$key; + $sign = md5($strSign); + $u_sign = md5($this->unicode_encode($strSign)); + $E_sign = md5(urlencode($strSign)); + echo($strSign . "
"); + echo($sign. "
"); + echo($u_sign. "
"); + echo($E_sign. "
"); + $JSONRETURN = "http://apiproxy-uat.ctripqa.com/apiproxy/soa2/19946"; + //$JSONRETURN = "https://apiproxy.ctrip.com/apiproxy/soa2/19946"; + $data["TimeStamp"] = $TimeStamp; + $data["serviceName"] = $serviceName; + $data["companyId"] = $companyId; + $data["messageIdentity"] = $sign; + //$post_data = 'timeStamp='.$TimeStamp.'&serviceName='.$serviceName.'&companyId='.$companyId.'&messageIdentity='.$sign; //array("TimeStamp"=>$TimeStamp,"serviceName"=>$serviceName,"companyId"=>$companyId,"messageIdentity"=>$sign); + // $url = $JSONRETURN.'/getAllStations/?&timeStamp='.$TimeStamp.'&serviceName='.$serviceName.'&companyId='.$companyId.'&messageIdentity='.$sign; + //echo ($post_data); + + $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; + + $url = $JSONRETURN."/getAllStations"; + echo json_encode($post_data)."
" ; + + + $serviceName_Trains = "train.searchTrainsBetweenStations"; + $sign_train = md5($TimeStamp.$serviceName_Trains.$companyId.$key); + $post_data_train = new stdClass(); + $post_data_train->authentication = new stdClass(); + $post_data_train->authentication->timeStamp = $TimeStamp; + $post_data_train->authentication->serviceName = $serviceName_Trains; + $post_data_train->authentication->companyId = $companyId; + $post_data_train->authentication->messageIdentity = $sign_train; + $post_data_train->searchTrainsParam = new stdClass(); + $post_data_train->searchTrainsParam->departDate = "2022-07-23"; + $post_data_train->searchTrainsParam->fromStationName = "北京"; + $post_data_train->searchTrainsParam->toStationName = "上海"; + + echo json_encode($post_data_train); + + + //$ResponseJson = GetPost_http($url,json_encode($post_data),'json'); + //echo $ResponseJson; + //echo json_decode($ResponseJson); + + } + //查询中转方案(基于携程api) public function gettraintrainsfer(){ $FromCode = $this->input->get_post('FromCode'); @@ -648,4 +981,30 @@ class innerTrainSearch extends CI_Controller{ } print_r(json_encode($return_data)); } + + + //字符串转Unicode编码 + function unicode_encode($strLong) { + $strArr = preg_split('/(?