部署上线携程改签功能

mobile-first
cyc 6 years ago
parent b5d6c429cb
commit 735e16cdc0

@ -47,7 +47,7 @@ $config["train_order_status_msg"]=array(
"4"=>"出票成功",
"5"=>"出票失败",
"6"=>"线上退票处理中",
"7"=>"有乘客退票(改签)成功",
"7"=>"(改签)退票成功",
"8"=>"乘客退票失败",
"e"=>"数据错误,提交失败",
"9"=>"改签成功"

@ -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);
}
}
}

@ -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/');

@ -0,0 +1,84 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class reschedule extends CI_Controller{
public function __construct(){
parent::__construct();
$this->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);
}
}
}

@ -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);
}
}

@ -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();
}
}

@ -77,7 +77,7 @@ function selseat(seat){
<div style="width:90%;margin:30px auto;">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">翰特订单号&nbsp;<a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/order_list');?>">订单列表>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/export');?>">导出交易记录>></a> <span style="margin-left:200px;">版本V2.0</span><span class="pull-right">聚合余额(RMB)<?php echo $balance;?></span></h3>
<h3 class="panel-title">翰特订单号&nbsp;<a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/order_list');?>">订单列表>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/reschedule');?>">携程改签>></a><a style="margin-left:50px;" target='_blank' href="<?php echo site_url('apps/trainsystem/pages/export');?>">导出交易记录>></a> <span style="margin-left:200px;">版本V2.0</span><span class="pull-right">聚合余额(RMB)<?php echo $balance;?></span></h3>
</div>
<div class="panel-body">
<form style="width: 300px;float: left;" action="/info.php/apps/trainsystem/pages/index/" method="post">

@ -9,10 +9,14 @@
echo '<p>'.$from_station_name.'<span class="glyphicon glyphicon-arrow-right"></span>'.$to_station_name.'</p>';
echo '<p style="border-top:1px dashed #000; height:1px;margin-top:10px;" ></p>';
echo '<p>'.$items->tst_realname.'('.$items->tst_ticketype.')&nbsp;&nbsp;&nbsp;&nbsp;'.$items->tst_seatstype.'&nbsp;&nbsp;'.$items->tst_seatdetail.'&nbsp;&nbsp;&nbsp;&nbsp;票价:¥'.$items->tst_ticketprice.'</p>';
if((int)$items->tst_status != 7){
if((int)$items->tst_status == 4){
echo '<p>';
echo '<a href="###" style="padding:5px 15px;" class="btn btn-warning btn-sm returnticket" name="'.$items->tst_realname.'" passid="'.$items->tst_numberid.'"><span class="glyphicon glyphicon-remove"></span>退票</a>';
echo '</p>';
}elseif((int)$items->tst_status == 9){
echo '<p>';
echo '<a href="###" style="padding:5px 15px;" class="btn btn-warning btn-sm reschedulereturn" name="'.$items->tst_realname.'" passid="'.$items->tst_numberid.'"><span class="glyphicon glyphicon-remove"></span>改签退票</a>';
echo '</p>';
}else{
$info = json_decode($items->tst_returncallback);
echo '<p><table class="table table-bordered table-hover" style="text-align:center;"><tr><th colspan="2" style="text-align:center;">退票处理</th></tr>';
@ -25,6 +29,7 @@
</div>
<script>
$(function(){
//正常退票
$('.returnticket').click(function(){
var url = <?php echo "'http://www.mycht.cn/info.php/apps/trainsystem/returnorders/returntickets?ordernumber=$ordernumber'"?>;
var return_ticket = $(this);
@ -44,5 +49,31 @@ $(function(){
}
});
});
//改签退票
$('.reschedulereturn').click(function(){
var orderNumber = '<?php echo $ordernumber?>';
name = $(this).attr('name');
passid = $(this).attr('passid');
$.ajax({
url:'/info.php/apps/trainsystem/returnorders/returnreschedule',
type:'POST',
data:{
orderNumber:orderNumber,
username:name,
userid:passid
},
beforeSend:function(){
$('.reschedulereturn').html('退票请求已发送...');
$('.reschedulereturn').addClass('disabled');
},
success:function(json,status){
var data = $.parseJSON(json);
alert(data.Msg);
$('.reschedulereturn').html('改签退票');
$('.reschedulereturn').removeClass('disabled');
}
});
});
});
</script>
Loading…
Cancel
Save