config->load('config'); $this->order_status_msg=$this->config->item('train_order_status_msg'); $this->key=JUHE_TRAIN_API_KEY; $this->cx_api=JUHE_TRAIN_CX_API; $this->dp_api=JUHE_TRAIN_DP_API; $this->qxdd_api=JUHE_TRAIN_CANCEL_API; $this->pay_api=JUHE_TRAIN_PAY_API; $this->refund_api=JUHE_TRAIN_REFUND_API; $this->status_api=JUHE_TRAIN_STATUS_API; $this->code_zw=$this->config->item('train_zw'); $this->piaotype=$this->config->item('train_piaotype'); $this->passportty=$this->config->item('train_passportty'); $this->load->model("BIZ_train_model");//加载模型 } public function index() { $this->ht_train_order_info(); // $this->load->view('bootstrap3/header'); // $this->load->view('welcome'); // $this->load->view('bootstrap3/footer'); } public function welcome(){ $this->load->view('bootstrap3/header'); $this->load->view('welcome'); $this->load->view('bootstrap3/footer'); } public function export_bk(){ $from_date=$this->input->post("from_date"); $to_date=$this->input->post("to_date"); if(!empty($from_date) && !empty($to_date)){ $from_date=date("Y-m-d H:i",strtotime($from_date)); $to_date=date("Y-m-d H:i",strtotime($to_date)); $r="";//聚合返回的数据 $string_r="";//写入excel表格数据 $coli_id=""; $wl_name=""; $arr="";//整合完成的数组 $url=JUHE_TRAIN_EXPORT_API;//请求的url $url.="?key=".$this->key; $url.="&since=".$from_date; $url.="&before=".$to_date; $r=$this->get_data($url); // $r=mb_convert_encoding($r, "utf-8", "gb2312"); $r=explode("\n",$r); $excel_head='"记录编号","时间","火车票订单号","最新余额","信息","变化值","翰特订单号","外联"'; $excel_head=mb_convert_encoding($excel_head,"gbk","utf-8"); $string_r=$excel_head; for($i=1;$iBIZ_train_model->jh_order_get_coli_id($juhe_order); if($coli_id){ $r_info[6]=$coli_id[0]->COLI_ID; $wl_name = $this->BIZ_train_model->get_operatorinfo($r_info[6]); $r_info[7]=mb_convert_encoding($wl_name[0]->OPI_Name, "gbk", "utf-8"); // $r_info[7]=$wl_name[0]->OPI_Name; }else{ $r_info[6]=""; $r_info[7]=""; } $r_info[3]=mb_convert_encoding($r_info[3],"utf-8","gbk"); if(is_numeric(mb_strpos($r_info[3],"扣款"))){ $r_info[3]="票款"; } if(is_numeric(mb_strpos($r_info[3],"扣手续费"))){ $r_info[3]="手续费"; } if(is_numeric(mb_strpos($r_info[3],"线上退票成功"))){ $r_info[3]="退票费"; } $r_info[3]=mb_convert_encoding($r_info[3],"gbk","utf-8"); $arr[]=$r_info; } $ht_order_sort = array(); $wl_name_sort = array(); foreach ($arr as $a) { $wl_name_sort[] = $a[7]; } foreach ($arr as $a) { $ht_order_sort[] = $a[6]; } array_multisort($wl_name_sort, $ht_order_sort,SORT_ASC, SORT_STRING, $arr); foreach ($arr as $a) { $ht_order_sort[] = $a[6]; $string_r.="\n"."$a[0],$a[2],$a[4],$a[5],$a[3],$a[1]".',"'.$a[6].'"'.',"'.$a[7].'"'; } $string_r=mb_convert_encoding($string_r,"utf-8","gbk"); header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=juhe_train.csv"); echo $string_r;die; } $this->load->view('bootstrap3/header'); $this->load->view('export'); $this->load->view('bootstrap3/footer'); } public function export(){ $from_date=$this->input->post("from_date"); $to_date=$this->input->post("to_date"); $examine=$this->input->post("examine"); $reback=array();//返回的数据 $reback["from_date"]=$from_date; $reback["to_date"]=$to_date; $reback["examine"]=$examine; if(!empty($from_date) && !empty($to_date)){ $from_date=date("Y-m-d H:i",strtotime($from_date)); $to_date=date("Y-m-d H:i",strtotime($to_date)); $r="";//聚合返回的数据 $string_r="";//输出 $coli_id=""; $wl_name=""; $arr="";//整合完成的数组,写进excel表的数据 $url=JUHE_TRAIN_EXPORT_API;//请求的url $url.="?key=".$this->key; $url.="&since=".$from_date; $url.="&before=".$to_date; $r=$this->get_data($url); $r=explode("\n",$r); for($i=1;$iBIZ_train_model->jh_order_get_coli_id($juhe_order); //去掉数据两边的双引号 $r_info[2]=substr($r_info[2], stripos($r_info[2],'"')+1,strrpos($r_info[2],'"')-1); $r_info[1]=substr($r_info[1], stripos($r_info[1],'"')+1,strrpos($r_info[1],'"')-1); $r_info[5]=substr($r_info[5], stripos($r_info[5],'"')+1,strrpos($r_info[5],'"')-1); $r_info[6]="";//储存团名 $r_info[7] = "";//储存外联名 $r_info[8] = "";//储存coli_id if($coli_id){ $r_info[8] = $coli_id[0]->COLI_ID; $gri_no=$this->BIZ_train_model->get_gri_no($r_info[8]);//团名 $wl_name = $this->BIZ_train_model->get_operatorinfo($r_info[8]); if($gri_no){ $r_info[6] = $gri_no[0]->GRI_No; } if($wl_name){ $r_info[7] = $wl_name[0]->OPI_Name; } } $r_info[3]=mb_convert_encoding($r_info[3],"utf-8","gbk"); if(is_numeric(mb_strpos($r_info[3],"充值"))){ if(is_numeric(mb_strpos($r_info[3],"扣款"))){ $r_info[3]="票款(有充值)"; } if(is_numeric(mb_strpos($r_info[3],"扣手续费"))){ $r_info[3]="手续费(有充值)"; } if(is_numeric(mb_strpos($r_info[3],"线上退票成功"))){ $r_info[3]="退票费(有充值)"; } } if(is_numeric(mb_strpos($r_info[3],"扣款"))){ $r_info[3]="票款"; } if(is_numeric(mb_strpos($r_info[3],"扣手续费"))){ $r_info[3]="手续费"; } if(is_numeric(mb_strpos($r_info[3],"线上退票成功"))){ $r_info[3]="退票费"; } // $r_info[3]=mb_convert_encoding($r_info[3],"gbk","utf-8"); $arr[]=$r_info; } if(empty($examine)){ header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=juhe_train.xml"); $string_r= $this->load->view("train_transaction_excel",array("arr"=>$arr),TRUE); echo $string_r;die; }else{ krsort($arr);//数组倒序 $reback["data"]=$arr; } } $this->load->view('bootstrap3/header'); $this->load->view('export',$reback); $this->load->view('bootstrap3/footer'); } //用于外联审核账单,查询我的支付信息 public function get_ht_my_pay(){ $coli_id=$this->input->get("id"); $reback=array(); $reback["status"]=0; if(is_numeric($coli_id)){ $r=$this->BIZ_train_model->get_train_order_cost($coli_id); $reback["status"]=1; $reback["datas"]=$r; } echo json_encode($reback); return false; } public function search(){ $from=$this->input->post("from"); $to=$this->input->post("to"); $date=$this->input->post("date"); $url = "http://op.juhe.cn/trainTickets/cityCode"; $post_from = array("stationName" => $from,"key"=>$this->key); $post_to = array("stationName" => $to,"key"=>$this->key); $output_from=$this->my_post($url,$post_from); $output_to=$this->my_post($url,$post_to); if($output_from["error_code"]===0 && $output_to["error_code"]===0){//error_code=0代表成功,其他有错,返回错误信息 // var_dump($output_from["result"]["code"]);var_dump($output_to["result"]["code"]); $ticket_data=array("key"=>$this->key,"train_date"=>$date,"from_station"=>$output_from["result"]["code"],"to_station"=>$output_to["result"]["code"]); $ticket=$this->my_post("http://op.juhe.cn/trainTickets/ticketsAvailable",$ticket_data); if($ticket["error_code"]!=0){ //error_code=0代表成功,其他有错,返回错误信息 die(json_encode(array("status"=>0,"mes"=>$ticket["reason"])));// }else{ $backdata=""; $backdata= $this->load->view("booking_table",array("result"=>$ticket["result"],"date"=>$date),true); die(json_encode(array("status"=>1,"mes"=>"成功","backdata"=>$backdata))); } }else{ die(json_encode(array("status"=>0,"mes"=>"站点名称错误"))); } } public function ch_train_search(){ $from=$this->input->get("from"); $to=$this->input->get("to"); $date=$this->input->get("date"); $ticket_data=array("key"=>$this->key,"train_date"=>$date,"from_station"=>$from,"to_station"=>$to); $ticket=$this->post_data("http://op.juhe.cn/trainTickets/ticketsAvailable",$ticket_data); $ticket=json_decode($ticket); } public function ch_train_search_t(){ // $seat_key = array( // 'A' => @$train_item->gr_num,//高级软卧 // 'X' => @$train_item->qt_num,//其他 // '4' => @$train_item->rw_num,//软卧 // '2' => @$train_item->rz_num,//软座 // 'P' => @$train_item->tz_num,//特等座 // '13' => @$train_item->wz_num,//无座 // '3' => @$train_item->yw_num,//硬卧 // '1' => @$train_item->yz_num,//硬座 // 'O' => @$train_item->ze_num,//二等座 // 'M' => @$train_item->zy_num,//一等座 // '9' => @$train_item->swz_num//商务座 // ); // $from=$this->input->post("from"); // $to=$this->input->post("to"); // $date=$this->input->post("date"); $this->load->model("BIZ_train_model"); //$code=$this->BIZ_train_model->get_train_station_code(array("TRS_StationCN"=>"北京南")); //var_dump($code[0]->TRS_Code);die; $from=$this->input->get("from_station"); $to=$this->input->get("to_station"); $date=$this->input->get("queryDate"); // $url = "http://op.juhe.cn/trainTickets/cityCode"; // $post_from = array("stationName" => $from,"key"=>$this->key); // $post_to = array("stationName" => $to,"key"=>$this->key); // $output_from=$this->my_post($url,$post_from); // $output_to=$this->my_post($url,$post_to); //if($output_from["error_code"]===0 && $output_to["error_code"]===0){//error_code=0代表成功,其他有错,返回错误信息 // var_dump($output_from["result"]["code"]);var_dump($output_to["result"]["code"]); $ticket_data=array("key"=>$this->key,"train_date"=>$date,"from_station"=>$from,"to_station"=>$to); $ticket=$this->post_data("http://op.juhe.cn/trainTickets/ticketsAvailable",$ticket_data); $ticket=json_decode($ticket); // var_dump($ticket); if($ticket->error_code==0){ $reback='{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"datas":['; $reback_list=""; foreach ($ticket->result->list as $v) { $seat_key="";//座位代码串 $yp_info="";//价格 // $seat_key.=$v->gjrw_price!=0?"A":""; // $seat_key.=$v->qtxb_price!=0?"X":""; // $seat_key.=$v->rw_price!=0?"4":""; // $seat_key.=$v->rz_price!=0?"2":""; // $seat_key.=$v->tdz_price!=0?"P":""; // $seat_key.=$v->wz_price!=0?"13":""; // $seat_key.=$v->yw_price!=0?"3":""; // $seat_key.=$v->yz_price!=0?"1":""; // $seat_key.=$v->edz_price!=0?"O":""; // $seat_key.=$v->ydz_price!=0?"M":""; // $seat_key.=$v->swz_price!=0?"9":""; if($v->gjrw_price!=0){ $seat_key.= "A"; $yp_info.="A".str_pad($v->gjrw_price,5,"0",STR_PAD_LEFT).str_pad($v->gjrw_num,4,"0",STR_PAD_LEFT); } if($v->qtxb_price!=0){ $seat_key.= "X"; $yp_info.="X".str_pad($v->qtxb_price,5,"0",STR_PAD_LEFT).str_pad($v->qtxb_num,4,"0",STR_PAD_LEFT); } if($v->rw_price!=0){ $seat_key.= "4"; $yp_info.="4".str_pad($v->rw_price,5,"0",STR_PAD_LEFT).str_pad($v->rw_num,4,"0",STR_PAD_LEFT); } if($v->rz_price!=0){ $seat_key.= "2"; $yp_info.="2".str_pad($v->rz_price,5,"0",STR_PAD_LEFT).str_pad($v->rz_num,4,"0",STR_PAD_LEFT); } if($v->tdz_price!=0){ $seat_key.= "P"; $yp_info.="P".str_pad($v->tdz_price,5,"0",STR_PAD_LEFT).str_pad($v->tdz_num,4,"0",STR_PAD_LEFT); } if($v->yw_price!=0){ $seat_key.= "3"; $yp_info.="3".str_pad($v->yw_price,5,"0",STR_PAD_LEFT).str_pad($v->yw_num,4,"0",STR_PAD_LEFT); } if($v->yz_price!=0){ $seat_key.= "1"; $yp_info.="1".str_pad($v->yz_price,5,"0",STR_PAD_LEFT).str_pad($v->yz_num,4,"0",STR_PAD_LEFT); } if($v->edz_price!=0){ $seat_key.= "O"; $yp_info.="O".str_pad($v->edz_price,5,"0",STR_PAD_LEFT).str_pad($v->edz_num,4,"0",STR_PAD_LEFT); } if($v->ydz_price!=0){ $seat_key.= "M"; $yp_info.="M".str_pad($v->ydz_price,5,"0",STR_PAD_LEFT).str_pad($v->ydz_num,4,"0",STR_PAD_LEFT); } if($v->swz_price!=0){ $seat_key.= "9"; $yp_info.="9".str_pad($v->swz_price,5,"0",STR_PAD_LEFT).str_pad($v->swz_num,4,"0",STR_PAD_LEFT); } if($v->wz_price!=0){ $seat_key.= "13"; $yp_info.="1".str_pad($v->wz_price,5,"0",STR_PAD_LEFT)."3".str_pad($v->wz_num,3,"0",STR_PAD_LEFT); }//无座数量3开头 $start_station_telecode=$this->BIZ_train_model->get_train_station_code(array("TRS_StationCN"=>$v->start_station_name));//返回站点简码 $end_station_telecode=$this->BIZ_train_model->get_train_station_code(array("TRS_StationCN"=>$v->end_station_name));//返回站点简码 $reback_list.=',{"train_no":"'.$v->train_no.'","station_train_code":"'.$v->train_code.'","start_station_telecode":"'.$start_station_telecode[0]->TRS_Code.'","start_station_name":"'.$v->start_station_name.'","end_station_telecode":"'.$end_station_telecode[0]->TRS_Code.'","end_station_name":"'.$v->end_station_name.'","from_station_telecode":"'.$v->from_station_code.'","from_station_name":"'.$v->from_station_name.'","to_station_telecode":"'.$v->to_station_code.'","to_station_name":"'.$v->to_station_name.'","start_time":"'.$v->start_time.'","arrive_time":"'.$v->arrive_time.'","day_difference":"'.$v->arrive_days.'","train_class_name":"","lishi":"'.$v->run_time.'","canWebBuy":"Y","lishiValue":"'.$v->run_time_minute.'","yp_info":"'.$yp_info.'","control_train_day":"20301231","start_train_date":"'.$v->train_start_date.'","seat_feature":"O3M393","yp_ex":"O0M090","train_seat_feature":"3","seat_types":"'.$seat_key.'","location_code":"P2","from_station_no":"01","to_station_no":"11","control_day":29,"sale_time":"'.$v->sale_date_time.'","is_support_card":"1","note":"","controlled_train_flag":"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"'.$v->gjrw_num.'","qt_num":"'.$v->qtxb_num.'","rw_num":"'.$v->rw_num.'","rz_num":"'.$v->rz_num.'","tz_num":"'.$v->tdz_num.'","wz_num":"'.$v->wz_num.'","yb_num":"--","yw_num":"'.$v->yw_num.'","yz_num":"'.$v->yz_num.'","ze_num":"'.$v->edz_num.'","zy_num":"'.$v->ydz_num.'","swz_num":"'.$v->swz_num.'"}'; } } $reback_list=substr($reback_list, 1);//去掉多于的, $reback.=$reback_list.'],"flag":true,"searchDate":""},"messages":[],"validateMessages":{}}'; echo($reback); // if($ticket["error_code"]!=0){ //error_code=0代表成功,其他有错,返回错误信息 // die(json_encode(array("status"=>0,"mes"=>$ticket["reason"])));// // }else{ // $backdata=""; // //$backdata= $this->load->view("booking_table",array("result"=>$ticket["result"],"date"=>$date),true); // //die(json_encode(array("status"=>1,"mes"=>"成功","backdata"=>$backdata))); // } //}else{ //die(json_encode(array("status"=>0,"mes"=>"站点名称错误"))); //} } public function booking(){ $data['from_station_code']=$this->input->get("from_station_code"); $data['from_station_name']=$this->input->get("from_station_name"); $data['to_station_code']=$this->input->get("to_station_code"); $data['to_station_name']=$this->input->get("to_station_name"); $data['train_code']=$this->input->get("train_code"); $data['date']=$this->input->get("date"); $data['start_time']=$this->input->get("start_time"); $data['arrive_time']=$this->input->get("arrive_time"); $data['swz_num']=$this->input->get("swz_num"); $data['swz_price']=$this->input->get("swz_price"); $data['tdz_num']=$this->input->get("tdz_num"); $data['tdz_price']=$this->input->get("tdz_price"); $data['ydz_num']=$this->input->get("ydz_num"); $data['ydz_price']=$this->input->get("ydz_price"); $data['edz_num']=$this->input->get("edz_num"); $data['edz_price']=$this->input->get("edz_price"); $data['gjrw_num']=$this->input->get("gjrw_num"); $data['gjrw_price']=$this->input->get("gjrw_price"); $data['rw_num']=$this->input->get("rw_num"); $data['rw_price']=$this->input->get("rw_price"); $data['yw_num']=$this->input->get("yw_num"); $data['yw_price']=$this->input->get("yw_price"); $data['rz_num']=$this->input->get("rz_num"); $data['rz_price']=$this->input->get("rz_price"); $data['yz_num']=$this->input->get("yz_num"); $data['yz_price']=$this->input->get("yz_price"); $data['wz_num']=$this->input->get("wz_num"); $data['wz_price']=$this->input->get("wz_price"); $this->load->view('bootstrap3/header'); $this->load->view('booking',$data); $this->load->view('bootstrap3/footer'); } //接收订单COLD_SN和客户BPE_SN 获取车次,乘客信息,拼接成聚合提交订单的url public function get_sn_submit_juhe() { $cold_sn=$this->input->get("order"); $bpe_sn=$this->input->get("people"); $data = array(); $rebakc=array();//返回数据 $rebakc["status"]=0; $rebakc["mes"]=""; if(!is_numeric($cold_sn)){ $rebakc["mes"]="订单号是数字"; echo json_encode($rebakc); return false; } if(empty($bpe_sn)){ $rebakc["mes"]="请选择乘客"; echo json_encode($rebakc); 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 (empty($data['train'])) { //显示错误,找不到车次 $rebakc["mes"]="找不到车次"; echo json_encode($rebakc); return false; } if (empty($data['people_list'])) { //显示错误,找不到用户信息 $rebakc["mes"]="找不到乘客信息"; echo json_encode($rebakc); return false; } if (count($data['people_list']) > 5) { //显示错误,用户超过五个 $rebakc["mes"]="乘客不能超过五个"; echo json_encode($rebakc); return false; } $db_train_zw = $this->config->item('db_train_zw'); $train_zw = $this->config->item('train_zw'); $zwcode = $db_train_zw[$data['train']->Aircraft]; //座位简码 $zwname = $train_zw[$db_train_zw[$data['train']->Aircraft]]; //座位名称 $passengers=""; foreach ($data['people_list'] as $key => $item) { //乘客姓名 $passengersename = trim($item->BPE_FirstName) . trim($item->BPE_MiddleName) . trim($item->BPE_LastName); //乘客类型 switch ($item->BPE_GuestType) { case 1: $piaotype = 1; $piaotypename = "成人票"; break; case 2: $piaotype = 2; $piaotypename = "儿童票"; break; default://外国人应该就两种票吧 $piaotype = 1; $piaotypename = "成人票"; break; } $passporttypeseid = "B"; //护照 $passporttypeseidname = "护照"; $passportseno = $item->BPE_Passport; $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; $url=$this->dp_api; $post_data=array( "key"=>$this->key, "user_orderid"=>$cold_sn,//自定义订单号 "train_date"=>substr($data["train"]->DepartureDate, 0, 10), "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 ); $bakc_json=$this->post_data($url,$post_data); $bakc=json_decode($bakc_json);//json=>obj $add_data=new StdClass(); $add_data->JOL_COLD_SN=(int)$cold_sn; $add_data->JOL_Status="0"; $add_data->JOL_RebackMsg=$bakc->reason; $add_data->JOL_FromStation=$data["train"]->DepartAirport_cn; $add_data->JOL_ToStation=$data["train"]->ArrivalAirport_cn; $add_data->JOL_FromStationCode=$data["train"]->DepartAirport; $add_data->JOL_ToStationCode=$data["train"]->ArrivalAirport; $add_data->JOL_TrainCode=$data["train"]->FlightsNo; $add_data->JOL_BackTxt=$bakc_json; if(!$bakc->error_code){ $add_data->JOL_JuheOrder=$bakc->result->orderid; $rebakc["status"]=1; $rebakc["order"]=$bakc->result->orderid; $rebakc["mes"]="订单提交成功,等待回调"; }else{ $add_data->JOL_JuheOrder=null; $rebakc["mes"]= $bakc_json; $add_data->JOL_Status="e"; } $add_back_data=$this->BIZ_train_model->add_biz_jol($add_data); echo json_encode($rebakc); return false; } //根据汉特订单明细表SN来获取车次,乘客信息,拼接成聚合提交订单的url public function submit_juhe_order() { $cold_sn=$this->input->get("order"); $data = array(); $rebakc=array();//返回数据 $rebakc["status"]=0; $rebakc["mes"]=""; if(!is_numeric($cold_sn)){ $rebakc["mes"]="订单号是数字"; echo json_encode($rebakc); return false; } $data['train'] = $this->BIZ_train_model->biz_order_detail($cold_sn); if (empty($data['train'])) { //显示错误,找不到车次 $rebakc["mes"]="找不到车次"; echo json_encode($rebakc); return false; } $data['people_list'] = $this->BIZ_train_model->biz_people($cold_sn); if (empty($data['people_list'])) { //显示错误,找不到用户信息 $rebakc["mes"]="找不到乘客信息"; echo json_encode($rebakc); return false; } if (count($data['people_list']) > 5) { //显示错误,用户超过五个 $rebakc["mes"]="乘客不能超过五个"; echo json_encode($rebakc); return false; } $db_train_zw = $this->config->item('db_train_zw'); $train_zw = $this->config->item('train_zw'); $passengers=''; foreach ($data['people_list'] as $key => $item) { $zwcode = $db_train_zw[$data['train']->Aircraft]; //座位简码 $zwname = $train_zw[$db_train_zw[$data['train']->Aircraft]]; //座位名称 //乘客姓名 $passengersename = trim($item->BPE_FirstName) . trim($item->BPE_MiddleName) . trim($item->BPE_LastName); //乘客类型 switch ($item->BPE_GuestType) { case 1: $piaotype = 1; $piaotypename = "成人票"; break; case 2: $piaotype = 2; $piaotypename = "儿童票"; break; default://外国人应该就两种票吧 $piaotype = 1; $piaotypename = "成人票"; break; } $passporttypeseid = "B"; //护照 $passporttypeseidname = "护照"; $passportseno = $item->BPE_Passport; $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; $url=$this->dp_api; $post_data=array( "key"=>$this->key, "user_orderid"=>$cold_sn,//自定义订单号 "train_date"=>substr($data["train"]->DepartureDate, 0, 10), "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 ); $bakc_json=$this->post_data($url,$post_data); $bakc=json_decode($bakc_json);//json=>obj $add_data=new StdClass(); $add_data->JOL_COLD_SN=(int)$cold_sn; $add_data->JOL_Status="0"; $add_data->JOL_RebackMsg=$bakc->reason; $add_data->JOL_FromStation=$data["train"]->DepartAirport_cn; $add_data->JOL_ToStation=$data["train"]->ArrivalAirport_cn; $add_data->JOL_FromStationCode=$data["train"]->DepartAirport; $add_data->JOL_ToStationCode=$data["train"]->ArrivalAirport; $add_data->JOL_TrainCode=$data["train"]->FlightsNo; $add_data->JOL_BackTxt=$bakc_json; if(!$bakc->error_code){ $add_data->JOL_JuheOrder=$bakc->result->orderid; $rebakc["status"]=1; $rebakc["order"]=$bakc->result->orderid; $rebakc["mes"]="订单提交成功,等待回调"; }else{ $add_data->JOL_JuheOrder=null; $rebakc["mes"]= $bakc_json; $add_data->JOL_Status="e"; } $add_back_data=$this->BIZ_train_model->add_biz_jol($add_data); echo json_encode($rebakc); return false; } //汉特接口 public function ht_api(){ $order=$this->input->get("order"); $rebakc=array();//返回数据 $rebakc["status"]=0; $rebakc["mes"]=""; if(is_numeric($order)){ $this->load->model("order_people_model","op"); $data=$this->op->biz_people($order); if(!empty($data->cold)){ $people_num=count($data->people); if($people_num<=5){ $db_train_zw=$this->config->item('db_train_zw'); $train_zw=$this->config->item('train_zw'); if(!empty($db_train_zw[$data->cold[0]->Aircraft])){ $zwcode=$db_train_zw[$data->cold[0]->Aircraft];//座位简码 $zwname=$train_zw[$db_train_zw[$data->cold[0]->Aircraft]];//座位名称 $passengers="";//聚合订单数据 for($i=0;$i<$people_num;$i++){ $passengersename="";//乘客名字 if(!empty($data->people[$i]->BPE_FirstName)){ $passengersename.=$data->people[$i]->BPE_FirstName." "; } if(!empty($data->people[$i]->BPE_MiddleName)){ $passengersename.=$data->people[$i]->BPE_MiddleName." "; } if(!empty($data->people[$i]->BPE_LastName)){ $passengersename.=$data->people[$i]->BPE_LastName; } $passengersename=trim($passengersename); //乘客类型 switch ($data->people[$i]->BPE_GuestType) { case 1: $piaotype=1; $piaotypename="成人票"; break; case 2: $piaotype=2; $piaotypename="儿童票"; break; default://外国人应该就两种票吧 $piaotype=1; $piaotypename="成人票"; break; } $passporttypeseid="B";//护照 $passporttypeseidname="护照"; $passportseno=$data->people[$i]->BPE_Passport; $passengers.=',{"passengerid":'.($i+1).',"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; $url=$this->dp_api; $post_data=array( "key"=>$this->key, "user_orderid"=>$order,//自定义订单号 "train_date"=>substr($data->cold[0]->COLD_StartDate, 0, 10), "from_station_name"=>$data->cold[0]->LeaveStation, "from_station_code"=>$data->cold[0]->DepartAirport, "to_station_code"=>$data->cold[0]->ArrivalAirport, "to_station_name"=>$data->cold[0]->ServerStation, "passengers"=>$passengers, "checi"=>$data->cold[0]->FlightsNo ); var_dump($post_data); die; $bakc_json=$this->post_data($url,$post_data); $bakc=json_decode($bakc_json);//json=>obj $add_data=new StdClass(); $add_data->JOL_COLD_SN=(int)$order; $add_data->JOL_Status="0"; $add_data->JOL_RebackMsg=$bakc->reason; $add_data->JOL_FromStation=$data->cold[0]->LeaveStation; $add_data->JOL_ToStation=$data->cold[0]->ServerStation; $add_data->JOL_FromStationCode=$data->cold[0]->DepartAirport; $add_data->JOL_ToStationCode=$data->cold[0]->ArrivalAirport; $add_data->JOL_TrainCode=$data->cold[0]->FlightsNo; $add_data->JOL_BackTxt=$bakc_json; if(!$bakc->error_code){ $add_data->JOL_JuheOrder=$bakc->result->orderid; $rebakc["status"]=1; $rebakc["order"]=$bakc->result->orderid; $rebakc["mes"]="订单提交成功,等待回调"; }else{ $add_data->JOL_JuheOrder=null; $rebakc["mes"]= $bakc_json; $add_data->JOL_Status="e"; } $add_back_data=$this->op->add_jh_order($add_data); }else{ $rebakc["mes"]="座次信息有误"; } }else{ $rebakc["mes"]="乘客人数不得超过五个"; } }else{ $rebakc["mes"]="此订单号不存在"; } }else{ $rebakc["mes"]="此订单号不是数字"; } // return $rebakc; var_dump($rebakc); die(json_encode($rebakc)); } public function sub_callback(){ $data_post=$this->input->post(); $data=json_decode($data_post["data"]); $this->load->model("order_people_model","op"); $update_data=new StdClass(); $update_data->JOL_BackTxt=$data_post["data"]; $update_data->JOL_RebackMsg=$data->msg; $update_data->JOL_Status=$data->status; $update_data->JOL_JuheOrder=$data->orderid; $update_data->JOL_Price=$data->passengers[0]->price; if($data->status=="2"){ $post_data=array( "key"=>$this->key, "orderid"=>$data->orderid ); $back_json=$this->my_post($this->pay_api,$post_data); $back=json_decode($back_json); $update_data->JOL_BackTxt=$back_json; $update_data->JOL_RebackMsg=$back->reason; }elseif($data->status=="4"){ //付款成功 写入TOC表 $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->op->add_train_order($add_train_order_data); }elseif($data->status=="7"){ //退票成功 写入TOC表 $newtime="";//记录最新操作时间 $refund_passportseno="";//退票人护照号 $refund_money="";//退票金额 foreach ($data->passengers as $p) { //找出退票人,规则:操作时间最新的 if($p->refundTimeline){//是否有退票操作 //$p->refundTimeline[count($p->refundTimeline)-1] 最新操作 if($p->refundTimeline[count($p->refundTimeline)-1]->time > $newtime){ $newtime=$p->refundTimeline[count($p->refundTimeline)-1]->time; $refund_passportseno=$p->refundTimeline[count($p->refundTimeline)-1]->detail->passportseno; $refund_money=$p->refundTimeline[count($p->refundTimeline)-1]->detail->returnmoney; } } } $add_train_order_data->TOC_Memo=$data->orderid." ".$refund_passportseno; $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=-$refund_money; $add_train_order_data->FOI_TrainNetOrderNo=null;//退票不用更新取票号,以此在模型里面判断是否为退票消息 $this->op->add_train_order($add_train_order_data); } $this->op->update_jh_order($update_data); echo "success"; } //汉特&聚合 订单列表 public function ht_order_list(){ $this->load->model("order_people_model","op"); $page_size=10; $page=$this->input->get("page"); $order=$this->input->get("order"); $where="1=1";//搜索条件 $page_parameter="";//返回的分页条件参数 if(empty($page) or !is_numeric($page)){ $page=0; } if(!empty($order)){ $where="BIZ_ConfirmLineInfo.COLI_ID='{$order}' OR JOL_JuheOrder='{$order}'"; $list["order"]=$order; $page_parameter="order=".$order."&"; } $data=$this->op->get_order($page_size,$page,$where); $list["data"]=$data->list; $this->load->library('pagination'); $config['base_url'] = site_url("/apps/train/index/ht_order_list?{$page_parameter}"); $config['total_rows'] = $data->count; $config['per_page'] = $page_size; $config['page_query_string']=TRUE; $config['query_string_segment']="page"; $config['cur_tag_open'] = '
  • '; $config['cur_tag_close'] = '
  • '; $config['first_tag_open']=$config['last_tag_open']=$config['next_tag_open']=$config['prev_tag_open']=$config['num_tag_open']="
  • "; $config['first_tag_close']=$config['last_tag_close']=$config['next_tag_close']=$config['prev_tag_close']=$config['num_tag_close']="
  • "; $this->pagination->initialize($config); $list["page_link"]=$this->pagination->create_links(); foreach ($list["data"] as $key => $value) { $value->info=$this->order_status_msg[$value->JOL_Status];//自定义说明信息; } $this->load->view('bootstrap3/header'); $this->load->view('ht_order_list.html',$list); $this->load->view('bootstrap3/footer'); } //输入翰特订单号cols_id,获取火车订票的相关信息,模拟翰特订单详情页面 public function ht_train_order(){ $cols_id=$this->input->post("ht_order"); $list=new StdClass; if(!empty($cols_id)){ $cold_sn=$this->BIZ_train_model->get_biz_cold($cols_id); $list->wl=$this->BIZ_train_model->get_operatorinfo($cols_id); $i=0; $list->info=array(); foreach ($cold_sn as $v) { $list->info[$i]=new StdClass; $list->info[$i]->people=$this->BIZ_train_model->biz_people($v->COLD_SN); $list->info[$i]->train=$this->BIZ_train_model->get_biz_foi($v->COLD_SN); $list->info[$i]->status=$this->BIZ_train_model->get_biz_jol($v->COLD_SN); $i++; } $list->cols_id=$cols_id; } $this->load->view('bootstrap3/header'); $this->load->view('ht_train_order.html',$list); $this->load->view('bootstrap3/footer'); } //输入翰特订单号cols_id,获取火车订票的相关信息,模拟翰特订单详情页面 public function ht_train_order_info(){ $cols_id=$this->input->post("ht_order"); $list=new StdClass; if(!empty($cols_id)){ $cold_sn=$this->BIZ_train_model->get_biz_cold($cols_id); $list->wl=$this->BIZ_train_model->get_operatorinfo($cols_id); $i=0; $list->info=array(); foreach ($cold_sn as $v) { $list->info[$i]=new StdClass; $list->info[$i]->people=$this->BIZ_train_model->biz_people($v->COLD_SN); $list->info[$i]->train=$this->BIZ_train_model->get_biz_foi($v->COLD_SN); $list->info[$i]->status=$this->BIZ_train_model->get_biz_jol($v->COLD_SN); $i++; } $list->cols_id=$cols_id; } $this->load->view('bootstrap3/header'); $this->load->view('ht_train_order_info',$list); $this->load->view('bootstrap3/footer'); } //订单信息填写 public function booking_write(){ $this->load->model("order_people_model","op"); $order=$this->input->post("order"); $data["order"]=""; if(!empty($order) && is_numeric($order)){ $data["order"]=$this->op->biz_people($order); $data["order_id"]=$order; } $data["code_zw"]=$this->code_zw; $data["piaotype"]=$this->piaotype; $data["passportty"]=$this->passportty; $this->load->view('bootstrap3/header'); $this->load->view('booking_write',$data); $this->load->view('bootstrap3/footer'); } public function booking_do(){ //以下是为测试用,未做完善的判断! $this->load->helper('form'); $this->load->library('my_form_validation'); $zw=$this->input->post("train_booking_zw"); $piaotype_post=$this->input->post("train_booking_piaotype"); $passengersename=$this->input->post("train_booking_passengersename"); $passportty=$this->input->post("train_booking_passportty"); $passportseno=$this->input->post("train_booking_passportseno"); $mobile=$this->input->post("train_booking_mobile"); $train_code=$this->input->post("train_booking_train_code"); $from_station_code=$this->input->post("train_booking_from_station_code"); $from_station_name=$this->input->post("train_booking_from_station_name"); $to_station_code=$this->input->post("train_booking_to_station_code"); $to_station_name=$this->input->post("train_booking_to_station_name"); $date=$this->input->post("train_booking_date"); $rebakc="";//返回数据 $flag=TRUE;//标示变量 $passengers="";//乘客信息集合 $num=count($zw); if($num>5){ // die("乘客太多"); $rebakc="乘客太多"; }else{ $config_zw=$this->code_zw;//检查座位信息是否和配置文件相符合 $config_piaotype=$this->piaotype;//检查票种信息是否和配置文件相符合 $config_passportty=$this->passportty;//检查证件信息是否和配置文件相符合 for($i=0;$i<$num;++$i){ if(empty($config_zw[$zw[$i]])){ $zwname[]=$config_zw["1"]; $zwcode[]="1"; }else{ $zwname[]=$config_zw[$zw[$i]]; $zwcode[]=$zw[$i]; } if(empty($config_piaotype[$piaotype_post[$i]])){ $piaotypename[]=$config_piaotype["1"]; $piaotype[]="1"; }else{ $piaotypename[]=$config_piaotype[$piaotype_post[$i]]; $piaotype[]=$piaotype_post[$i]; } if(empty($config_passportty[$passportty[$i]])){ $zwname[]=$config_passportty["1"]; $zwcode[]="1"; }else{ $zwname[]=$config_passportty[$passportty[$i]]; $zwcode[]=$passportty[$i]; } } //表单验证 $this->form_validation->set_rules('train_booking_train_code', '车次不能为空', 'required'); $this->form_validation->set_rules('train_booking_from_station_name', '出发站点不能为空', 'required'); $this->form_validation->set_rules('train_booking_to_station_name', '目的站点不能空', 'required'); $this->form_validation->set_rules('train_booking_date', '日期不能为空', 'required'); $this->form_validation->set_rules('train_booking_passportseno[]', '证件号不能为空且为数字', 'required|numeric'); $this->form_validation->set_rules('train_booking_passengersename[]', '姓名不能为空', 'required'); if($this->form_validation->run()){ for($i=0;$i<$num;$i++){ $passengers.=',{"passengerid":'.($i+1).',"passengersename":"'.$passengersename[$i].'","piaotype":"'.$piaotype[$i].'","piaotypename":"'.$piaotypename[$i].'","passporttypeseid":"'.$passporttypeseid[$i].'","passporttypeseidname":"'.$passporttypeseidname[$i].'","passportseno":"'.$passportseno[$i].'","price":"1","zwcode":"'.$zwcode[$i].'","zwname":"'.$zwname[$i].'"}'; } $passengers.="]"; $passengers=substr($passengers, 1); $passengers="[".$passengers; // die($passengers); $url=$this->dp_api; $post_data=array( "key"=>$this->key, "user_orderid"=>time(),//自定义订单号 "train_date"=>$date, "from_station_name"=>$from_station_name, "from_station_code"=>$from_station_code, "to_station_code"=>$to_station_code, "to_station_name"=>$to_station_name, "passengers"=>$passengers, "checi"=>$train_code ); $bakc=$this->my_post($url,$post_data); if($bakc['error_code']){ $rebakc=$bakc; }else{ //提交订单成功,但并不意味着信息没错 $url_status=$this->cx_api;//订单状态查询 $post_status=array( "key"=>$this->key, "orderid"=>$bakc["result"]["orderid"] ); $bakc_status=$this->my_post($url_status,$post_status); if($bakc_status["error_code"]){ $rebakc=$bakc_status; }else{ $this->load->model("api_model","api"); $this->api->_insert("order",array( "order_num"=>$bakc['result']['orderid'], "sub_time"=>time(), "status"=>$bakc_status["result"]["status"], "msg"=>$bakc_status["result"]["msg"], "from_station"=>$from_station_name, "to_station"=>$to_station_name, "train_code"=>$train_code, "price"=>$bakc_status["result"]["orderamount"] )); // echo ""; redirect("apps/train/index/order_list");//windows服务器会报错? } } var_dump($rebakc); }else{ // var_dump($this->form_validation->_error_array); var_dump(validation_errors()); } } } public function order_list(){ $this->load->model("api_model","api"); $list["data"]=$this->api->getAll("order"); $count=count($list["data"]); for ($i=0; $i < $count; $i++) { $list["data"][$i]["info"]=$this->order_status_msg[$list["data"][$i]["status"]];//自定义说明信息 } $this->load->view('bootstrap3/header'); $this->load->view('order_list.html',$list); $this->load->view('bootstrap3/footer'); } public function order(){ if($order=$this->input->get("order")){ $post_data=array( "key"=>"79f03107b921ef31310bd40a1415c1cb", "orderid"=>$order ); $back_data=$this->my_post("http://op.juhe.cn/trainTickets/orderStatus",$post_data); $data=array( "JOL_Status"=>$back_data["result"]["status"], "JOL_RebackMsg"=>$back_data["result"]["msg"] ); $this->load->model("BIZ_train_model"); //查询到订单最新情况,更新本地数据库 $this->BIZ_train_model->update_biz_jol(array("JOL_JuheOrder"=>$order),$data); // var_dump($back_data); $this->load->view('bootstrap3/header'); $this->load->view('order',$back_data); $this->load->view('bootstrap3/footer'); } } //取消订单 public function cancel_order(){ if($order=$this->input->get("order")){ $post_data=array( "key"=>$this->key, "orderid"=>$order ); $back=$this->my_post($this->qxdd_api,$post_data); var_dump($back); } } //请求出票,支付 public function pay(){ if($order=$this->input->get("order")){ $post_data=array( "key"=>$this->key, "orderid"=>$order ); $back=$this->my_post($this->pay_api,$post_data); var_dump($back); } } //线上退票 public function refund(){ if($order=$this->input->get("order")){ $post_data=array( "key"=>$this->key, "orderid"=>$order ); $back_data=$this->my_post($this->status_api,$post_data); $data=array( "JOL_Status"=>$back_data["result"]["status"], "JOL_RebackMsg"=>$back_data["result"]["msg"] ); $this->load->model("BIZ_train_model"); //查询到订单最新情况,更新本地数据库 $this->BIZ_train_model->update_biz_jol(array("JOL_JuheOrder"=>$order),$data); $this->load->view('bootstrap3/header'); $this->load->view('refund',$back_data); $this->load->view('bootstrap3/footer'); } } public function refund_do(){ $order=$this->input->get("order"); $passportseno=$this->input->get("passportseno"); $passporttypeseid=$this->input->get("passporttypeseid"); $ticket_no=$this->input->get("ticket_no"); $passengername=$this->input->get("name"); if(!empty($order) && !empty($passportseno) && !empty($passporttypeseid) && !empty($ticket_no) && !empty($passengername)){ $post_data=array( "key"=>$this->key, "orderid"=>$order, "tickets"=>'[{"ticket_no":"'.$ticket_no.'","passengername":"'.$passengername.'","passporttypeseid":"'.$passporttypeseid.'","passportseno":"'.$passportseno.'"}]', ); $back_data=$this->my_post($this->refund_api,$post_data); if($back_data["error_code"]==0){ echo ""; } } return; } function my_post($url,$post_data){ // $url = "http://op.juhe.cn/trainTickets/cityCode"; // $post_from = array("stationName" => $from,"key"=>"79f03107b921ef31310bd40a1415c1cb"); // $post_to = array("stationName" => $to,"key"=>"79f03107b921ef31310bd40a1415c1cb"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // post数据 curl_setopt($ch, CURLOPT_POST, 1); // post的变量 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); $output=json_decode($output,TRUE);//json => array return $output; } function get_data($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); return $output; } function post_data($url,$post_data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // post数据 curl_setopt($ch, CURLOPT_POST, 1); // post的变量 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); // $output=json_decode($output,TRUE);//json => array return $output; } }