|
|
|
@ -1,528 +0,0 @@
|
|
|
|
|
<?php
|
|
|
|
|
if (!defined('BASEPATH'))
|
|
|
|
|
exit('No direct script access allowed');
|
|
|
|
|
|
|
|
|
|
class check extends CI_Controller{
|
|
|
|
|
|
|
|
|
|
public function __construct(){
|
|
|
|
|
parent::__construct();
|
|
|
|
|
$this->load->model("BIZ_train_model");
|
|
|
|
|
$this->load->model("train_system_model");
|
|
|
|
|
$this->load->helper('train');
|
|
|
|
|
$this->db_train_zw = $this->config->item('db_train_zw');
|
|
|
|
|
$this->train_zw = $this->config->item('train_zw');
|
|
|
|
|
$this->black_list = $this->config->item('black_list');
|
|
|
|
|
$this->isauto = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function index(){
|
|
|
|
|
//$this->BIZ_train_model->delete_other();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//1903241050
|
|
|
|
|
public function check_autotickets(){
|
|
|
|
|
log_message('error','auto ticket');
|
|
|
|
|
date_default_timezone_set('Asia/Shanghai');
|
|
|
|
|
//判断账户余额,如果小于1000自动退出。
|
|
|
|
|
$post_data = array("key"=>JUHE_TRAIN_API_KEY);
|
|
|
|
|
$back_data = GetPost_http("http://op.juhe.cn/trainTickets/balance.php",$post_data);
|
|
|
|
|
$price = json_decode($back_data)->result;
|
|
|
|
|
print_r('账户余额:'.$price);
|
|
|
|
|
if($price < 1000){
|
|
|
|
|
exit('账户余额不足');
|
|
|
|
|
}
|
|
|
|
|
//筛选出能自动出票的订单
|
|
|
|
|
$auto_pool = $this->BIZ_train_model->auto_check_ticket();
|
|
|
|
|
|
|
|
|
|
//创建一个不允许自动出票的国际火车票数组
|
|
|
|
|
$nation_train = array('K19', 'K23', 'Z8701', 'Z8702', 'Z97', 'Z98', 'Z99', 'Z100', 'K9795');
|
|
|
|
|
|
|
|
|
|
//创建黑名单
|
|
|
|
|
$black_list = $this->config->item('black_list');
|
|
|
|
|
$string = '';
|
|
|
|
|
|
|
|
|
|
foreach($auto_pool as $item){
|
|
|
|
|
$this->isauto = 1;
|
|
|
|
|
$bpe_sn = '';
|
|
|
|
|
$back_message = '';
|
|
|
|
|
$cold_sn = $item->COLD_SN;
|
|
|
|
|
$coli_id = $item->coli_id;
|
|
|
|
|
$back_data = 1;
|
|
|
|
|
|
|
|
|
|
$people_arr = $this->BIZ_train_model->biz_people($cold_sn);
|
|
|
|
|
$train_info = $this->BIZ_train_model->get_biz_foi($cold_sn);
|
|
|
|
|
|
|
|
|
|
if($item->COLD_SPFS > 1){
|
|
|
|
|
//寄送票
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-邮寄不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//乘客人数大于5人不出票
|
|
|
|
|
if(count($people_arr) > 5){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-乘客人数大于5不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//护照号如果在黑名单的就不自动出票
|
|
|
|
|
foreach($people_arr as $people_info){
|
|
|
|
|
if(in_array($people_info->BPE_Passport,$black_list)){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-此用户为黑名单用户,不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(strlen($people_info->BPE_Passport) >= 18){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-护照位数大于18不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$bpe_sn .= $people_info->BPE_SN.',';
|
|
|
|
|
}
|
|
|
|
|
$bpe_sn = substr($bpe_sn,0,strlen($bpe_sn)-1);
|
|
|
|
|
|
|
|
|
|
//单张票价不能大于1000人民币
|
|
|
|
|
if($train_info[0]->adultcost > 1000){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-单价大于1000不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//如果为国际火车票就不出票
|
|
|
|
|
if(in_array($train_info[0]->FlightsNo, $nation_train)){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-国际火车票不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//无座的订单不做出票
|
|
|
|
|
if($train_info[0]->Aircraft == 'WZ'){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-无座不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//香港火车不自动出票
|
|
|
|
|
if($train_info[0]->DepartAirport == 'XJA'){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-香港火车不自动出票';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$DepartureDate = strtotime($train_info[0]->DepartureDate);
|
|
|
|
|
$time = time();
|
|
|
|
|
$depart_diff = ($DepartureDate - $time) / 86400;
|
|
|
|
|
|
|
|
|
|
if($train_info[0]->ArrivalAirport == 'XJA' && $train_info[0]->adultcost > 500 && $depart_diff > 5){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-内地香港火车金额大于500超过五天不自动出票';
|
|
|
|
|
}
|
|
|
|
|
//print_r($train_info);
|
|
|
|
|
|
|
|
|
|
//如果刚好是第三十天的订单
|
|
|
|
|
if(($item->COLI_State == '8' || $item->COLI_State == '63')){
|
|
|
|
|
$this->isauto = 3;
|
|
|
|
|
$time_obj = $this->BIZ_train_model->get_saletime($train_info['0']->DepartAirport_cn);
|
|
|
|
|
if(!empty($time_obj)){
|
|
|
|
|
$saletime = strtotime(date('Y-m-d').' '.$time_obj->TST_saletime);
|
|
|
|
|
//echo $saletime;
|
|
|
|
|
$sale_diff = (time() - $saletime) / 3600;
|
|
|
|
|
echo $cold_sn.'_'.date('Y-m-d').' '.$time_obj->TST_saletime.'/'.$saletime.'<br>';
|
|
|
|
|
if($sale_diff > 1){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-超过抢票时间';
|
|
|
|
|
}else if($sale_diff <0){
|
|
|
|
|
$back_data = 0;
|
|
|
|
|
$back_message .= '-未到抢票时间';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($back_data == 0){
|
|
|
|
|
$string .= '<tr><td>汉特订单号:'.$coli_id.'('.$cold_sn.'/'.$this->isauto.')'.$back_message.'</td></tr>';
|
|
|
|
|
}else{
|
|
|
|
|
//单个订单提交
|
|
|
|
|
echo $cold_sn.'<br>';
|
|
|
|
|
//$this->booktickets($cold_sn,$bpe_sn,'','juhe');
|
|
|
|
|
//$string .= '<tr><td>汉特订单号:'.$coli_id.'('.$cold_sn.')可以自动出票</td></tr>';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
print_r('<table border="1">'.$string.'</table>');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//创建一个方法用于接收所有的出票请求
|
|
|
|
|
public function booktickets($cold_sn=null,$bpe_sn=null,$selectseat=null,$type=null){
|
|
|
|
|
if(empty($cold_sn) && empty($bpe_sn)){
|
|
|
|
|
//接收子表订单号
|
|
|
|
|
$cold_sn = $this->input->get_post('order');
|
|
|
|
|
//接收客人表sn
|
|
|
|
|
$bpe_sn = $this->input->get_post("people");
|
|
|
|
|
//接收选座字符串
|
|
|
|
|
$selectseat = $this->input->get_post("selectseat");
|
|
|
|
|
//接收出票接口
|
|
|
|
|
$type = $this->input->get_post("type");
|
|
|
|
|
}
|
|
|
|
|
//测试数据
|
|
|
|
|
/*$cold_sn = '488121613';
|
|
|
|
|
$bpe_sn = '473183645,473183646,473183647';
|
|
|
|
|
$selectseat = '';
|
|
|
|
|
$type = 'juhe';*/
|
|
|
|
|
|
|
|
|
|
if(!is_numeric($cold_sn)){
|
|
|
|
|
$reback["mes"]="订单号是数字";
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(empty($bpe_sn)){
|
|
|
|
|
$reback["mes"]="请选择乘客";
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$data['train'] = $this->BIZ_train_model->biz_order_detail($cold_sn);
|
|
|
|
|
$data['people_list']=$this->BIZ_train_model->in_bpesn_people_info($bpe_sn);
|
|
|
|
|
|
|
|
|
|
if($selectseat == ''){
|
|
|
|
|
$selectseat = '';
|
|
|
|
|
$train_select = $data['train']->FOI_SelectedSeat;
|
|
|
|
|
$obj = explode(',',$train_select);
|
|
|
|
|
foreach($obj as $value){
|
|
|
|
|
$selectseat .= $value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (empty($data['train'])) {
|
|
|
|
|
//显示错误,找不到车次
|
|
|
|
|
$reback["mes"]="找不到车次";
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (empty($data['people_list'])) {
|
|
|
|
|
//显示错误,找不到用户信息
|
|
|
|
|
$reback["mes"]="找不到乘客信息";
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (count($data['people_list']) > 5) {
|
|
|
|
|
//显示错误,用户超过五个
|
|
|
|
|
$reback["mes"]="乘客不能超过五个";
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch ($type){
|
|
|
|
|
case 'juhe':
|
|
|
|
|
$this->juheModel($data,$selectseat,$cold_sn);
|
|
|
|
|
break;
|
|
|
|
|
case 'tuniu':
|
|
|
|
|
$this->tuniuModel($data,$selectseat,$cold_sn);
|
|
|
|
|
break;
|
|
|
|
|
case 'ctrip':
|
|
|
|
|
$this->ctripModel($data,$selectseat,$cold_sn);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function juheModel($data=null,$selectseat=null,$cold_sn=null){
|
|
|
|
|
$zwcode = $this->db_train_zw[$data['train']->Aircraft]; //座位简码
|
|
|
|
|
$zwname = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]]; //座位名称
|
|
|
|
|
|
|
|
|
|
//进行提交字符串的拼接
|
|
|
|
|
$passengers = "";
|
|
|
|
|
foreach ($data['people_list'] as $key => $item) {
|
|
|
|
|
//乘客姓名
|
|
|
|
|
$passengersename = $item->BPE_FirstName.$item->BPE_MiddleName.$item->BPE_LastName;
|
|
|
|
|
//将特殊字符转换为正常字符以便于出票
|
|
|
|
|
$passengersename = chk_sp_name($passengersename);
|
|
|
|
|
//乘客类型
|
|
|
|
|
switch ($item->BPE_GuestType) {
|
|
|
|
|
case 1:
|
|
|
|
|
$piaotype = 1;
|
|
|
|
|
$piaotypename = "成人票";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
$piaotype = 2;
|
|
|
|
|
$piaotypename = "儿童票";
|
|
|
|
|
break;
|
|
|
|
|
default://外国人应该就两种票吧
|
|
|
|
|
$piaotype = 1;
|
|
|
|
|
$piaotypename = "成人票";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//证件类型
|
|
|
|
|
switch ($item->BPE_PassportType){
|
|
|
|
|
case 'Chinese ID':
|
|
|
|
|
$passporttypeseid = "1";
|
|
|
|
|
$passporttypeseidname = "二代身份证";
|
|
|
|
|
break;
|
|
|
|
|
case 'Travel Permit from Hong Kong / Macau':
|
|
|
|
|
$passporttypeseid = "C";
|
|
|
|
|
$passporttypeseidname = "港澳通行证";
|
|
|
|
|
break;
|
|
|
|
|
case 'Travel Permit from Taiwan':
|
|
|
|
|
$passporttypeseid = "G";
|
|
|
|
|
$passporttypeseidname = "台湾通行证";
|
|
|
|
|
break;
|
|
|
|
|
default :
|
|
|
|
|
$passporttypeseid = "B";
|
|
|
|
|
$passporttypeseidname = "护照";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch ($item->BPE_SEX){
|
|
|
|
|
case '100003':
|
|
|
|
|
$sex = 'F';
|
|
|
|
|
break;
|
|
|
|
|
case '100001':
|
|
|
|
|
$sex = 'M';
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$passportseno = str_replace(' ','',$item->BPE_Passport);
|
|
|
|
|
|
|
|
|
|
//添加一个判断护照号是否在黑名单
|
|
|
|
|
if(in_array($passportseno,$this->black_list)){
|
|
|
|
|
$reback["mes"] = "乘客为黑名单用户";
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($passporttypeseid == 'G'){
|
|
|
|
|
$passengers .= ',{"passengerid":' . (++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"1","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","gatValidDateEnd":"'.$item->BPE_PassExpdate.'","gatBornDate":"'.$item->BPE_BirthDate.'","sexCode":"'.$sex.'"}';
|
|
|
|
|
}else{
|
|
|
|
|
$passengers .= ',{"passengerid":' . ( ++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"1","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '"}';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$passengers .= "]";
|
|
|
|
|
$passengers = substr($passengers, 1);
|
|
|
|
|
$passengers = "[" . $passengers;
|
|
|
|
|
if(empty($selectseat)){
|
|
|
|
|
$post_data=array(
|
|
|
|
|
"key"=>JUHE_TRAIN_API_KEY,
|
|
|
|
|
"user_orderid"=>$cold_sn,//自定义订单号
|
|
|
|
|
"train_date"=>substr($data["train"]->DepartureDate, 0, 10),
|
|
|
|
|
"is_accept_standing"=>"no",
|
|
|
|
|
"from_station_name"=>$data["train"]->DepartAirport_cn,
|
|
|
|
|
"from_station_code"=>$data["train"]->DepartAirport,
|
|
|
|
|
"to_station_code"=>$data["train"]->ArrivalAirport,
|
|
|
|
|
"to_station_name"=>$data["train"]->ArrivalAirport_cn,
|
|
|
|
|
"passengers"=>$passengers,
|
|
|
|
|
"checi"=>$data["train"]->FlightsNo
|
|
|
|
|
);
|
|
|
|
|
}else{
|
|
|
|
|
$post_data=array(
|
|
|
|
|
"key"=>JUHE_TRAIN_API_KEY,
|
|
|
|
|
"user_orderid"=>$cold_sn,//自定义订单号
|
|
|
|
|
"train_date"=>substr($data["train"]->DepartureDate, 0, 10),
|
|
|
|
|
"is_accept_standing"=>"no",
|
|
|
|
|
"choose_seats"=>$selectseat,
|
|
|
|
|
"from_station_name"=>$data["train"]->DepartAirport_cn,
|
|
|
|
|
"from_station_code"=>$data["train"]->DepartAirport,
|
|
|
|
|
"to_station_code"=>$data["train"]->ArrivalAirport,
|
|
|
|
|
"to_station_name"=>$data["train"]->ArrivalAirport_cn,
|
|
|
|
|
"passengers"=>$passengers,
|
|
|
|
|
"checi"=>$data["train"]->FlightsNo
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//发起请求
|
|
|
|
|
/*$add_data = new stdClass();
|
|
|
|
|
$back_json = GetPost_http('http://op.juhe.cn/trainTickets/submit',$post_data);
|
|
|
|
|
$back_data = json_decode($back_json);
|
|
|
|
|
|
|
|
|
|
if(!$back_data->error_code){
|
|
|
|
|
$add_data->ordernumber = $back_data->result->orderid;
|
|
|
|
|
$reback["status"] = 1;
|
|
|
|
|
$reback["order"] = $back_data->result->orderid;
|
|
|
|
|
$reback["mes"] = "订单提交成功,等待回调";
|
|
|
|
|
}else{
|
|
|
|
|
$add_data->ordernumber=null;
|
|
|
|
|
$reback["mes"] = $back_json;
|
|
|
|
|
$add_data->status = "e";
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
//本地订单入库
|
|
|
|
|
$add_data->cold_sn = $cold_sn;
|
|
|
|
|
$add_data->returncode = $back_data->error_code;
|
|
|
|
|
$add_data->status = '2';
|
|
|
|
|
$add_data->errormsg = '预定中';
|
|
|
|
|
$add_data->checi = $data['train']->FlightsNo;
|
|
|
|
|
$add_data->fromstationame = $data['train']->DepartAirport_cn;
|
|
|
|
|
$add_data->fromstationcode = $data['train']->DepartAirport;
|
|
|
|
|
$add_data->tostationame = $data['train']->ArrivalAirport_cn;
|
|
|
|
|
$add_data->tostationcode = $data['train']->ArrivalAirport;
|
|
|
|
|
$add_data->startdate = date('Y-m-d',strtotime($data['train']->DepartureDate));
|
|
|
|
|
$add_data->startime = date('H:i',strtotime($data['train']->DepartureTime));
|
|
|
|
|
$add_data->endtime = date('H:i',strtotime($data['train']->ArrivalTime));
|
|
|
|
|
$add_data->runtime = (strtotime($data['train']->ArrivalTime) - strtotime($data['train']->DepartureTime)) / 60;
|
|
|
|
|
$add_data->channel = 'juhe';
|
|
|
|
|
$add_data->isauto = $this->isauto;
|
|
|
|
|
print_r($add_data);
|
|
|
|
|
/*$this->train_system_model->add_orders($add_data);
|
|
|
|
|
echo json_encode($reback);
|
|
|
|
|
return false;*/
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function test_add(){
|
|
|
|
|
$add_data->cold_sn = '123123';
|
|
|
|
|
$add_data->returncode = '123123';
|
|
|
|
|
$add_data->status = '2';
|
|
|
|
|
$add_data->errormsg = '预定中';
|
|
|
|
|
$add_data->checi = 'G89';
|
|
|
|
|
$add_data->fromstationame = '北京';
|
|
|
|
|
$add_data->fromstationcode = 'BJP';
|
|
|
|
|
$add_data->tostationame = '上海';
|
|
|
|
|
$add_data->tostationcode = 'SHH';
|
|
|
|
|
$add_data->startdate = '2019-02-09';
|
|
|
|
|
$add_data->startime = '14:00';
|
|
|
|
|
$add_data->endtime = '19:00';
|
|
|
|
|
$add_data->runtime = '300';
|
|
|
|
|
$add_data->channel = 'juhe';
|
|
|
|
|
$add_data->isauto = 3;
|
|
|
|
|
print_r($add_data);
|
|
|
|
|
$this->train_system_model->add_orders($add_data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function juhecallback(){
|
|
|
|
|
/*$data_post = $this->input->post();
|
|
|
|
|
if(empty($data_post)){
|
|
|
|
|
header("HTTP/1.1 404 Not Found");
|
|
|
|
|
exit('{"reason":"empty infos","status":"404"}');
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
//调试代码
|
|
|
|
|
$test_post = '{"data":"{\"from_station_name\":\"\u5e7f\u5dde\u5357\",\"from_station_code\":\"IZQ\",\"to_station_name\":\"\u9999\u6e2f\u897f\u4e5d\u9f99\",\"to_station_code\":\"XJA\",\"train_date\":\"2019-04-29\",\"orderid\":\"JH155651319519711\",\"user_orderid\":\"488132483\",\"orderamount\":\"374.00\",\"ordernumber\":\"E244376926\",\"checi\":\"G6537\",\"msg\":\"\u51fa\u7968\u6210\u529f\",\"status\":\"4\",\"passengers\":[{\"passengerid\":1,\"passengersename\":\"PRIETORAMOSJORGECLAUDIO\",\"piaotype\":\"1\",\"piaotypename\":\"\u6210\u4eba\u7968\",\"passporttypeseid\":\"B\",\"passporttypeseidname\":\"\u62a4\u7167\",\"passportseno\":\"AAC408307\",\"price\":\"187.0\",\"zwcode\":\"O\",\"zwname\":\"\u4e8c\u7b49\u5ea7\",\"ticket_no\":\"E244376926111013D\",\"cxin\":\"11\u8f66\u53a2,13D\u5ea7\",\"reason\":0},{\"passengerid\":2,\"passengersename\":\"SALAZARNATALIAGISELA\",\"piaotype\":\"1\",\"piaotypename\":\"\u6210\u4eba\u7968\",\"passporttypeseid\":\"B\",\"passporttypeseidname\":\"\u62a4\u7167\",\"passportseno\":\"AAC419811\",\"price\":\"187.0\",\"zwcode\":\"O\",\"zwname\":\"\u4e8c\u7b49\u5ea7\",\"ticket_no\":\"E244376926111013F\",\"cxin\":\"11\u8f66\u53a2,13F\u5ea7\",\"reason\":0}],\"refund_money\":null,\"sign\":\"831c146e2ce223a5437ed78db0ec8c25\"}"}';
|
|
|
|
|
|
|
|
|
|
$data_post["data"] = json_decode($test_post)->data;
|
|
|
|
|
|
|
|
|
|
log_message('error','聚合回调:'.json_encode($data_post));
|
|
|
|
|
$data = json_decode($data_post["data"]);
|
|
|
|
|
|
|
|
|
|
$update_data = new StdClass();
|
|
|
|
|
$update_data->OrderStatus = $data->status;
|
|
|
|
|
$update_data->ordernumber = $data->orderid;
|
|
|
|
|
$update_data->OrderTotleFee = $data->orderamount;
|
|
|
|
|
$update_data->seatsinfo = '';
|
|
|
|
|
$update_data->TicketCheck = '';
|
|
|
|
|
$update_data->bookcallback = '';
|
|
|
|
|
$update_data->confirmcallback = '';
|
|
|
|
|
$update_data->returncallback = '';
|
|
|
|
|
$update_data->ElectronicOrderNumber = $data->ordernumber;
|
|
|
|
|
$update_data->reschedulecallback = '';
|
|
|
|
|
$update_data->ErrorMsg = $data->msg;
|
|
|
|
|
|
|
|
|
|
//如果返回2则发送出票请求
|
|
|
|
|
if($data->status == "1"){
|
|
|
|
|
$update_data->bookcallback = $data_post["data"];
|
|
|
|
|
}elseif($data->status == "2"){
|
|
|
|
|
$coach = array();
|
|
|
|
|
$seats = array();
|
|
|
|
|
$string = '';
|
|
|
|
|
$passagers = $data->passengers;
|
|
|
|
|
foreach($passagers as $item){
|
|
|
|
|
foreach(explode(',',$item->cxin) as $item_seat){
|
|
|
|
|
if(strpos($item_seat,'车厢')){
|
|
|
|
|
$item_seat = str_replace('车厢','',$item_seat);
|
|
|
|
|
array_push($coach,$item_seat);
|
|
|
|
|
}else{
|
|
|
|
|
$find = array('座上铺','座中铺','座下铺','座');
|
|
|
|
|
$replace = array(' upper',' middle',' lower','');
|
|
|
|
|
$item_seat = str_replace($find,$replace,$item_seat);
|
|
|
|
|
array_push($seats,$item_seat);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//对订票乘客进行存储
|
|
|
|
|
$data_passager->ordernumber = $data->orderid;
|
|
|
|
|
$data_passager->realname = $item->passengersename;
|
|
|
|
|
$data_passager->identitytype = $item->passporttypeseidname;
|
|
|
|
|
$data_passager->numberid = $item->passportseno;
|
|
|
|
|
$data_passager->ticketype = $item->piaotypename;
|
|
|
|
|
$data_passager->ticketprice = $item->price;
|
|
|
|
|
$data_passager->seatype = $item->zwname;
|
|
|
|
|
$data_passager->seatdetail = $item->cxin;
|
|
|
|
|
$data_passager->status = '4';
|
|
|
|
|
$this->train_system_model->add_passagers($data_passager);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//判断车厢是否唯一,如果不唯一的话,分成两个车厢
|
|
|
|
|
if(count(array_unique($coach)) == 1){
|
|
|
|
|
$onlycoach = array_unique($coach);
|
|
|
|
|
$string .= 'Coach '.$onlycoach[0].',';
|
|
|
|
|
}else{
|
|
|
|
|
foreach (array_unique($coach) as $item_coach){
|
|
|
|
|
$string .= 'Coach '.$item_coach.',';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$string .= 'Seat ';
|
|
|
|
|
foreach($seats as $item_seat){
|
|
|
|
|
$string .= $item_seat.',';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$seatinfo = substr($string,0,strlen($string)-1);
|
|
|
|
|
$update_data->seatsinfo = $seatinfo;
|
|
|
|
|
|
|
|
|
|
$post_data = array(
|
|
|
|
|
"key"=>JUHE_TRAIN_API_KEY,
|
|
|
|
|
"orderid"=>$data->orderid
|
|
|
|
|
);
|
|
|
|
|
$back_json = GetPost_http(JUHE_TRAIN_PAY_API,$post_data);
|
|
|
|
|
$update_data->bookcallback = $data_post["data"];
|
|
|
|
|
}elseif($data->status == "4"){
|
|
|
|
|
$add_train_order_data->TOC_Memo = $data->orderid." 聚合出票";
|
|
|
|
|
$add_train_order_data->TOC_COLD_SN = $data->user_orderid;
|
|
|
|
|
$add_train_order_data->TOC_TrainNumber = $data->checi;
|
|
|
|
|
$add_train_order_data->TOC_DepartureDate = $data->train_date;
|
|
|
|
|
$add_train_order_data->TOC_TicketCost = $data->orderamount;
|
|
|
|
|
$add_train_order_data->poundage = (count($data->passengers)*2)."";//手续费,每人两块,转换成字符串
|
|
|
|
|
$add_train_order_data->FOI_TrainNetOrderNo = $data->ordernumber;
|
|
|
|
|
$this->BIZ_train_model->add_train_payment($add_train_order_data);
|
|
|
|
|
|
|
|
|
|
$update_data->confirmcallback = $data_post["data"];
|
|
|
|
|
$this->BIZ_train_model->update_cold_planvei_sn($data->user_orderid);
|
|
|
|
|
}elseif($data->status=="7"){
|
|
|
|
|
//退票成功 写入TOC表
|
|
|
|
|
$newtime = "";//记录最新操作时间
|
|
|
|
|
$refund_passportseno = "";//退票人护照号
|
|
|
|
|
$refund_money = "";//退票金额
|
|
|
|
|
foreach ($data->passengers as $p) {
|
|
|
|
|
if(isset($p->returntickets)){
|
|
|
|
|
$refund_passportseno = $p->refundTimeline[count($p->refundTimeline)-1]->detail->passportseno;
|
|
|
|
|
$refund_money = $p->refundTimeline[count($p->refundTimeline)-1]->detail->returnmoney;
|
|
|
|
|
//退票时还需要单独对对每个乘客存储回调信息
|
|
|
|
|
$passpager_info = new stdClass();
|
|
|
|
|
$passpager_info->returncallback = $data_post["data"];
|
|
|
|
|
$passpager_info->status = '7';
|
|
|
|
|
$passpager_info->ordernumber = $data->orderid;
|
|
|
|
|
$passpager_info->realname = $p->refundTimeline[count($p->refundTimeline)-1]->detail->passengername;
|
|
|
|
|
$passpager_info->numberid = $refund_passportseno;
|
|
|
|
|
print_r($passpager_info);
|
|
|
|
|
$this->train_system_model->update_passpager_info($passpager_info);
|
|
|
|
|
|
|
|
|
|
//添加退款记录
|
|
|
|
|
$add_train_order_data->TOC_COLD_SN = $data->user_orderid;
|
|
|
|
|
$add_train_order_data->TOC_Memo = $data->orderid." ".$refund_passportseno;
|
|
|
|
|
$add_train_order_data->ordernumber = $data->user_orderid;
|
|
|
|
|
$add_train_order_data->TOC_TrainNumber = $data->checi;
|
|
|
|
|
$add_train_order_data->TOC_DepartureDate = $data->train_date;
|
|
|
|
|
$add_train_order_data->TOC_TicketCost = -$refund_money;
|
|
|
|
|
$add_train_order_data->FOI_TrainNetOrderNo = null;//退票不用更新取票号,以此在模型里面判断是否为退票消息
|
|
|
|
|
|
|
|
|
|
$this->BIZ_train_model->add_train_payment($add_train_order_data);
|
|
|
|
|
}else{
|
|
|
|
|
//有可能提交了退票或者还没有退票
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$update_data->returncallback = $data_post["data"];
|
|
|
|
|
}
|
|
|
|
|
//print_r($update_data);die();
|
|
|
|
|
//更新订单信息(出票系统)
|
|
|
|
|
$this->train_system_model->update_orders($update_data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|