diff --git a/application/third_party/flightsystem/controllers/api.php b/application/third_party/flightsystem/controllers/api.php index dbf9e3b3..d87b5cc1 100644 --- a/application/third_party/flightsystem/controllers/api.php +++ b/application/third_party/flightsystem/controllers/api.php @@ -1,229 +1,369 @@ load->helper('tuniu'); + $this->load->model('flight_model'); } - - public function index(){ + + public function index() + { exit('前方高能!!'); } - + //帐号绑定 - public function bindAccount(){ + public function bindAccount() + { $timestamp = time(); $data = '{"account":"phoebe@hainatravel.com","defaultPay":0}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $accountJson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", "function": "paymentSign", - "timestamp": '.$timestamp.', - "data":'.$data.' + "timestamp": ' . $timestamp . ', + "data":' . $data . ' }'; - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$accountJson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $accountJson, 'POST'); //print_r($returnData); echo $returnJson; - } - + //查询钱包接口 - public function checkWallet(){ + public function checkWallet() + { $timestamp = time(); $data = '{}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $walletJson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", "function": "tuNiuWalletInfo", - "timestamp": '.$timestamp.', - "data":'.$data.' + "timestamp": ' . $timestamp . ', + "data":' . $data . ' }'; - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$walletJson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $walletJson, 'POST'); //print_r($returnData); echo $returnJson; } - + //保险查询 - public function getinsurance(){ + public function getinsurance() + { $timestamp = time(); $data = '{}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $insuranceJson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", "function": "insurance", - "timestamp": '.$timestamp.', - "data":'.$data.' + "timestamp": ' . $timestamp . ', + "data":' . $data . ' }'; - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$insuranceJson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $insuranceJson, 'POST'); //print_r($returnData); echo $returnJson; } - + //查询接口 - public function searchForHt(){ + public function searchForHt() + { $departDate = $this->input->get_post('departDate'); $departCode = $this->input->get_post('departCode'); $arriveCode = $this->input->get_post('arriveCode'); - - if(empty($departDate) || empty($departCode) || empty($arriveCode)){ + + if (empty($departDate) || empty($departCode) || empty($arriveCode)) { exit('请传入正确的参数,如有疑问请联系CYC!!!'); } - - $url = 'https://www.trainspread.com/guide.php/flight/search/?departDate='.$departDate.'&departCode='.$departCode.'&arriveCode='.$arriveCode; + + $url = 'https://www.trainspread.com/guide.php/flight/search/?departDate=' . $departDate . '&departCode=' . $departCode . '&arriveCode=' . $arriveCode; $json = post_tuniu($url); $data['data'] = json_decode($json); - - $this->load->view('searchForHt',$data); + + $this->load->view('searchForHt', $data); } - + //下单接口 - public function addorders(){ + public function addorders() + { //接收参数 $departime = $this->input->get_post('departime'); $fromcode = $this->input->get_post('fromcode'); $tocode = $this->input->get_post('tocode'); $flightnumber = $this->input->get_post('flightnumber'); - + //测试数据 $deparTime = '2019-11-15'; $fromCode = 'BJS'; $toCode = 'SHA'; $flightNumber = 'KN5955'; - + //查询到sessionid - $searchJson = get_serach_json($deparTime,$fromCode,$toCode,$flightNumber); - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$searchJson,'POST'); + $searchJson = get_serach_json($deparTime, $fromCode, $toCode, $flightNumber); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $searchJson, 'POST'); $returnData = json_decode($returnJson); $sessionId = $returnData->data->queryResultList['0']->resourceList['0']->sessionId; //$sessionId = 'eyJuYW1lIjoiZGlzdE5ldyIsImZrIjoiTkFZI1NIQSNLTjU5NTUjMjAxOS0wOC0xNSIsInNpIjo4LCJjYSI6IlkiLCJjbyI6IkgiLCJhcCI6IjUxOCIsImNwIjoiNzcyIn0'; echo $sessionId; - + //获取航班信息,订单信息 - - + + //拼接下单报文 - $data = '{"contactTel":"18877381547","flight":{"adtPrice":1111,"arriveCityCode":"'.$toCode.'","cabinClass":"Y","cabinCode":"H","departureCityCode":"'.$fromCode.'","departureDate":"'.$deparTime.'","flightNum":"'.$flightNumber.'"},"remark":"haina123456","sessionId":"'.$sessionId.'","touristList":[{"birthday":"1992-08-13","firstName":"chen","lastName":"yuchao","name":"陈宇超","personType":"ADT","psptId":"450302199208131039","psptType":1,"tel":"18877381547"}]}'; + $data = '{"contactTel":"18877381547","flight":{"adtPrice":1111,"arriveCityCode":"' . $toCode . '","cabinClass":"Y","cabinCode":"H","departureCityCode":"' . $fromCode . '","departureDate":"' . $deparTime . '","flightNum":"' . $flightNumber . '"},"remark":"haina123456","sessionId":"' . $sessionId . '","touristList":[{"birthday":"1992-08-13","firstName":"chen","lastName":"yuchao","name":"陈宇超","personType":"ADT","psptId":"450302199208131039","psptType":1,"tel":"18877381547"}]}'; $timestamp = time(); - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $bookJson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", - "timestamp": '.$timestamp.', + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", + "timestamp": ' . $timestamp . ', "function": "createOrder", - "data":'.$data.' + "data":' . $data . ' }'; //echo $bookJson;die(); - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$bookJson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $bookJson, 'POST'); //print_r($returnData); echo $returnJson; //生成报文 } - + //请求支付接口 - public function payorders(){ + public function payorders() + { $order = $this->input->get_post('order'); $order = '1226443588'; - - if(empty($order)){ + + if (empty($order)) { exit('订单号为空'); - }else{ + } else { //拼接支付报文 $timestamp = time(); - $data = '{"account":"phoebe@hainatravel.com","orderId":"'.$order.'","payType":1}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $data = '{"account":"phoebe@hainatravel.com","orderId":"' . $order . '","payType":1}'; + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $payjson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", - "timestamp": '.$timestamp.', + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", + "timestamp": ' . $timestamp . ', "function": "paymentOrder", - "data":'.$data.' + "data":' . $data . ' }'; - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$payjson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $payjson, 'POST'); echo $returnJson; } } - + //单个订单详情查询接口 - public function getorderinfos(){ + public function getorderinfos() + { $order = $this->input->get_post('order'); - - if(empty($order)){ + + if (empty($order)) { exit('订单号为空'); - }else{ + } else { //拼接支付报文 $timestamp = time(); - $data = '{"orderId":"'.$order.'"}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $data = '{"orderId":"' . $order . '"}'; + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $orderinfojson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", - "timestamp": '.$timestamp.', + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", + "timestamp": ' . $timestamp . ', "function": "orderDetail", - "data":'.$data.' + "data":' . $data . ' }'; - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$orderinfojson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $orderinfojson, 'POST'); echo $returnJson; } } - + //机票退票费查询接口 - public function refundfee(){ + public function refundfee() + { $order = $this->input->get_post('order'); $ticketcode = $this->input->get_post('ticketcode'); $order = '1226443588'; $ticketcode = '822-2386171483'; - - if(empty($order)){ + + if (empty($order)) { exit('订单号为空'); - }else{ + } else { //拼接支付报文 $timestamp = time(); - $data = '{"orderId":'.$order.',"ticketCodeList":["'.$ticketcode.'"]}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $data = '{"orderId":' . $order . ',"ticketCodeList":["' . $ticketcode . '"]}'; + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $refundfeejson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", - "timestamp":'.$timestamp.', + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", + "timestamp":' . $timestamp . ', "function":"refundFee", - "data":'.$data.' + "data":' . $data . ' }'; //echo $refundfeejson;die(); - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$refundfeejson,'POST'); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $refundfeejson, 'POST'); echo $returnJson; } } - + //机票退票接口 - public function refundapply(){ + public function refundapply() + { $order = $this->input->get_post('order'); $ticketcode = $this->input->get_post('ticketcode'); $order = '1226443588'; $ticketcode = '822-2386171483'; - - if(empty($order)){ + + if (empty($order)) { exit('订单号为空'); - }else{ + } else { //拼接支付报文 $timestamp = time(); - $data = '{"attachmentList":[],"orderId":"'.$order.'","refundReason":"行程调整","refundType":1,"ticketCodeList":["'.$ticketcode.'"]}'; - $sign = md5(TUNIU_FLIGHT_KEY.$data.$timestamp); + $data = '{"attachmentList":[],"orderId":"' . $order . '","refundReason":"行程调整","refundType":1,"ticketCodeList":["' . $ticketcode . '"]}'; + $sign = md5(TUNIU_FLIGHT_KEY . $data . $timestamp); $returnorderjson = '{ - "purchaseId": '.TUNIU_FLIGHT_ID.', - "sign": "'.$sign .'", - "timestamp": '.$timestamp.', + "purchaseId": ' . TUNIU_FLIGHT_ID . ', + "sign": "' . $sign . '", + "timestamp": ' . $timestamp . ', "function": "refundApply", - "data":'.$data.' + "data":' . $data . ' }'; - echo $returnorderjson;die(); - $returnJson = post_tuniu(TUNIU_FLIGHT_API,$returnorderjson,'POST'); + echo $returnorderjson; + die(); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $returnorderjson, 'POST'); echo $returnJson; } } - - -} \ No newline at end of file + + + + //返回三字码接口 + public function ajaxGetCodeAndName($flag = false) + { + //http://202.103.68.104:61/info.php/apps/flightsystem/api/ajaxGetCodeAndName/ //测试地址 + $returnData = new stdClass(); + $allCityNameAndCode = $this->flight_model->getAllCityCodeAndName(); + $returnJson = json_encode($allCityNameAndCode); + + //return $returnJson; + if ($flag) { + return $returnJson; + } else { + echo $returnJson; + } + } + + //获取所有机场信息 + public function ajaxGetAirPort() + { + + $returnData = new stdClass(); + $airPortCodeAndName = $this->flight_model->getAllAirPort(); + $returnData = array(); + foreach ($airPortCodeAndName as $items) { + $returnData[$items->air_threeChar] = $items->air_english_name; + } + $returnJson = json_encode($returnData); + + print_r($returnJson); + } + + //查询接口 + public function search() + { + //http://202.103.68.104:61/info.php/apps/flightsystem/api/search/?departDate=2021-09-04&departCode=BJS&arriveCode=KWL //测试地址 + $departDate = $this->input->get_post('departDate'); + $departCode = $this->input->get_post('departCode'); + $arriveCode = $this->input->get_post('arriveCode'); + $flightnumber = $this->input->get_post('flightnumber'); + + if (empty($departDate) || empty($departCode) || empty($arriveCode)) { + exit('error'); + } + + $postJson = get_serach_json($departDate, $departCode, $arriveCode, $flightnumber); + //echo $postJson;die(); + $returnJson = post_tuniu(TUNIU_FLIGHT_API, $postJson, 'POST'); + $returnData = json_decode($returnJson); + //print_r($returnJson);die(); + $cacheData = new stdClass(); + if (!empty($returnData)) { + $cacheData->success = $returnData->success; + $cacheData->msg = $returnData->msg; + $cacheData->errorCode = $returnData->errorCode; + $cacheData->queryResultList = array(); + $i = 0; + //$airPortCodeAndName = json_decode($redis->get('airPortCodeAndName')); + $airPortCodeAndName = $this->ajaxGetCodeAndName(true); + //print_r($airPortCodeAndName);die(); + foreach ($returnData->data->queryResultList as $items) { + $cacheData->queryResultList[$i] = new stdClass(); + $cacheData->queryResultList[$i]->flight = new stdClass(); + + //航班信息 + $cacheData->queryResultList[$i]->flight->flightNo = $items->flight->flightNo; + $cacheData->queryResultList[$i]->flight->craftType = $items->flight->craftType; + $cacheData->queryResultList[$i]->flight->airlineCompany = $items->flight->airlineCompany; + $cacheData->queryResultList[$i]->flight->airlineIataCode = $items->flight->airlineIataCode; + $cacheData->queryResultList[$i]->flight->arriveAirportCode = $items->flight->arriveAirportCode; + $cacheData->queryResultList[$i]->flight->arriveAirportName = $items->flight->arriveAirportName; + $arriveAirportCode = $items->flight->arriveAirportCode; + $cacheData->queryResultList[$i]->flight->arriveAirportNameEn = $this->flight_model->getAirPortNameEn($items->flight->arriveAirportCode); //$airPortCodeAndName->$arriveAirportCode; + $cacheData->queryResultList[$i]->flight->arriveAirportTerminal = $items->flight->arriveAirportTerminal; + $cacheData->queryResultList[$i]->flight->arriveCityIataCode = $items->flight->arriveCityIataCode; + $cacheData->queryResultList[$i]->flight->arriveCityName = $items->flight->arriveCityName; + $cacheData->queryResultList[$i]->flight->arriveDate = $items->flight->arriveDate; + $cacheData->queryResultList[$i]->flight->arriveTime = $items->flight->arriveTime; + $cacheData->queryResultList[$i]->flight->departAirportCode = $items->flight->departAirportCode; + $cacheData->queryResultList[$i]->flight->departAirportName = $items->flight->departAirportName; + $departAirportCode = $items->flight->departAirportCode; + $cacheData->queryResultList[$i]->flight->departAirportNameEn = $this->flight_model->getAirPortNameEn($items->flight->departAirportCode); //$airPortCodeAndName->$departAirportCode; + $cacheData->queryResultList[$i]->flight->departAirportTerminal = $items->flight->departAirportTerminal; + $cacheData->queryResultList[$i]->flight->departCityIataCode = $items->flight->departCityIataCode; + $cacheData->queryResultList[$i]->flight->departCityName = $items->flight->departCityName; + $cacheData->queryResultList[$i]->flight->departDate = $items->flight->departDate; + $cacheData->queryResultList[$i]->flight->departTime = $items->flight->departTime; + $cacheData->queryResultList[$i]->flight->duration = $items->flight->duration; + $cacheData->queryResultList[$i]->flight->meal = $items->flight->meal; + $cacheData->queryResultList[$i]->flight->stopInformation = $items->flight->stopInformation; + $cacheData->queryResultList[$i]->flight->stopNum = $items->flight->stopNum; + $cacheData->queryResultList[$i]->flight->stopPointList = $items->flight->stopPointList; + + //航班对应可用的资源列表 + $cacheData->queryResultList[$i]->resourceList = array(); + $j = 0; + foreach ($items->resourceList as $resourceItems) { + $cacheData->queryResultList[$i]->resourceList[$j] = new stdClass(); + $cacheData->queryResultList[$i]->resourceList[$j]->price = new stdClass(); + $cacheData->queryResultList[$i]->resourceList[$j]->price->adultPrice = $resourceItems->price->adultPrice; + $cacheData->queryResultList[$i]->resourceList[$j]->price->childPrice = $resourceItems->price->childPrice; + $cacheData->queryResultList[$i]->resourceList[$j]->price->adultFacePrice = $resourceItems->price->adultFacePrice; + $cacheData->queryResultList[$i]->resourceList[$j]->price->childFacePrice = $resourceItems->price->childFacePrice; + $cacheData->queryResultList[$i]->resourceList[$j]->price->cabinClassFullPrice = $resourceItems->price->cabinClassFullPrice; + $cacheData->queryResultList[$i]->resourceList[$j]->price->adultTax = $resourceItems->price->adultTax; + + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList = array(); + $k = 0; + foreach ($resourceItems->cabinList as $cabinListItems) { + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k] = new stdClass(); + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k]->cabinClass = $cabinListItems->cabinClass; + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k]->cabinClassName = $cabinListItems->cabinClassName; + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k]->freeLuggage = $cabinListItems->freeLuggage; + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k]->freeLuggageUnit = $cabinListItems->freeLuggageUnit; + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k]->billType = $cabinListItems->billType; + $cacheData->queryResultList[$i]->resourceList[$j]->cabinList[$k]->seatStatus = $cabinListItems->seatStatus; + + $k++; + } + $j++; + } + $i++; + } + + print_r(json_encode($cacheData)); + } + } +} diff --git a/application/third_party/flightsystem/models/flight_model.php b/application/third_party/flightsystem/models/flight_model.php new file mode 100644 index 00000000..2efb2e7c --- /dev/null +++ b/application/third_party/flightsystem/models/flight_model.php @@ -0,0 +1,77 @@ +INFO = $this->load->database('INFO', TRUE); + $this->HT=$this->load->database('HT',TRUE); + } + + + //public $FlightAPI_Code = "http://202.103.68.156:9032"; //本地 + public $FlightAPI_Code = "https://www.trainspread.com"; //网前 + + public function getAllCityCodeAndName(){ + $sql = "select city_chinese_name,city_english_name,city_threeChar from city_threeChar"; + $query = $this->INFO->query($sql); + return $query->result(); + } + + public function getAllAirPort(){ + $sql = "select air_threeChar,air_english_name from air_threeChar"; + $query = $this->INFO->query($sql); + return $query->result(); + } + + /** + * 根据机场code获取对于的机场英文名 20201229 zp 接口数据突然无法获取机场英文名,估计是删除缓存获取以后的错误 + */ + public function getAirPortNameEn($code){ + $sql = "select top 1 air_english_name from air_threeChar where air_threeChar ='".$code."'"; + $query = $this->INFO->query($sql); + $row = $query->row(); + if (isset($row)){ + return $row->air_english_name; + }else{ + return ""; + } + } + + /* + * 根据三字码获取对应城市的英文名称 + */ + public function getCityNameFromCode($code){ + $result = ""; + $Url_FlightCode = $this->FlightAPI_Code."/flight/ajaxGetCodeAndName/"; + $FlightCodeList = get_http($Url_FlightCode); //获取接口机场列表Json + $Json_FlightCode = json_decode($FlightCodeList); + if (!empty($code)){ + foreach($Json_FlightCode as $Item){ + if ($Item->city_threeChar==$code){ + $result=$Item->city_english_name; + break; + } + } + } + + return $result; + } + + /* + * 根据航线二字码获取对应的航空公司英文名 + */ + public function getAirlineNameEn($code){ + $sql = "select top 1 NameEN,NameCN from AirCompany where Code='".$code."'"; + $query = $this->HT->query($sql); + $row = $query->row(); + if (isset($row)){ + return $row->NameEN; + }else{ + return ""; + } + } + +} + + +?> \ No newline at end of file