From 735e16cdc0779cff9c04c8b39d80437968ec3495 Mon Sep 17 00:00:00 2001 From: cyc Date: Thu, 21 Nov 2019 11:20:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E7=BD=B2=E4=B8=8A=E7=BA=BF=E6=90=BA?= =?UTF-8?q?=E7=A8=8B=E6=94=B9=E7=AD=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../third_party/trainsystem/config/config.php | 2 +- .../trainsystem/controllers/api.php | 12 --- .../trainsystem/controllers/pages.php | 25 +++++- .../trainsystem/controllers/reschedule.php | 84 +++++++++++++++++++ .../trainsystem/controllers/returnorders.php | 48 +++++++++++ .../trainsystem/models/train_system_model.php | 37 ++++---- .../trainsystem/views/homepage.php | 2 +- .../third_party/trainsystem/views/refund.php | 33 +++++++- 8 files changed, 203 insertions(+), 40 deletions(-) create mode 100644 application/third_party/trainsystem/controllers/reschedule.php diff --git a/application/third_party/trainsystem/config/config.php b/application/third_party/trainsystem/config/config.php index d57e5a63..3b7e5327 100644 --- a/application/third_party/trainsystem/config/config.php +++ b/application/third_party/trainsystem/config/config.php @@ -47,7 +47,7 @@ $config["train_order_status_msg"]=array( "4"=>"出票成功", "5"=>"出票失败", "6"=>"线上退票处理中", - "7"=>"有乘客退票(改签)成功", + "7"=>"(改签)退票成功", "8"=>"乘客退票失败", "e"=>"数据错误,提交失败", "9"=>"改签成功" diff --git a/application/third_party/trainsystem/controllers/api.php b/application/third_party/trainsystem/controllers/api.php index 045d9f3b..94765fb8 100644 --- a/application/third_party/trainsystem/controllers/api.php +++ b/application/third_party/trainsystem/controllers/api.php @@ -342,16 +342,4 @@ class api extends CI_Controller{ //print_r($add_data); } } - - public function update_order(){ - $juhe_orders = $this->train_system_model->getallorders(); - foreach ($juhe_orders as $tickets_info){ - $ordernumber = $tickets_info->JOL_JuheOrder; - $subtime = $tickets_info->JOL_SubTime; - $price = $tickets_info->JOL_Price; - $this->train_system_model->update_juheorder($ordernumber,$subtime,$price); - } - - } - } \ No newline at end of file diff --git a/application/third_party/trainsystem/controllers/pages.php b/application/third_party/trainsystem/controllers/pages.php index 2c0494e5..5792dc4d 100644 --- a/application/third_party/trainsystem/controllers/pages.php +++ b/application/third_party/trainsystem/controllers/pages.php @@ -13,6 +13,7 @@ class pages extends CI_Controller{ $this->order_status_msg = $this->config->item('train_order_status_msg'); } + //首页 public function index($coli_id = null){ if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){ redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/'); @@ -123,7 +124,7 @@ class pages extends CI_Controller{ //根据订单号查询订单信息 $data = array(); - $train_infos = $this->train_system_model->get_train_infos($ordernumber); + $train_infos = $this->train_system_model->get_order_info($ordernumber); $passpager_detail = $this->train_system_model->get_passager_details($ordernumber); //构造详情数组 @@ -172,7 +173,7 @@ class pages extends CI_Controller{ //根据订单号查询订单信息 $data = array(); - $train_infos = $this->train_system_model->get_train_infos($ordernumber); + $train_infos = $this->train_system_model->get_order_info($ordernumber); $passpager_detail = $this->train_system_model->get_passager_details($ordernumber); //构造详情数组 @@ -199,6 +200,26 @@ class pages extends CI_Controller{ } + //改签页面 + public function reschedule(){ + if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){ + redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/'); + } + $order = $this->input->get_post('order'); + $data = array(); + $data['order'] = $order; + if(!empty($order)){ + $orderDetail = $this->train_system_model->ctripOrderDetail($order); + $data['detail'] = $orderDetail; + } + //print_r($data); + + $this->load->view('header'); + $this->load->view('reschedule',$data); + $this->load->view('footer'); + } + + //账单导出页面 public function export(){ if(get_cookie('dingname') == '' && get_cookie('dingunionid') == ''){ redirect('/apps/dinglogin/login/?returnurl=/apps/trainsystem/pages/'); diff --git a/application/third_party/trainsystem/controllers/reschedule.php b/application/third_party/trainsystem/controllers/reschedule.php new file mode 100644 index 00000000..57bc376a --- /dev/null +++ b/application/third_party/trainsystem/controllers/reschedule.php @@ -0,0 +1,84 @@ +load->helper('train'); + $this->load->model("train_system_model"); + } + + public function index(){ + echo 'reschrdule'; + } + + //携程改签模块 + public function ctripModel(){ + $orderNumber = $this->input->get_post('orderNumber'); + $orderNumber = 'guilintravel1573543590265'; + if(empty($orderNumber)){ + exit('orderNumber error'); + }else{ + //接收改签的火车参数 + $RescheduleTrainNumber = $this->input->get_post('RescheduleTrainNumber'); + $DepartStationName = $this->input->get_post('DepartStationName'); + $ArriveStationName = $this->input->get_post('ArriveStationName'); + $RescheduleDepartTime = $this->input->get_post('RescheduleDepartTime'); + $RescheduleArriveTime = $this->input->get_post('RescheduleArriveTime'); + $RescheduleTicketPrice = $this->input->get_post('RescheduleTicketPrice'); + $RescheduleSeatName = $this->input->get_post('RescheduleSeatName'); + $RescheduleAcceptSeatName = $this->input->get_post('RescheduleAcceptSeatName'); + $PassagerName = $this->input->get_post('PassagerName'); + $Ticketype = $this->input->get_post('Ticketype'); + $IdentityType = $this->input->get_post('IdentityType'); + $PassagerId = $this->input->get_post('PassagerId'); + $Coach = $this->input->get_post('Coach'); + $Seat = $this->input->get_post('Seat'); + + //开始改签流 + $postData = array(); + $time = date('Y-m-d H:i:s',time()); + $postData['Authentication'] = new stdClass(); + $postData['Authentication']->TimeStamp = $time; + $postData['Authentication']->ServiceName = 'order.partnerreschedule'; + $postData['Authentication']->PartnerName = 'Ctrip.Corp'; + $MessageIdentity = md5($time.'order.partnerreschedule'.ORDERKEY); + $postData['Authentication']->MessageIdentity = $MessageIdentity; + + $postData['TrainOrderService'] = new stdClass(); + $postData['TrainOrderService']->OrderNumber = $orderNumber; + $postData['TrainOrderService']->Operator = 'guilintravel'; + $postData['TrainOrderService']->RescheduleTrainNumber = $RescheduleTrainNumber; + $postData['TrainOrderService']->DepartStationName = $DepartStationName; + $postData['TrainOrderService']->ArriveStationName = $ArriveStationName; + $postData['TrainOrderService']->RescheduleDepartTime = $RescheduleDepartTime; + $postData['TrainOrderService']->RescheduleArriveTime = $RescheduleArriveTime; + $postData['TrainOrderService']->RescheduleTicketPrice = $RescheduleTicketPrice; + $postData['TrainOrderService']->RescheduleSeatName = $RescheduleSeatName['0']; + //$postData['TrainOrderService']->RescheduleAcceptSeatName = '无座'; + + $postData['TrainOrderService']->RescheduleTicketPassengerInfos = array(); + + foreach ($PassagerName as $key=>$name){ + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key] = new stdClass(); + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->eOrderNumber = ''; + if($Ticketype[$key] == '儿童票'){ + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->eOrderType = 2; + }else{ + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->eOrderType = 1; + } + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->realName = $name; + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->CarriageNo = $Coach[$key]; + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->seatNumber = $Seat[$key]; + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->passportName = $name; + $postData['TrainOrderService']->RescheduleTicketPassengerInfos[$key]->passport = $PassagerId[$key]; + } + + //print_r(json_encode($postData));die(); + $url = 'http://m.ctrip.com/restapi/soa2/11009/json/PartnerReschedule'; + $responseJson = GetPost_http($url,json_encode($postData),'json'); + print_r($responseJson); + } + } +} \ No newline at end of file diff --git a/application/third_party/trainsystem/controllers/returnorders.php b/application/third_party/trainsystem/controllers/returnorders.php index 86478387..d470d81d 100644 --- a/application/third_party/trainsystem/controllers/returnorders.php +++ b/application/third_party/trainsystem/controllers/returnorders.php @@ -185,5 +185,53 @@ class returnorders extends CI_Controller{ } } + //改签退票 + public function returnreschedule(){ + //接收数据 + $orderNumber = $this->input->get_post('orderNumber'); + $username = $this->input->get_post('username'); + $userid = $this->input->get_post('userid'); + + //判断数据是否完全 + if(empty($orderNumber) || empty($username) || empty($userid)){ + exit('参数错误'); + } + $postData = array(); + $time = date('Y-m-d H:i:s',time()); + $postData['Authentication'] = new stdClass(); + $postData['Authentication']->TimeStamp = $time; + $postData['Authentication']->ServiceName = 'order.partnerreturnreschedule'; + $postData['Authentication']->PartnerName = 'Ctrip.Corp'; + $MessageIdentity = md5($time.'order.partnerreschedule'.ORDERKEY); + $postData['Authentication']->MessageIdentity = $MessageIdentity; + + $postData['TrainOrderService'] = new stdClass(); + $postData['TrainOrderService']->Operator = 'guilintravel'; + $postData['TrainOrderService']->OrderNumber = $orderNumber; + $postData['TrainOrderService']->PartnerName = 'Ctrip.Corp'; + $postData['TrainOrderService']->ReturnReschedulePassengerInfos = array(); + + //获取乘客信息 + $passagerinfo = $this->train_system_model->get_passenger_info($orderNumber,$username,$userid); + $postData['TrainOrderService']->ReturnReschedulePassengerInfos = array(); + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0'] = new stdClass(); + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->eOrderNumber = $passagerinfo->ts_elecnumber; + if($passagerinfo->ts_elecnumber == '儿童票'){ + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->eOrderType = 2; + }else{ + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->eOrderType = 1; + } + $rescheduledetail = json_decode($passagerinfo->ts_reschedulecallback); + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->realName = $passagerinfo->tst_realname; + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->CarriageNo = $rescheduledetail->TrainOrderService->OrderInfo->RescheduleTicketInfo->RescheduleTickets->RescheduleTicket->ResCarriageNo; + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->seatNumber = $rescheduledetail->TrainOrderService->OrderInfo->RescheduleTicketInfo->RescheduleTickets->RescheduleTicket->ResSeatNumber; + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->passportName = $passagerinfo->tst_realname; + $postData['TrainOrderService']->ReturnReschedulePassengerInfos['0']->passport = $passagerinfo->tst_numberid; + + $url = 'http://m.ctrip.com/restapi/soa2/11009/json/PartnerReturnRescheduleService'; + $responseJson = GetPost_http($url,json_encode($postData),'json'); + print_r($responseJson); + } + } \ No newline at end of file diff --git a/application/third_party/trainsystem/models/train_system_model.php b/application/third_party/trainsystem/models/train_system_model.php index 945e66cd..dbf149dd 100644 --- a/application/third_party/trainsystem/models/train_system_model.php +++ b/application/third_party/trainsystem/models/train_system_model.php @@ -9,6 +9,7 @@ class train_system_model extends CI_Model { $this->INFO = $this->load->database('INFO', TRUE); } + //获取订单(用于订单列表) public function get_order($pagesize=2,$page=0,$where="1=1"){ $data=new StdClass(); //获取总条数 @@ -74,18 +75,6 @@ class train_system_model extends CI_Model { return $query->result(); } - //获取火车信息 - public function get_train_infos($ordernumber){ - $sql = "select * from trainsystem where ts_ordernumber = '{$ordernumber}'"; - $query = $this->INFO->query($sql); - return $query->row(); - } - - public function update_passpager_status($status,$passagerid){ - $sql = "update trainsystem_tickets set tst_status = '{$status}' where tst_id = '{$passagerid}'"; - $query = $this->INFO->query($sql); - } - //添加订单 function add_orders($data){ $sql=" @@ -144,6 +133,7 @@ class train_system_model extends CI_Model { return $query->row(); } + //新增乘客 function add_passagers($data){ $sql = "IF EXISTS (select * from trainsystem_tickets where tst_ordernumber = '{$data->ordernumber}' and tst_numberid = '{$data->numberid}' and tst_realname = '{$data->realname}') update @@ -188,6 +178,7 @@ class train_system_model extends CI_Model { $query =$this->INFO->query($sql); } + //更新订单信息 public function update_orders($data){ $where = ''; if(!empty($data->bookcallback)){ @@ -236,6 +227,7 @@ class train_system_model extends CI_Model { $query = $this->INFO->query($sql); } + //获取订单出票状态 public function get_tickets_info($cold_sn){ $sql = "select ts_cold_sn,ts_ordernumber,tst_realname,tst_numberid,tst_status from trainsystem left join trainsystem_tickets on ts_ordernumber = tst_ordernumber where ts_cold_sn = ? and ts_status = '4'"; $query = $this->INFO->query($sql,array($cold_sn)); @@ -244,32 +236,31 @@ class train_system_model extends CI_Model { return $query->result(); } + //获取所有订单 public function getallorders(){ $sql = "select * from Tourmanager.dbo.BIZ_JuheOrderList where JOL_SubTime > '2019-03-01' and (JOL_Status = '4' or JOL_Status = '7')"; $query = $this->HT->query($sql); return $query->result(); } - public function update_juheorder($ordernumber,$subtime,$price){ - $sql = "update trainsystem set ts_subtime = ? , ts_orderamount = ? where ts_ordernumber = ?"; - $query = $this->INFO->query($sql,array($subtime,$price,$ordernumber)); - } - - //根据cold_sn 获取出票情况 + //根据cold_sn 获取出票情况(仅限出票成功) public function get_ticketinfos($cold_sn){ $sql = "select * from trainsystem where ts_cold_sn = ? and ts_status = '4'"; $query = $this->INFO->query($sql,array($cold_sn)); return $query->row(); } + //获取订单信息 根据第三方订单号查询 public function get_order_info($ordernumber){ - $sql = "select * from trainsystem where ts_ordernumber = '$ordernumber'"; - $query = $this->INFO->query($sql); + $sql = "select * from trainsystem where ts_ordernumber = ?"; + $query = $this->INFO->query($sql,array($ordernumber)); return $query->row(); } - public function test(){ - $sql = "delete from trainsystem where ts_id in ('13111','13081')"; - $query = $this->INFO->query($sql); + //获取携程出票成功的订单详情 + public function ctripOrderDetail($ordernumber){ + $sql = "select * from trainsystem left join trainsystem_tickets on ts_ordernumber = tst_ordernumber where ts_ordernumber = ? and ts_channel = 'ctrip' and ts_status = 4"; + $query = $this->INFO->query($sql,array($ordernumber)); + return $query->result(); } } \ No newline at end of file diff --git a/application/third_party/trainsystem/views/homepage.php b/application/third_party/trainsystem/views/homepage.php index 88321104..49127619 100644 --- a/application/third_party/trainsystem/views/homepage.php +++ b/application/third_party/trainsystem/views/homepage.php @@ -77,7 +77,7 @@ function selseat(seat){
-

翰特订单号 订单列表>>导出交易记录>> 版本:V2.0聚合余额(RMB):

+

翰特订单号 订单列表>>携程改签>>导出交易记录>> 版本:V2.0聚合余额(RMB):

diff --git a/application/third_party/trainsystem/views/refund.php b/application/third_party/trainsystem/views/refund.php index 2737c70b..3792b14b 100644 --- a/application/third_party/trainsystem/views/refund.php +++ b/application/third_party/trainsystem/views/refund.php @@ -9,10 +9,14 @@ echo '

'.$from_station_name.''.$to_station_name.'

'; echo '

'; echo '

'.$items->tst_realname.'('.$items->tst_ticketype.')    '.$items->tst_seatstype.'  '.$items->tst_seatdetail.'    票价:¥'.$items->tst_ticketprice.'

'; - if((int)$items->tst_status != 7){ + if((int)$items->tst_status == 4){ echo '

'; echo '退票'; echo '

'; + }elseif((int)$items->tst_status == 9){ + echo '

'; + echo '改签退票'; + echo '

'; }else{ $info = json_decode($items->tst_returncallback); echo '

'; @@ -25,6 +29,7 @@ \ No newline at end of file
退票处理