diff --git a/application/third_party/train/controllers/auto.php b/application/third_party/train/controllers/auto.php
new file mode 100644
index 00000000..a6d1dff4
--- /dev/null
+++ b/application/third_party/train/controllers/auto.php
@@ -0,0 +1,385 @@
+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");//加载模型
+ }
+
+
+ //用于自动出票,接收COLI_SN
+ public function auto_pay_ticket(){
+ date_default_timezone_set('Asia/Shanghai');
+ // $coli_sn="473013018";
+ $coli_sn = $this->input->post("coli_sn");
+ $list=new StdClass;
+ $back_data = 1;
+
+ if(!empty($coli_sn)){
+ $cold_sn=$this->BIZ_train_model->get_cold_sn($coli_sn);
+ $coli_id = $this->BIZ_train_model->coli_sn_get_coli_id($coli_sn);
+ $i = 0;
+ $list->info=array();
+ foreach ($cold_sn as $v) {
+ if($v->COLD_SPFS > 1){
+ //寄送票
+ $back_data = 0;
+ break;
+ }
+ $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);
+
+ if(count($list->info[$i]->people) > 5){
+ $back_data = 0;
+ break;
+ };
+ if((strtotime($list->info[$i]->train[0]->DepartureTime) - time())/3600 < 3 or (strtotime($list->info[$i]->train[0]->DepartureTime) - time())/24/3600 >29){
+ $back_data = 0;
+ break;
+ }
+ if($list->info[$i]->train[0]->adultcost > 1000){
+ $back_data = 0;
+ break;
+ }
+ $i++;
+ }
+ if($back_data == 0){
+ echo 0;
+ return false;
+ }else{
+ foreach ($cold_sn as $v) {
+ $reback = $this->submit_juhe_order($v->COLD_SN,$coli_id[0]->COLI_ID);
+ if($reback["status"] && !empty($reback["order"])){
+ $back_data .= ",".$reback["order"];
+ }
+ }
+ }
+ $back_data = substr($back_data, 2);
+ if($back_data){ //这里 $back_data 还有可能没数据,所以判断一下
+ echo $back_data;
+ }else{
+ echo 0;
+ }
+ return false;
+ }
+
+ }
+ //根据汉特订单明细表SN来获取车次,乘客信息,拼接成聚合提交订单的url
+ public function submit_juhe_order($cold_sn,$coli_id) {
+ // $cold_sn=$this->input->get("order");
+
+ $data = array();
+ $reback=array();//返回数据
+ $reback["status"]=0;
+ $reback["mes"]="";
+ // $reback["order"] = "123";
+ // return $reback;die;
+ if(!is_numeric($cold_sn)){
+ $reback["mes"]="订单号是数字";
+ echo json_encode($reback);
+ return false;
+ }
+ $data['train'] = $this->BIZ_train_model->biz_order_detail($cold_sn);
+ if (empty($data['train'])) {
+ //显示错误,找不到车次
+ $reback["mes"]="找不到车次";
+ echo json_encode($reback);
+ return false;
+
+ }
+
+ $data['people_list'] = $this->BIZ_train_model->biz_people($cold_sn);
+ 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;
+ }
+
+ $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;
+ $reback["status"]=1;
+ $reback["order"]=$bakc->result->orderid;
+ $reback["mes"]="订单提交成功,等待回调";
+ $this->send_mail_to_wl("订单:{$coli_id} 提交成功","翰特订单号:{$coli_id} ;聚合订单号:{$bakc->result->orderid}");
+ }else{
+ $add_data->JOL_JuheOrder=null;
+ $reback["mes"]= $bakc_json;
+ $add_data->JOL_Status="e";
+ $this->send_mail_to_wl("订单:{$coli_id} 提交失败","翰特订单号:{$coli_id}");
+ }
+ $add_back_data=$this->BIZ_train_model->add_biz_jol($add_data);
+
+ return $reback;
+ }
+ public function ticket_status($coli_sn="",$jh_id=""){
+ if(empty($coli_sn)){
+ $coli_sn = $this->input->get("sn");
+ }
+ if(empty($jh_id)){
+ $jh_id = $this->input->get("reback");
+ }
+ if(empty($coli_sn) or empty($jh_id)){
+ echo "error";
+ return false;
+ }
+ $jh_id = explode(",", $jh_id);
+
+ $cold_sn = $this->BIZ_train_model->get_cold_sn($coli_sn);
+ $cols_id = $this->BIZ_train_model->coli_sn_get_coli_id($coli_sn);
+ if(empty($cold_sn)){
+ echo "error";
+ return false;
+ }else{
+ $list=new StdClass;
+ $list->info=array();
+ foreach ($cold_sn as $key => $v) {
+ $list->info[$key]=new StdClass;
+ $list->info[$key]->people=$this->BIZ_train_model->biz_people($v->COLD_SN);
+ $list->info[$key]->train=$this->BIZ_train_model->get_biz_foi($v->COLD_SN);
+ foreach ($jh_id as $jh_id_v) {
+ $list->info[$key]->order_info = $this->BIZ_train_model->get_biz_jol_info($v->COLD_SN,$jh_id_v);
+ if(!empty($list->info[$key]->order_info)) break;
+ }
+ }
+ }
+ $list->cols_id = $cols_id[0]->COLI_ID;
+ $this->load->view("ticket_status",$list);
+ }
+ //发邮件给外联
+ public function send_mail_to_wl($subject,$body){
+ $this->load->model("Sendmail_model");
+ $fromName = "csk";
+ $fromEmail = "csk@hainatravel.com";
+ $toName = "ethel";
+ $toEmail = "ethel@chinahighlights.com";
+ $this->Sendmail_model->SendGuest($fromName,$fromEmail,$toName,$toEmail,$subject,$body);
+ }
+ //发邮件给客人
+ public function send_mail_to_guest($coli_id,$jh_order){
+ $this->load->model("Sendmail_model");
+ $guest = $this->BIZ_train_model->get_guest_info($coli_id);
+ $fromName = "sharon";
+ $fromEmail = "sharon@chinahighlights.com";
+ $toName = $guest[0]->GUT_LastName;
+ $toEmail = $guest[0]->GUT_Email;
+ $subject = "auto pay test $jh_order";
+ $body = "csk test train ticket $jh_order";
+ $this->Sendmail_model->SendGuest($fromName,$fromEmail,$toName,$toEmail,$subject,$body);
+ }
+ //
+ public function sub_callback(){
+ $data_post=$this->input->post();
+ // $data_post["data"]='{"from_station_name":"桂林北","from_station_code":"GBZ","to_station_name":"柳州","to_station_code":"LZZ","train_date":"2017-01-05","orderid":"111111H","user_orderid":"488015272","orderamount":null,"ordernumber":null,"checi":"K457","msg":"没有余票","status":"4","passengers":[{"passengerid":1,"passengersename":"CSK","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E132124","price":"1","zwcode":"1","zwname":"硬座"},{"passengerid":2,"passengersename":"TW","piaotype":"1","piaotypename":"成人票","passporttypeseid":"B","passporttypeseidname":"护照","passportseno":"E02030609","price":"1","zwcode":"1","zwname":"硬座"}],"refund_money":null,"sign":"a5bc2ac8ef2b3a4c1bca323c3898e748"}';
+ $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;
+
+ $coli_id = $this->BIZ_train_model->cold_sn_get_coli_id($data->user_orderid);
+
+ $add_train_order_data = new StdClass;
+ 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);
+ $this->send_mail_to_wl("订单:{$coli_id[0]->COLI_ID} 出票成功","翰特订单号:{$coli_id[0]->COLI_ID};聚合订单号:{$data->orderid}");
+ $this->send_mail_to_guest($coli_id[0]->COLI_ID,$data->orderid);
+ }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);
+ }else{
+ $this->send_mail_to_wl("订单:{$coli_id[0]->COLI_ID} 出票失败","翰特订单号:{$coli_id[0]->COLI_ID};聚合订单号:{$data->orderid};返回信息:{$data->msg}");
+ }
+
+
+ $this->op->update_jh_order($update_data);
+ echo "success";
+ }
+
+
+
+ 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;
+ }
+
+}
\ No newline at end of file
diff --git a/application/third_party/train/controllers/index.php b/application/third_party/train/controllers/index.php
index 01cd7176..4b0098de 100644
--- a/application/third_party/train/controllers/index.php
+++ b/application/third_party/train/controllers/index.php
@@ -868,14 +868,6 @@ class Index extends CI_Controller{
}
//输入翰特订单号cols_id,获取火车订票的相关信息,模拟翰特订单详情页面
public function ht_train_order(){
- $data=array();
- $coli_id=$this->input->post("ht_order");//商务订单号
- //外联信息
-
-
-
-
-
$cols_id=$this->input->post("ht_order");
$list=new StdClass;
if(!empty($cols_id)){
@@ -1162,8 +1154,7 @@ class Index extends CI_Controller{
$back_data=$this->my_post($this->refund_api,$post_data);
if($back_data["error_code"]==0){
- echo "";
-
+ echo "";
}
}
return;
diff --git a/application/third_party/train/models/BIZ_train_model.php b/application/third_party/train/models/BIZ_train_model.php
index 3d5ee7b4..4127eeee 100644
--- a/application/third_party/train/models/BIZ_train_model.php
+++ b/application/third_party/train/models/BIZ_train_model.php
@@ -106,8 +106,6 @@ class BIZ_train_model extends CI_Model {
$query = $this->HT->query($sql, $cols_id);
return $query->result();
}
-
-
//传入COLD_SN,获取火车车次等信息
function get_biz_foi($cold_sn) {
@@ -192,4 +190,64 @@ class BIZ_train_model extends CI_Model {
$query = $this->HT->query($sql, $coli_id);
return $query->result();
}
+
+ //-----------------------------自动出票 begin-----------
+ //用于自动出票,传入主订单翰特订单号COLI_SN,获取子订单中火车订单的COLD_SN和COLD_SPFS(寄送票标示,大于1的为寄送)
+ public function get_cold_sn($COLI_SN){
+ $sql="SELECT COLD_SN,COLD_SPFS
+ FROM BIZ_ConfirmLineDetail bcld
+ WHERE bcld.COLD_COLI_SN=?
+ AND bcld.DeleteFlag=0 AND bcld.COLD_ServiceType='2'";
+ $query = $this->HT->query($sql,$COLI_SN);
+ return $query->result();
+ }
+ //用于自动出票,传入主订单翰特订单号 COLI_ID ,获取客人的姓名和邮箱
+ public function get_guest_info($COLI_ID){
+ $sql = "SELECT GUT_LastName,GUT_Email FROM BIZ_GUEST bg WHERE bg.GUT_SN =
+ ( SELECT COLI_GUT_SN FROM BIZ_ConfirmLineInfo bcli WHERE bcli.COLI_ID = ?)
+ ";
+ $query = $this->HT->query($sql,$COLI_ID);
+ return $query->result();
+ }
+ //通过 JOL_JuheOrder 获取 BIZ_JuheOrderList 获取聚合订单详情
+ public function get_biz_jol_info($cold_sn,$jol_jo){
+ $sql = "SELECT top 1
+ JOL_SN,
+ JOL_COLD_SN,
+ JOL_JuheOrder,
+ JOL_SubTime,
+ JOL_Status,
+ JOL_RebackMsg,
+ JOL_FromStation,
+ JOL_ToStation,
+ JOL_FromStationCode,
+ JOL_ToStationCode,
+ JOL_TrainCode,
+ JOL_Price,
+ JOL_PayTime,
+ JOL_BackTxt
+ FROM BIZ_JuheOrderList
+ WHERE JOL_COLD_SN = ? AND JOL_JuheOrder = ?
+ ";
+ $query = $this->HT->query($sql,array($cold_sn,$jol_jo));
+ return $query->result();
+ }
+ // 传入coli_sn获取订单号
+ public function coli_sn_get_coli_id($coli_sn){
+ $sql="SELECT COLI_ID FROM BIZ_ConfirmLineInfo WHERE COLI_SN = ?
+ ";
+ $query = $this->HT->query($sql,array($coli_sn));
+ return $query->result();
+ }
+ // 传入 cold_sn 获取订单号
+ public function cold_sn_get_coli_id($cold_sn){
+ $sql="SELECT COLI_ID FROM BIZ_ConfirmLineInfo
+ WHERE COLI_SN = (
+ SELECT COLD_COLI_SN FROM BIZ_ConfirmLineDetail WHERE COLD_SN = ?
+ )
+ ";
+ $query = $this->HT->query($sql,array($cold_sn));
+ return $query->result();
+ }
+ //-----------------------------自动出票 end-----------
}