You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
468 lines
18 KiB
PHP
468 lines
18 KiB
PHP
<?php
|
|
if (!defined('BASEPATH'))
|
|
exit('No direct script access allowed');
|
|
|
|
class api extends CI_Controller{
|
|
|
|
public function __construct(){
|
|
parent::__construct();
|
|
$this->load->helper('train');
|
|
$this->load->model("BIZ_train_model");
|
|
$this->load->model("train_system_model");
|
|
$this->load->model("Sendmail_model");
|
|
}
|
|
|
|
public function index(){
|
|
echo 'api manager';
|
|
}
|
|
|
|
public function checkOrderTime($coli_id=null){
|
|
if(empty($coli_id)){
|
|
exit('error null');
|
|
}else{
|
|
$orderInfo = $this->BIZ_train_model->getAllColdSn($coli_id);
|
|
if(empty($orderInfo)){
|
|
exit('error null');
|
|
}else{
|
|
$returnData = array();
|
|
$returnData['orderList'] = array();
|
|
foreach ($orderInfo as $items){
|
|
$coldSn = $items->cold_sn;
|
|
$trainOrderInfo = $this->train_system_model->get_ticketinfos($coldSn);
|
|
if(empty($trainOrderInfo)){
|
|
continue;
|
|
}else{
|
|
$data = new stdCLass();
|
|
$htOrderInfo = $this->BIZ_train_model->biz_order_detail($coldSn);
|
|
$data->coldSn = $coldSn;
|
|
$data->htDepartureTime = date('Y-m-d H:i:s',strtotime($htOrderInfo->DepartureTime));
|
|
if($trainOrderInfo->ts_channel == 'juhe'){
|
|
$post_data=array(
|
|
"key"=>"79f03107b921ef31310bd40a1415c1cb",
|
|
"orderid"=>$trainOrderInfo->ts_ordernumber
|
|
);
|
|
$juheOrderDetail = json_decode(GetPost_http('http://op.juhe.cn/trainTickets/orderStatus',$post_data));
|
|
//print_r($juheOrderDetail);
|
|
$data->trainStartTime = $juheOrderDetail->result->start_time;
|
|
}else{
|
|
$data->trainStartTime = $trainOrderInfo->ts_startdate.' '.$trainOrderInfo->ts_startime;
|
|
}
|
|
|
|
array_push($returnData['orderList'],$data);
|
|
}
|
|
}
|
|
print_r(json_encode($returnData));
|
|
}
|
|
}
|
|
}
|
|
|
|
//获取订单出票状态
|
|
public function isbooktickets(){
|
|
$orderIdListStr = $this->input->get('orderIdListStr');
|
|
if($orderIdListStr == ''){
|
|
exit('数据为空!');
|
|
}
|
|
|
|
$orderData = explode(',',$orderIdListStr);
|
|
|
|
//$orderData = ['2005075526','2004125562','2005055512','2003305598'];
|
|
|
|
$returnData = new stdCLass();
|
|
$returnData->pending = array();
|
|
$returnData->processing = array();
|
|
$returnData->confirmed = array();
|
|
|
|
if(!empty($orderData)){
|
|
foreach($orderData as $itemId){
|
|
$orderInfo = new stdCLass();
|
|
$doTicketsNum = 0;
|
|
$orderInfo->coliId = $itemId;
|
|
$priceInfo = $this->BIZ_train_model->get_paypal($itemId);
|
|
$orderInfo->totalPrice = (int) $priceInfo->COLI_Price;
|
|
|
|
$orderInfo->itinerary = array();
|
|
|
|
$coldSnArr = $this->BIZ_train_model->getAllColdSn($itemId);
|
|
$itineraryNums = count($coldSnArr);
|
|
|
|
if(empty($priceInfo->GAI_SQJE)){
|
|
$orderInfo->topstatus = 'pending';
|
|
foreach ($coldSnArr as $keyColdSn=>$itemColdSn){
|
|
$train_info = $this->BIZ_train_model->biz_order_detail($itemColdSn->cold_sn);
|
|
|
|
$today = time();
|
|
if(strtotime($itemColdSn->COLI_ApplyDate) - $today < 259200){
|
|
$orderInfo->totalPrice = $orderInfo->totalPrice - 0;
|
|
continue;
|
|
}
|
|
|
|
$orderInfo->itinerary[$keyColdSn] = new stdClass();
|
|
$orderInfo->itinerary[$keyColdSn]->coldSn = $train_info->FOI_COLD_SN;
|
|
$orderInfo->itinerary[$keyColdSn]->departureCity = $train_info->DepartureCity;
|
|
$orderInfo->itinerary[$keyColdSn]->arrivalCity = $train_info->ArrivalCity;
|
|
$orderInfo->itinerary[$keyColdSn]->departureDate = date('Y-m-d',strtotime($train_info->DepartureDate));
|
|
$orderInfo->itinerary[$keyColdSn]->departureTime = date('H:i',strtotime($train_info->DepartureTime));
|
|
$orderInfo->itinerary[$keyColdSn]->arrivalTime = date('H:i',strtotime($train_info->ArrivalTime));
|
|
$orderInfo->itinerary[$keyColdSn]->Cabin = $train_info->Cabin;
|
|
$orderInfo->itinerary[$keyColdSn]->FlightsNo = $train_info->FlightsNo;
|
|
$orderInfo->itinerary[$keyColdSn]->passagerInfos = $this->BIZ_train_model->biz_people($itemColdSn->cold_sn);
|
|
array_push($returnData->pending,$orderInfo);
|
|
}
|
|
|
|
}else{
|
|
foreach ($coldSnArr as $keyColdSn=>$itemColdSn){
|
|
$train_info = $this->BIZ_train_model->biz_order_detail($itemColdSn->cold_sn);
|
|
|
|
$orderInfo->itinerary[$keyColdSn] = new stdClass();
|
|
$orderInfo->itinerary[$keyColdSn]->coldSn = $train_info->FOI_COLD_SN;
|
|
$orderInfo->itinerary[$keyColdSn]->departureCity = $train_info->DepartureCity;
|
|
$orderInfo->itinerary[$keyColdSn]->arrivalCity = $train_info->ArrivalCity;
|
|
$orderInfo->itinerary[$keyColdSn]->departureDate = date('Y-m-d',strtotime($train_info->DepartureDate));
|
|
$orderInfo->itinerary[$keyColdSn]->departureTime = date('H:i',strtotime($train_info->DepartureTime));
|
|
$orderInfo->itinerary[$keyColdSn]->arrivalTime = date('H:i',strtotime($train_info->ArrivalTime));
|
|
$orderInfo->itinerary[$keyColdSn]->Cabin = $train_info->Cabin;
|
|
$orderInfo->itinerary[$keyColdSn]->FlightsNo = $train_info->FlightsNo;
|
|
$orderInfo->itinerary[$keyColdSn]->passagerInfos = $this->BIZ_train_model->biz_people($itemColdSn->cold_sn);
|
|
$ticketinfo = $this->train_system_model->get_tickets_info($itemColdSn->cold_sn);
|
|
|
|
if(!empty($ticketinfo)){
|
|
//获取子订单出票状态
|
|
$doTicketsNum++;
|
|
$orderInfo->itinerary[$keyColdSn]->status = $ticketinfo->ts_status;
|
|
$orderInfo->itinerary[$keyColdSn]->elecnumber = $ticketinfo->ts_elecnumber;
|
|
$orderInfo->itinerary[$keyColdSn]->seatsinfo = $ticketinfo->ts_seatsinfo;
|
|
}
|
|
}
|
|
|
|
if($doTicketsNum == $itineraryNums){
|
|
$orderInfo->topstatus = 'confirmed';
|
|
array_push($returnData->confirmed,$orderInfo);
|
|
}elseif($doTicketsNum < $itineraryNums){
|
|
$orderInfo->topstatus = 'processing';
|
|
array_push($returnData->processing,$orderInfo);
|
|
}
|
|
}
|
|
}
|
|
print_r(json_encode($returnData));
|
|
}
|
|
}
|
|
|
|
//用于自动发送确认信
|
|
public function send_confirmmail(){
|
|
//log_message('error','auto sendmail');
|
|
$mailarr = $this->BIZ_train_model->auto_sendmail();
|
|
foreach($mailarr as $obj){
|
|
$coli_id = $this->BIZ_train_model->cold_sn_get_coli_id($obj->ts_cold_sn);
|
|
$coli_id = $coli_id[0]->COLI_ID;
|
|
$juhe_order = $obj->ts_ordernumber;
|
|
$this->send_mail_to_guest($coli_id,$juhe_order);
|
|
}
|
|
}
|
|
|
|
//发邮件给客人
|
|
function send_mail_to_guest($coli_id,$jh_order){
|
|
$info = $this->BIZ_train_model->get_user_info($jh_order);
|
|
$guest = $this->BIZ_train_model->get_guest_info($coli_id);
|
|
$operator_info = $this->BIZ_train_model->get_operatorInfo($coli_id);
|
|
$fromName = $operator_info[0]->Name;
|
|
$fromEmail = $operator_info[0]->OPI_Email;
|
|
$toName = $guest[0]->GUT_LastName.$guest[0]->GUT_FirstName;
|
|
$toEmail = $guest[0]->GUT_Email;//
|
|
$data['coli_id'] = $coli_id;
|
|
$data['toname'] = $toName;
|
|
$data['adult'] = $info->COLD_PersonNum;
|
|
$data['chlid'] = $info->COLD_ChildNum;
|
|
$data['baby'] = $info->COLD_BabyNum;
|
|
$data['price'] = $this->BIZ_train_model->get_paypal($coli_id);
|
|
if($data['price']->GAI_SQJECurrency == 'CNY'){
|
|
$data['price']->GAI_SQJECurrency == 'RMB';
|
|
}
|
|
$data['allpeople'] = $this->BIZ_train_model->biz_people($info->COLD_SN);
|
|
$data['train_info'] = $this->BIZ_train_model->biz_order_detail($info->COLD_SN);
|
|
$differtime = (strtotime($data['train_info']->DepartureTime) - time()) / 3600;
|
|
$obj = $this->BIZ_train_model->get_biz_jol_info($info->COLD_SN,$jh_order);
|
|
$data['elecnumber'] = $obj->ts_elecnumber;
|
|
$status = $obj->ts_status;
|
|
$data['operator'] = $operator_info;
|
|
$data['emailarr'] = explode(';',$operator_info[0]->Email);
|
|
|
|
$data['seatinfo'] = $obj->ts_seatsinfo;
|
|
|
|
if($status == '4' && $differtime > 0){
|
|
$subject = "Got payment and issued train ticket(s), Order No $coli_id";
|
|
$body = $this->load->view('email',$data,true);
|
|
$this->send_mail_to_wl("订单:{$coli_id} 出票成功","翰特订单号:{$coli_id};聚合订单号:{$jh_order}",$coli_id);
|
|
//发送邮件给客人
|
|
$flag = $this->Sendmail_model->SendMailToTable($fromName,$fromEmail,$toName,$toEmail,$subject,$body);
|
|
$this->BIZ_train_model->update_biz_jol(array("ts_ordernumber"=>$jh_order),array("ts_sendmail"=>1,"ts_m_sn"=>$flag));
|
|
}else if($status == '1'){
|
|
$subject = "The train ticket(s) will be issued manually, Order No $coli_id";
|
|
$body = $this->load->view('email_fault',$data,true);
|
|
$this->send_mail_to_wl("订单:{$coli_id} 出票失败","翰特订单号:{$coli_id};聚合订单号:{$jh_order}",$coli_id);
|
|
//测试阶段,将失败邮件发送一份给操作外联。
|
|
$flag = $this->Sendmail_model->SendMailToTable($fromName,$fromEmail,$fromName,$fromEmail,$subject,$body);
|
|
//测试阶段,将失败邮件发送一份给操作外联。
|
|
$this->Sendmail_model->SendMailToTable($fromName,$fromEmail,$toName,$toEmail,$subject,$body);
|
|
$this->BIZ_train_model->update_biz_jol(array("ts_ordernumber"=>$jh_order),array("ts_sendmail"=>1,"ts_m_sn"=>$flag));
|
|
}
|
|
|
|
}
|
|
|
|
//发邮件给外联
|
|
function send_mail_to_wl($subject=null,$body=null,$coli_id=null){
|
|
header('Access-Control-Allow-Origin:*');
|
|
header('Access-Control-Allow-Methods:POST, GET');
|
|
header('Access-Control-Max-Age:0');
|
|
header('Access-Control-Allow-Headers:x-requested-with, Content-Type');
|
|
header('Access-Control-Allow-Credentials:true');
|
|
$fromName = "cyc";
|
|
$fromEmail = "cyc@hainatravel.com";
|
|
if(empty($coli_id)){
|
|
$toName = 'Sharon';
|
|
$toEmail = 'sharon@chinahighlights.com';
|
|
$fromEmail = $this->input->get_post('concatEmail');
|
|
$body = $this->input->get_post('addrequest');
|
|
if(empty($fromEmail) && empty($body)){
|
|
exit('error');
|
|
}
|
|
}else{
|
|
//获取该订单的操作员的邮箱以及姓名
|
|
$info = $this->BIZ_train_model->get_operatorInfo($coli_id);
|
|
$toName = $info[0]->OPI_Name;
|
|
$toEmail = $info[0]->OPI_Email;
|
|
}
|
|
|
|
$obj = $this->Sendmail_model->SendMailToTable($fromName,$fromEmail,$toName,$toEmail,$subject,$body);
|
|
|
|
if($obj){
|
|
exit('{"status":"200","reason":"邮件发送成功"}');
|
|
}else{
|
|
header("HTTP/1.1 404 Not Found");
|
|
exit('{"status":"404","reason":"邮件发送失败"}');
|
|
}
|
|
}
|
|
|
|
public function send_options_mail_to_wl(){
|
|
header('Access-Control-Allow-Origin:*');
|
|
header('Access-Control-Allow-Methods:POST, GET');
|
|
header('Access-Control-Max-Age:0');
|
|
header('Access-Control-Allow-Headers:x-requested-with, Content-Type');
|
|
header('Access-Control-Allow-Credentials:true');
|
|
$fromName = "cyc";
|
|
$fromEmail = "cyc@hainatravel.com";
|
|
|
|
$order = $this->input->get_post('order');
|
|
$person = $this->input->get_post('person');
|
|
$type = $this->input->get_post('type');
|
|
$request = $this->input->get_post('request');
|
|
$body = '';
|
|
|
|
$coli_id = $this->BIZ_train_model->cold_sn_get_coli_id($order);
|
|
$trainInfos = $this->BIZ_train_model->biz_order_detail($order);
|
|
$passager = $this->BIZ_train_model->in_bpesn_people_info($person);
|
|
|
|
$body .= '订单号:'.$coli_id['0']->COLI_ID.'<br>';
|
|
$body .= '车程:'.$trainInfos->DepartAirport_cn.'->'.$trainInfos->ArrivalAirport_cn.','.$trainInfos->FlightsNo.','.date('Y-m-d',strtotime($trainInfos->DepartureDate)).'<br>';
|
|
$body .= '乘客:'.$passager['0']->BPE_FirstName.$passager['0']->BPE_MiddleName.$passager['0']->BPE_LastName.','.$passager['0']->BPE_Passport.'<br>';
|
|
$body .= '操作:'.$type.'<br>';
|
|
$body .= '详细信息:'.$request.'<br>';
|
|
|
|
$toName = 'Sharon';
|
|
$toEmail = 'sharon@chinahighlights.com';
|
|
$subject = '用户中心操作';
|
|
|
|
$obj = $this->Sendmail_model->SendMailToTable($fromName,$fromEmail,$toName,$toEmail,$subject,$body);
|
|
if($obj){
|
|
exit('{"status":"200","reason":"邮件发送成功"}');
|
|
}
|
|
}
|
|
|
|
//导出账单api
|
|
public function export_excel(){
|
|
set_time_limit(0);
|
|
//创建跟踪号
|
|
$trackcode = $this->BIZ_train_model->getTrackingCode();
|
|
$from_date = $this->input->post("from_date");
|
|
$to_date = $this->input->post("to_date");
|
|
$examine = $this->input->post("examine");
|
|
//$operator=$this->input->post("operator");
|
|
|
|
$reback=array();//返回的数据
|
|
$reback["from_date"] = $from_date;
|
|
$reback["to_date"] = $to_date;
|
|
$reback["examine"] = $examine;
|
|
$group = array();
|
|
|
|
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 = array();//整合完成的数组,写进excel表的数据
|
|
$url = JUHE_TRAIN_EXPORT_API;//请求的url
|
|
$url .= "?key=".JUHE_TRAIN_API_KEY;
|
|
$url .= "&since=".$from_date;
|
|
$url .= "&before=".$to_date;
|
|
$r = GetPost_http($url);
|
|
$r = explode("\n",$r);
|
|
//print_r($r);
|
|
//die();
|
|
for($i=1;$i<count($r)-1;$i++){
|
|
$r_info=explode(",",$r[$i]);
|
|
$juhe_order=substr($r_info[4], 1,strlen($r_info[4])-2);
|
|
$obj = $this->BIZ_train_model->jh_order_get_coli_id($juhe_order);
|
|
//print_r($obj);
|
|
if(!empty($obj)){
|
|
$coli_id = $obj[0]->COLI_ID;
|
|
$coli_sn = $obj[0]->COLI_SN;
|
|
$this->BIZ_train_model->linkTrackingCode($coli_sn,$trackcode);
|
|
}else{
|
|
echo $juhe_order;
|
|
}
|
|
|
|
/*if(empty($coli_sn) || empty($coli_sn)){
|
|
print_r($juhe_order);
|
|
}*/
|
|
|
|
|
|
/*
|
|
$flag = $this->BIZ_train_model->islink($coli_sn);
|
|
if($flag){
|
|
$this->BIZ_train_model->linkTrackingCode($coli_sn,$trackcode);
|
|
}else{
|
|
echo $coli_sn.'该订单还未关联财务表,不能导出账单。<br>';
|
|
die();
|
|
}
|
|
*/
|
|
//去掉数据两边的双引号
|
|
$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;
|
|
$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");
|
|
$r_info['trackcode'] = $trackcode;
|
|
$arr[]=$r_info;
|
|
|
|
/*
|
|
//根据外联的名字创建数组来存储对应外联的订单信息
|
|
if(!empty($r_info[7])){
|
|
if(!isset($group[$r_info[7]])){
|
|
$group[$r_info[7]] = array();
|
|
}
|
|
array_push($group[$r_info[7]],$r_info);
|
|
}*/
|
|
|
|
}
|
|
/*
|
|
//将存储好的分组重新循环出来。
|
|
foreach($group as $item){
|
|
foreach ($item as $value){
|
|
array_push($arr,$value);
|
|
}
|
|
}
|
|
*/
|
|
//die();
|
|
if(empty($examine)){
|
|
header("Content-type:application/vnd.ms-excel;charset=utf-8");
|
|
header("Content-Disposition:attachment;filename=juhe_train.xls");
|
|
$string_r= $this->load->view("train_transaction_excel",array("arr"=>$arr),TRUE);
|
|
echo $string_r;die;
|
|
}else{
|
|
krsort($arr);//数组倒序
|
|
$reback["data"]=$arr;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//订单同步到trainsystem
|
|
public function sync_orders(){
|
|
die();
|
|
//获取聚合订单
|
|
$juhe_orders = $this->train_system_model->getallorders();
|
|
|
|
$add_data = new stdClass();
|
|
foreach ($juhe_orders as $items){
|
|
$add_data->ordernumber = $items->JOL_JuheOrder;
|
|
$add_data->cold_sn = $items->JOL_COLD_SN;
|
|
$add_data->status = $items->JOL_Status;
|
|
$add_data->returncode = '';
|
|
$add_data->errormsg = $items->JOL_RebackMsg;
|
|
$add_data->checi = $items->JOL_TrainCode;
|
|
$add_data->fromstationame = $items->JOL_FromStation;
|
|
$add_data->fromstationcode = $items->JOL_FromStationCode;
|
|
$add_data->tostationame = $items->JOL_ToStation;
|
|
$add_data->tostationcode = $items->JOL_ToStationCode;
|
|
|
|
$trains = json_decode($items->JOL_BackTxt);
|
|
//print_r($trains->passengers);
|
|
if(isset($trains->train_date)){
|
|
$add_data->startdate = $trains->train_date;
|
|
}else{
|
|
$add_data->startdate = '';
|
|
}
|
|
|
|
foreach ($trains->passengers as $passengers){
|
|
//对订票乘客进行存储
|
|
$data_passager->ordernumber = $items->JOL_JuheOrder;
|
|
$data_passager->realname = $passengers->passengersename;
|
|
$data_passager->identitytype = $passengers->passporttypeseidname;
|
|
$data_passager->numberid = $passengers->passportseno;
|
|
$data_passager->ticketype = $passengers->piaotypename;
|
|
$data_passager->ticketprice = $passengers->price;
|
|
$data_passager->seatype = $passengers->zwname;
|
|
$data_passager->seatdetail = $passengers->cxin;
|
|
$data_passager->status = $items->JOL_Status;
|
|
//print_r($data_passager);
|
|
$this->train_system_model->add_passagers($data_passager);
|
|
}
|
|
|
|
$add_data->startime = '';
|
|
$add_data->endtime = '';
|
|
$add_data->runtime = '';
|
|
|
|
$add_data->channel = 'juhe';
|
|
$add_data->isauto = $items->JOL_IsAuto;
|
|
$this->train_system_model->add_orders($add_data);
|
|
//print_r($add_data);
|
|
}
|
|
}
|
|
} |