diff --git a/application/third_party/train/controllers/search.php b/application/third_party/train/controllers/search.php index ed61c05e..80c0582b 100644 --- a/application/third_party/train/controllers/search.php +++ b/application/third_party/train/controllers/search.php @@ -11,7 +11,12 @@ class search extends CI_Controller{ //查询聚合余票接口,对返回的数据进行处理 public function index($train_date=null,$fromStation=null,$toStation=null){ - set_time_limit(0); + //定义一些变量 + $flag = true; + $juheTrainInfo = ''; + set_time_limit(0); + + //判断数据是否合法 if(!$train_date || !$fromStation || !$toStation){ exit('传参不能为空!'); }else{ @@ -21,48 +26,82 @@ class search extends CI_Controller{ if(strlen($toStation) != 3){ exit('toStation:参数错误!'); } - $this->train_date = $train_date; - //$url = 'http://op.juhe.cn/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; - $url = 'http://139.129.246.118:12309/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; - $back_data = $this->get_http($url); - //特殊车次处理(贵阳 -- 重庆) - /*if(($fromStation == 'GIW') && ($toStation == 'CQW') && (strtotime($train_date) - strtotime('2018-01-16') >= 0)){ - exit('{"httpstatus":200,"reason":"特殊车次不开车","data":{"result":""}}'); - }*/ + //调用查询模块 + $search_return = $this->Searchtrain($train_date,$fromStation,$toStation); - $firstdata = $back_data; - $return_data = new stdClass(); - $cache = 'no'; + //调用数据处理模块 + $returnJson = $this->dataOperate($search_return,$fromStation,$toStation); - if(empty($back_data) || empty(json_decode($back_data)->result)){ - $obj = $this->BIZ_train_model->get_train_info($fromStation,$toStation); - if($obj){ - $back_data = $obj->tpc_content; - $cache = 'yes'; - $this->cache = true; - $reason = '接口数据为空,调用缓存'; - log_message('error','查询为空的链接:'.$url.'|出错的原因:'.$firstdata.'|调用缓存号:'.$obj->tpc_sn.'|缓存生成的时间:'.$obj->tpc_datetime); + //调用拼接处理模块 + $trainjson = $this->createTrainJson($returnJson); + + print_r($trainjson); + } + } + + //搜索模块 + function Searchtrain($train_date,$fromStation,$toStation){ + $this->train_date = $train_date; + $now_time = time(); + $differ_time = (strtotime($train_date) - $now_time) / 86400; + //屏蔽掉超过预售期的搜索,提高速度 + if($differ_time > 29){ + $train_date = date('Y-m-d',strtotime('+7day')); + $this->seventh = true; + } + $url = 'http://139.129.246.118:12309/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; + $this->url = $url; + $train_info = $this->get_http($url); + //如果为网络错误就再执行一次 + if(json_decode($train_info)->reason == '网络故障,请重试(0)'){ + $train_info = $this->get_http($url); + } + return $train_info; + } + + //缓存处理模块(包含缓存处理) + function dataOperate($search_return,$fromStation,$toStation){ + $this->reason = json_decode($search_return)->reason; + $this->cache = 'no'; + if(!empty($search_return) && !empty(json_decode($search_return)->result)){ + $this->BIZ_train_model->addOrUpdate($fromStation,$toStation,$search_return); + $operate_data = $search_return; + }else{ + $cache_train_info = $this->BIZ_train_model->get_train_info($fromStation,$toStation); + if(empty($cache_train_info)){ + $operate_data = null; + }else{ + $cache_time = $cache_train_info->tpc_datetime; + $now_time = time(); + $differ_time = ($now_time - strtotime($cache_time)) / 86400; + if($differ_time >= 3){ + $this->delete_traincache($fromStation,$toStation); }else{ - $reason = '接口数据为空,缓存也为空'; - log_message('error','查询为空的链接:'.$url.'|出错的原因:'.$firstdata.'|缓存为空'); + $this->cache = 'yes'; + $operate_data = $cache_train_info->tpc_content; + log_message('error','查询为空的链接:'.$this->url.'|出错的原因:'.$this->reason.'|调用缓存号:'.$cache_train_info->tpc_sn.'|缓存生成的时间:'.$cache_train_info->tpc_datetime); } - }else{ - $reason = json_decode($back_data)->reason; - $this->BIZ_train_model->addOrUpdate($fromStation,$toStation,$back_data); } - - $return_data->httpstatus = 200; - $return_data->reason = $reason; - $return_data->cache = $cache; - $return_data->data = new stdClass(); - $return_data->data->result = array(); - $return_data->data->map = new stdClass(); - $obj = array(); - $i = 0; - $pricestr = ''; - if(!empty(json_decode($back_data)->result->list)){ - foreach (json_decode($back_data)->result->list as $value){ + } + return $operate_data; + } + + //字符串拼接模块 + function createTrainJson($returnjson){ + $return_data = new stdClass(); + $return_data->data = new stdClass(); + $return_data->httpstatus = 200; + $return_data->reason = $this->reason; + $return_data->cache = $this->cache; + $return_data->data->result = array(); + $return_data->data->map = new stdClass(); + $obj = array(); + $i = 0; + $pricestr = ''; + if(!empty($returnjson)){ + if(!empty(json_decode($returnjson)->result->list)){ + foreach (json_decode($returnjson)->result->list as $value){ $obj[$value->from_station_code] = $value->from_station_name; $obj[$value->to_station_code] = $value->to_station_name; $seat_type = ''; @@ -141,12 +180,14 @@ class search extends CI_Controller{ $i++; } } - $return_data->data->map = (object)$obj; - print_r(json_encode($return_data)); - } + + } + $return_data->data->map = (object)$obj; + return json_encode($return_data); } - //获取价格 + + //获取价格(废弃) /* fromStationCode:出发站三字码 toStationCode:终点站三字码 @@ -167,7 +208,7 @@ class search extends CI_Controller{ //余票转换 function ticket_exchange($num){ - if(isset($this->cache)){ + if($this->cache == 'yes'){ $time = strtotime($this->train_date) - time(); $day = $time / 86400; if($day > 15){ diff --git a/application/third_party/train/controllers/searchnew.php b/application/third_party/train/controllers/searchold.php similarity index 71% rename from application/third_party/train/controllers/searchnew.php rename to application/third_party/train/controllers/searchold.php index c02fa71a..ed61c05e 100644 --- a/application/third_party/train/controllers/searchnew.php +++ b/application/third_party/train/controllers/searchold.php @@ -2,7 +2,7 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); -class searchnew extends CI_Controller{ +class search extends CI_Controller{ public function __construct(){ parent::__construct(); @@ -11,13 +11,7 @@ class searchnew extends CI_Controller{ //查询聚合余票接口,对返回的数据进行处理 public function index($train_date=null,$fromStation=null,$toStation=null){ - //定义一些变量 - $cache = 'no'; - $flag = true; - $juheTrainInfo = ''; - set_time_limit(0); - - //判断数据是否合法 + set_time_limit(0); if(!$train_date || !$fromStation || !$toStation){ exit('传参不能为空!'); }else{ @@ -28,96 +22,47 @@ class searchnew extends CI_Controller{ exit('toStation:参数错误!'); } $this->train_date = $train_date; - $now_time = time(); - $differ_time = (strtotime($train_date) - $now_time) / 86400; - if($differ_time <= 29){ - //调用聚合搜索模块 - $juheTrainInfo = $this->juheSearch($train_date,$fromStation,$toStation); - if(empty($juheTrainInfo)){ - $flag = 'error'; - } - }else{ - $flag = 'cache'; - } + //$url = 'http://op.juhe.cn/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; + $url = 'http://139.129.246.118:12309/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; + $back_data = $this->get_http($url); - //调用数据处理模块。 - $returnJson = $this->dataOperate($juheTrainInfo,$flag,$fromStation,$toStation); + //特殊车次处理(贵阳 -- 重庆) + /*if(($fromStation == 'GIW') && ($toStation == 'CQW') && (strtotime($train_date) - strtotime('2018-01-16') >= 0)){ + exit('{"httpstatus":200,"reason":"特殊车次不开车","data":{"result":""}}'); + }*/ - //调用拼接处理模块 - $trainjson = $this->createTrainJson($returnJson); + $firstdata = $back_data; + $return_data = new stdClass(); + $cache = 'no'; - print_r($trainjson); - die(); - } - } - - //搜索模块 - function juheSearch($train_date,$fromStation,$toStation){ - $url = 'http://139.129.246.118:12309/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation; - $this->url = $url; - $juheTrainInfo = $this->get_http($url); - if($this->validateJuhe($juheTrainInfo)){ - return $juheTrainInfo; - }else{ - return null; - } - } - - - //缓存处理模块(包含缓存处理) - function dataOperate($trainInfo,$flag,$fromStation,$toStation){ - if($flag == 'error'){ - $research = $this->juheSearch($this->train_date,$fromStation,$toStation); - if($this->validateJuhe($research)){ - $trainInfo = $research; - }else{ - $flag = 'cache'; - } - } - - if($flag == 'cache'){ - $cacheTrainInfo = $this->BIZ_train_model->get_train_info($fromStation,$toStation); - if(empty($cacheTrainInfo)){ - return null; + if(empty($back_data) || empty(json_decode($back_data)->result)){ + $obj = $this->BIZ_train_model->get_train_info($fromStation,$toStation); + if($obj){ + $back_data = $obj->tpc_content; + $cache = 'yes'; + $this->cache = true; + $reason = '接口数据为空,调用缓存'; + log_message('error','查询为空的链接:'.$url.'|出错的原因:'.$firstdata.'|调用缓存号:'.$obj->tpc_sn.'|缓存生成的时间:'.$obj->tpc_datetime); + }else{ + $reason = '接口数据为空,缓存也为空'; + log_message('error','查询为空的链接:'.$url.'|出错的原因:'.$firstdata.'|缓存为空'); + } }else{ - $cache_time = $cacheTrainInfo->tpc_datetime; - $now_time = time(); - $differ_time = ($now_time - strtotime($cache_time)) / 86400; - if($differ_time >= 7){ - $this->delete_traincache($fromStation,$toStation); - $research = $this->juheSearch(strtotime('+7day'),$fromStation,$toStation); - if($this->validateJuhe($research)){ - $trainInfo = $research; - }else{ - return null; - } - } + $reason = json_decode($back_data)->reason; + $this->BIZ_train_model->addOrUpdate($fromStation,$toStation,$back_data); } - } - $this->BIZ_train_model->addOrUpdate($fromStation,$toStation,$trainInfo); - return $trainInfo; - } - - //字符串拼接模块 - function createTrainJson($returnJson){ - - if(empty($returnJson)){ - - }else{ - $return_data = new stdClass(); - $return_data->data = new stdClass(); + $return_data->httpstatus = 200; - //$return_data->reason = $reason; - //$return_data->cache = $cache; + $return_data->reason = $reason; + $return_data->cache = $cache; + $return_data->data = new stdClass(); $return_data->data->result = array(); $return_data->data->map = new stdClass(); $obj = array(); $i = 0; $pricestr = ''; - //print_r(json_decode($returnJson)); - //die(); - if(!empty(json_decode($returnJson)->result->list)){ - foreach (json_decode($returnJson)->result->list as $value){ + if(!empty(json_decode($back_data)->result->list)){ + foreach (json_decode($back_data)->result->list as $value){ $obj[$value->from_station_code] = $value->from_station_name; $obj[$value->to_station_code] = $value->to_station_name; $seat_type = ''; @@ -196,13 +141,12 @@ class searchnew extends CI_Controller{ $i++; } } - $return_data->data->map = (object)$obj; - print_r($return_data); - } + $return_data->data->map = (object)$obj; + print_r(json_encode($return_data)); + } } - - //获取价格(废弃) + //获取价格 /* fromStationCode:出发站三字码 toStationCode:终点站三字码 @@ -221,16 +165,6 @@ class searchnew extends CI_Controller{ } } - //验证聚合返回的信息是否正确 - function validateJuhe($trainInfo){ - if(!empty($trainInfo) && !empty(json_decode($trainInfo)->result)){ - return true; - }else{ - return false; - } - } - - //余票转换 function ticket_exchange($num){ if(isset($this->cache)){ diff --git a/application/views/bootstrap3/header.php b/application/views/bootstrap3/header.php index 02a83824..65a5bcbf 100644 --- a/application/views/bootstrap3/header.php +++ b/application/views/bootstrap3/header.php @@ -5,7 +5,7 @@