diff --git a/application/third_party/trainsystem/controllers/check.php b/application/third_party/trainsystem/controllers/check.php deleted file mode 100644 index 49f0d110..00000000 --- a/application/third_party/trainsystem/controllers/check.php +++ /dev/null @@ -1,528 +0,0 @@ -load->model("BIZ_train_model"); - $this->load->model("train_system_model"); - $this->load->helper('train'); - $this->db_train_zw = $this->config->item('db_train_zw'); - $this->train_zw = $this->config->item('train_zw'); - $this->black_list = $this->config->item('black_list'); - $this->isauto = 0; - } - - public function index(){ - //$this->BIZ_train_model->delete_other(); - } - - //1903241050 - public function check_autotickets(){ - log_message('error','auto ticket'); - date_default_timezone_set('Asia/Shanghai'); - //判断账户余额,如果小于1000自动退出。 - $post_data = array("key"=>JUHE_TRAIN_API_KEY); - $back_data = GetPost_http("http://op.juhe.cn/trainTickets/balance.php",$post_data); - $price = json_decode($back_data)->result; - print_r('账户余额:'.$price); - if($price < 1000){ - exit('账户余额不足'); - } - //筛选出能自动出票的订单 - $auto_pool = $this->BIZ_train_model->auto_check_ticket(); - - //创建一个不允许自动出票的国际火车票数组 - $nation_train = array('K19', 'K23', 'Z8701', 'Z8702', 'Z97', 'Z98', 'Z99', 'Z100', 'K9795'); - - //创建黑名单 - $black_list = $this->config->item('black_list'); - $string = ''; - - foreach($auto_pool as $item){ - $this->isauto = 1; - $bpe_sn = ''; - $back_message = ''; - $cold_sn = $item->COLD_SN; - $coli_id = $item->coli_id; - $back_data = 1; - - $people_arr = $this->BIZ_train_model->biz_people($cold_sn); - $train_info = $this->BIZ_train_model->get_biz_foi($cold_sn); - - if($item->COLD_SPFS > 1){ - //寄送票 - $back_data = 0; - $back_message .= '-邮寄不自动出票'; - } - - //乘客人数大于5人不出票 - if(count($people_arr) > 5){ - $back_data = 0; - $back_message .= '-乘客人数大于5不自动出票'; - } - - //护照号如果在黑名单的就不自动出票 - foreach($people_arr as $people_info){ - if(in_array($people_info->BPE_Passport,$black_list)){ - $back_data = 0; - $back_message .= '-此用户为黑名单用户,不自动出票'; - } - - if(strlen($people_info->BPE_Passport) >= 18){ - $back_data = 0; - $back_message .= '-护照位数大于18不自动出票'; - } - - $bpe_sn .= $people_info->BPE_SN.','; - } - $bpe_sn = substr($bpe_sn,0,strlen($bpe_sn)-1); - - //单张票价不能大于1000人民币 - if($train_info[0]->adultcost > 1000){ - $back_data = 0; - $back_message .= '-单价大于1000不自动出票'; - } - - //如果为国际火车票就不出票 - if(in_array($train_info[0]->FlightsNo, $nation_train)){ - $back_data = 0; - $back_message .= '-国际火车票不自动出票'; - } - - //无座的订单不做出票 - if($train_info[0]->Aircraft == 'WZ'){ - $back_data = 0; - $back_message .= '-无座不自动出票'; - } - - //香港火车不自动出票 - if($train_info[0]->DepartAirport == 'XJA'){ - $back_data = 0; - $back_message .= '-香港火车不自动出票'; - } - - $DepartureDate = strtotime($train_info[0]->DepartureDate); - $time = time(); - $depart_diff = ($DepartureDate - $time) / 86400; - - if($train_info[0]->ArrivalAirport == 'XJA' && $train_info[0]->adultcost > 500 && $depart_diff > 5){ - $back_data = 0; - $back_message .= '-内地香港火车金额大于500超过五天不自动出票'; - } - //print_r($train_info); - - //如果刚好是第三十天的订单 - if(($item->COLI_State == '8' || $item->COLI_State == '63')){ - $this->isauto = 3; - $time_obj = $this->BIZ_train_model->get_saletime($train_info['0']->DepartAirport_cn); - if(!empty($time_obj)){ - $saletime = strtotime(date('Y-m-d').' '.$time_obj->TST_saletime); - //echo $saletime; - $sale_diff = (time() - $saletime) / 3600; - echo $cold_sn.'_'.date('Y-m-d').' '.$time_obj->TST_saletime.'/'.$saletime.'
'; - if($sale_diff > 1){ - $back_data = 0; - $back_message .= '-超过抢票时间'; - }else if($sale_diff <0){ - $back_data = 0; - $back_message .= '-未到抢票时间'; - } - } - } - - if($back_data == 0){ - $string .= '汉特订单号:'.$coli_id.'('.$cold_sn.'/'.$this->isauto.')'.$back_message.''; - }else{ - //单个订单提交 - echo $cold_sn.'
'; - //$this->booktickets($cold_sn,$bpe_sn,'','juhe'); - //$string .= '汉特订单号:'.$coli_id.'('.$cold_sn.')可以自动出票'; - } - } - print_r(''.$string.'
'); - } - - //创建一个方法用于接收所有的出票请求 - public function booktickets($cold_sn=null,$bpe_sn=null,$selectseat=null,$type=null){ - if(empty($cold_sn) && empty($bpe_sn)){ - //接收子表订单号 - $cold_sn = $this->input->get_post('order'); - //接收客人表sn - $bpe_sn = $this->input->get_post("people"); - //接收选座字符串 - $selectseat = $this->input->get_post("selectseat"); - //接收出票接口 - $type = $this->input->get_post("type"); - } - //测试数据 - /*$cold_sn = '488121613'; - $bpe_sn = '473183645,473183646,473183647'; - $selectseat = ''; - $type = 'juhe';*/ - - if(!is_numeric($cold_sn)){ - $reback["mes"]="订单号是数字"; - echo json_encode($reback); - return false; - } - - if(empty($bpe_sn)){ - $reback["mes"]="请选择乘客"; - echo json_encode($reback); - 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($selectseat == ''){ - $selectseat = ''; - $train_select = $data['train']->FOI_SelectedSeat; - $obj = explode(',',$train_select); - foreach($obj as $value){ - $selectseat .= $value; - } - } - - if (empty($data['train'])) { - //显示错误,找不到车次 - $reback["mes"]="找不到车次"; - echo json_encode($reback); - return false; - } - - 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; - } - - switch ($type){ - case 'juhe': - $this->juheModel($data,$selectseat,$cold_sn); - break; - case 'tuniu': - $this->tuniuModel($data,$selectseat,$cold_sn); - break; - case 'ctrip': - $this->ctripModel($data,$selectseat,$cold_sn); - break; - } - } - - function juheModel($data=null,$selectseat=null,$cold_sn=null){ - $zwcode = $this->db_train_zw[$data['train']->Aircraft]; //座位简码 - $zwname = $this->train_zw[$this->db_train_zw[$data['train']->Aircraft]]; //座位名称 - - //进行提交字符串的拼接 - $passengers = ""; - foreach ($data['people_list'] as $key => $item) { - //乘客姓名 - $passengersename = $item->BPE_FirstName.$item->BPE_MiddleName.$item->BPE_LastName; - //将特殊字符转换为正常字符以便于出票 - $passengersename = chk_sp_name($passengersename); - //乘客类型 - switch ($item->BPE_GuestType) { - case 1: - $piaotype = 1; - $piaotypename = "成人票"; - break; - case 2: - $piaotype = 2; - $piaotypename = "儿童票"; - break; - default://外国人应该就两种票吧 - $piaotype = 1; - $piaotypename = "成人票"; - break; - } - - //证件类型 - switch ($item->BPE_PassportType){ - case 'Chinese ID': - $passporttypeseid = "1"; - $passporttypeseidname = "二代身份证"; - break; - case 'Travel Permit from Hong Kong / Macau': - $passporttypeseid = "C"; - $passporttypeseidname = "港澳通行证"; - break; - case 'Travel Permit from Taiwan': - $passporttypeseid = "G"; - $passporttypeseidname = "台湾通行证"; - break; - default : - $passporttypeseid = "B"; - $passporttypeseidname = "护照"; - break; - } - - switch ($item->BPE_SEX){ - case '100003': - $sex = 'F'; - break; - case '100001': - $sex = 'M'; - break; - } - - $passportseno = str_replace(' ','',$item->BPE_Passport); - - //添加一个判断护照号是否在黑名单 - if(in_array($passportseno,$this->black_list)){ - $reback["mes"] = "乘客为黑名单用户"; - echo json_encode($reback); - return false; - } - - if($passporttypeseid == 'G'){ - $passengers .= ',{"passengerid":' . (++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"1","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","gatValidDateEnd":"'.$item->BPE_PassExpdate.'","gatBornDate":"'.$item->BPE_BirthDate.'","sexCode":"'.$sex.'"}'; - }else{ - $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; - if(empty($selectseat)){ - $post_data=array( - "key"=>JUHE_TRAIN_API_KEY, - "user_orderid"=>$cold_sn,//自定义订单号 - "train_date"=>substr($data["train"]->DepartureDate, 0, 10), - "is_accept_standing"=>"no", - "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 - ); - }else{ - $post_data=array( - "key"=>JUHE_TRAIN_API_KEY, - "user_orderid"=>$cold_sn,//自定义订单号 - "train_date"=>substr($data["train"]->DepartureDate, 0, 10), - "is_accept_standing"=>"no", - "choose_seats"=>$selectseat, - "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 - ); - } - - //发起请求 - /*$add_data = new stdClass(); - $back_json = GetPost_http('http://op.juhe.cn/trainTickets/submit',$post_data); - $back_data = json_decode($back_json); - - if(!$back_data->error_code){ - $add_data->ordernumber = $back_data->result->orderid; - $reback["status"] = 1; - $reback["order"] = $back_data->result->orderid; - $reback["mes"] = "订单提交成功,等待回调"; - }else{ - $add_data->ordernumber=null; - $reback["mes"] = $back_json; - $add_data->status = "e"; - }*/ - - //本地订单入库 - $add_data->cold_sn = $cold_sn; - $add_data->returncode = $back_data->error_code; - $add_data->status = '2'; - $add_data->errormsg = '预定中'; - $add_data->checi = $data['train']->FlightsNo; - $add_data->fromstationame = $data['train']->DepartAirport_cn; - $add_data->fromstationcode = $data['train']->DepartAirport; - $add_data->tostationame = $data['train']->ArrivalAirport_cn; - $add_data->tostationcode = $data['train']->ArrivalAirport; - $add_data->startdate = date('Y-m-d',strtotime($data['train']->DepartureDate)); - $add_data->startime = date('H:i',strtotime($data['train']->DepartureTime)); - $add_data->endtime = date('H:i',strtotime($data['train']->ArrivalTime)); - $add_data->runtime = (strtotime($data['train']->ArrivalTime) - strtotime($data['train']->DepartureTime)) / 60; - $add_data->channel = 'juhe'; - $add_data->isauto = $this->isauto; - print_r($add_data); - /*$this->train_system_model->add_orders($add_data); - echo json_encode($reback); - return false;*/ - - } - - public function test_add(){ - $add_data->cold_sn = '123123'; - $add_data->returncode = '123123'; - $add_data->status = '2'; - $add_data->errormsg = '预定中'; - $add_data->checi = 'G89'; - $add_data->fromstationame = '北京'; - $add_data->fromstationcode = 'BJP'; - $add_data->tostationame = '上海'; - $add_data->tostationcode = 'SHH'; - $add_data->startdate = '2019-02-09'; - $add_data->startime = '14:00'; - $add_data->endtime = '19:00'; - $add_data->runtime = '300'; - $add_data->channel = 'juhe'; - $add_data->isauto = 3; - print_r($add_data); - $this->train_system_model->add_orders($add_data); - } - - public function juhecallback(){ - /*$data_post = $this->input->post(); - if(empty($data_post)){ - header("HTTP/1.1 404 Not Found"); - exit('{"reason":"empty infos","status":"404"}'); - }*/ - - //调试代码 - $test_post = '{"data":"{\"from_station_name\":\"\u5e7f\u5dde\u5357\",\"from_station_code\":\"IZQ\",\"to_station_name\":\"\u9999\u6e2f\u897f\u4e5d\u9f99\",\"to_station_code\":\"XJA\",\"train_date\":\"2019-04-29\",\"orderid\":\"JH155651319519711\",\"user_orderid\":\"488132483\",\"orderamount\":\"374.00\",\"ordernumber\":\"E244376926\",\"checi\":\"G6537\",\"msg\":\"\u51fa\u7968\u6210\u529f\",\"status\":\"4\",\"passengers\":[{\"passengerid\":1,\"passengersename\":\"PRIETORAMOSJORGECLAUDIO\",\"piaotype\":\"1\",\"piaotypename\":\"\u6210\u4eba\u7968\",\"passporttypeseid\":\"B\",\"passporttypeseidname\":\"\u62a4\u7167\",\"passportseno\":\"AAC408307\",\"price\":\"187.0\",\"zwcode\":\"O\",\"zwname\":\"\u4e8c\u7b49\u5ea7\",\"ticket_no\":\"E244376926111013D\",\"cxin\":\"11\u8f66\u53a2,13D\u5ea7\",\"reason\":0},{\"passengerid\":2,\"passengersename\":\"SALAZARNATALIAGISELA\",\"piaotype\":\"1\",\"piaotypename\":\"\u6210\u4eba\u7968\",\"passporttypeseid\":\"B\",\"passporttypeseidname\":\"\u62a4\u7167\",\"passportseno\":\"AAC419811\",\"price\":\"187.0\",\"zwcode\":\"O\",\"zwname\":\"\u4e8c\u7b49\u5ea7\",\"ticket_no\":\"E244376926111013F\",\"cxin\":\"11\u8f66\u53a2,13F\u5ea7\",\"reason\":0}],\"refund_money\":null,\"sign\":\"831c146e2ce223a5437ed78db0ec8c25\"}"}'; - - $data_post["data"] = json_decode($test_post)->data; - - log_message('error','聚合回调:'.json_encode($data_post)); - $data = json_decode($data_post["data"]); - - $update_data = new StdClass(); - $update_data->OrderStatus = $data->status; - $update_data->ordernumber = $data->orderid; - $update_data->OrderTotleFee = $data->orderamount; - $update_data->seatsinfo = ''; - $update_data->TicketCheck = ''; - $update_data->bookcallback = ''; - $update_data->confirmcallback = ''; - $update_data->returncallback = ''; - $update_data->ElectronicOrderNumber = $data->ordernumber; - $update_data->reschedulecallback = ''; - $update_data->ErrorMsg = $data->msg; - - //如果返回2则发送出票请求 - if($data->status == "1"){ - $update_data->bookcallback = $data_post["data"]; - }elseif($data->status == "2"){ - $coach = array(); - $seats = array(); - $string = ''; - $passagers = $data->passengers; - foreach($passagers as $item){ - foreach(explode(',',$item->cxin) as $item_seat){ - if(strpos($item_seat,'车厢')){ - $item_seat = str_replace('车厢','',$item_seat); - array_push($coach,$item_seat); - }else{ - $find = array('座上铺','座中铺','座下铺','座'); - $replace = array(' upper',' middle',' lower',''); - $item_seat = str_replace($find,$replace,$item_seat); - array_push($seats,$item_seat); - } - } - - //对订票乘客进行存储 - $data_passager->ordernumber = $data->orderid; - $data_passager->realname = $item->passengersename; - $data_passager->identitytype = $item->passporttypeseidname; - $data_passager->numberid = $item->passportseno; - $data_passager->ticketype = $item->piaotypename; - $data_passager->ticketprice = $item->price; - $data_passager->seatype = $item->zwname; - $data_passager->seatdetail = $item->cxin; - $data_passager->status = '4'; - $this->train_system_model->add_passagers($data_passager); - } - - //判断车厢是否唯一,如果不唯一的话,分成两个车厢 - if(count(array_unique($coach)) == 1){ - $onlycoach = array_unique($coach); - $string .= 'Coach '.$onlycoach[0].','; - }else{ - foreach (array_unique($coach) as $item_coach){ - $string .= 'Coach '.$item_coach.','; - } - } - - $string .= 'Seat '; - foreach($seats as $item_seat){ - $string .= $item_seat.','; - } - - $seatinfo = substr($string,0,strlen($string)-1); - $update_data->seatsinfo = $seatinfo; - - $post_data = array( - "key"=>JUHE_TRAIN_API_KEY, - "orderid"=>$data->orderid - ); - $back_json = GetPost_http(JUHE_TRAIN_PAY_API,$post_data); - $update_data->bookcallback = $data_post["data"]; - }elseif($data->status == "4"){ - $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->BIZ_train_model->add_train_payment($add_train_order_data); - - $update_data->confirmcallback = $data_post["data"]; - $this->BIZ_train_model->update_cold_planvei_sn($data->user_orderid); - }elseif($data->status=="7"){ - //退票成功 写入TOC表 - $newtime = "";//记录最新操作时间 - $refund_passportseno = "";//退票人护照号 - $refund_money = "";//退票金额 - foreach ($data->passengers as $p) { - if(isset($p->returntickets)){ - $refund_passportseno = $p->refundTimeline[count($p->refundTimeline)-1]->detail->passportseno; - $refund_money = $p->refundTimeline[count($p->refundTimeline)-1]->detail->returnmoney; - //退票时还需要单独对对每个乘客存储回调信息 - $passpager_info = new stdClass(); - $passpager_info->returncallback = $data_post["data"]; - $passpager_info->status = '7'; - $passpager_info->ordernumber = $data->orderid; - $passpager_info->realname = $p->refundTimeline[count($p->refundTimeline)-1]->detail->passengername; - $passpager_info->numberid = $refund_passportseno; - print_r($passpager_info); - $this->train_system_model->update_passpager_info($passpager_info); - - //添加退款记录 - $add_train_order_data->TOC_COLD_SN = $data->user_orderid; - $add_train_order_data->TOC_Memo = $data->orderid." ".$refund_passportseno; - $add_train_order_data->ordernumber = $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->BIZ_train_model->add_train_payment($add_train_order_data); - }else{ - //有可能提交了退票或者还没有退票 - - } - } - - $update_data->returncallback = $data_post["data"]; - } - //print_r($update_data);die(); - //更新订单信息(出票系统) - $this->train_system_model->update_orders($update_data); - } - -} \ No newline at end of file diff --git a/application/third_party/trainsystem/controllers/tools.php b/application/third_party/trainsystem/controllers/tools.php new file mode 100644 index 00000000..41c08748 --- /dev/null +++ b/application/third_party/trainsystem/controllers/tools.php @@ -0,0 +1,25 @@ +load->model("train_tools_model"); + } + + public function index(){ + exit('tools controller'); + } + + public function updateOrderInfo(){ + $table = $this->input->get_post('table'); + $id = $this->input->get_post('id'); + $key = $this->input->get_post('key'); + $value = $this->input->get_post('value'); + + $this->train_tools_model->updateOrderInfo($table,$id,$key,$value); + } + +} \ No newline at end of file diff --git a/application/third_party/trainsystem/models/train_tools_model.php b/application/third_party/trainsystem/models/train_tools_model.php new file mode 100644 index 00000000..1565930f --- /dev/null +++ b/application/third_party/trainsystem/models/train_tools_model.php @@ -0,0 +1,26 @@ +HT = $this->load->database('HT', TRUE); + $this->INFO = $this->load->database('INFO', TRUE); + } + + public function updateOrderInfo($table,$id,$key,$value){ + if($table == 'trainsystem'){ + $idKey = 'ts_id'; + }elseif($table == 'trainsystem_tickets'){ + $idKey = 'tst_id'; + }else{ + exit(); + } + $sql = " + update {$table} set {$key} = '{$value}' where {$idKey} = {$id} + "; + $this->INFO->query($sql); + } + +} \ No newline at end of file