Merge branch 'master' of git.mycht.cn:developers/information-system

hotfix/远程访问多媒体中心
lyt 9 years ago
commit ef34330711

@ -391,14 +391,18 @@ class Information extends CI_Controller {
$ic_url = $this->input->post('ic_url');
$auto_update_cache = $this->input->get_post('auto_update_cache_checkbox');
if ($site_code == 'gm' && substr($ic_url, 0, 5) == '/faq/') {
$this->update_cache($ic_url, true);
$update_info_log = $this->update_cache($ic_url, true);
} else if (strcasecmp($site_code, "cht") == 0 && !empty($auto_update_cache)) {
$this->update_cache($ic_url);
} else if (strcasecmp($site_code, "cht") != 0) {
$this->update_cache($ic_url);
$update_info_log = $this->update_cache($ic_url);
} else if (strcasecmp($site_code, "cht") != 0) {//非cht站点
$update_info_log = $this->update_cache($ic_url);
}
$data[] = array('name' => 'ok', 'value' => $this->lang->line('form_info_success'));
if (empty($update_info_log) || count($update_info_log) == 0 || !isset($update_info_log[0]['url'])) {
$update_info_log = 'not found update info log';
}
$data[] = array('name' => 'ok', 'value' => $this->lang->line('form_info_success'), 'update_info_log' => $update_info_log);
$this->Logs_model->backup($information->is_id, $this->input->post('ic_content'));
$this->Logs_model->backup_summary($information->is_id, $this->input->post('ic_summary'));
@ -428,24 +432,6 @@ class Information extends CI_Controller {
}
echo json_encode($data);
//设置图片应用URL
/* $use_pictures=$this->input->post('use_pictures');
if(!empty($use_pictures))
{
foreach(explode(',',$use_pictures.'0:0:0') as $picture)
{
list($p_id,$p_path,$p_wh)=explode(':',$picture);
if (stripos($this->input->post('ic_content'),$p_path) !== FALSE || $p_path==$this->input->post('ic_photo') )
{
if($p_id!=0)
{
$this->load->model('pictureUseStat_model');
$this->pictureUseStat_model->set_useurl($p_id,$p_wh,$this->config->item('site_url').$this->input->post('ic_url'));
}
}
}
} */
}
}
@ -474,63 +460,72 @@ class Information extends CI_Controller {
//更新静态文件
//不用参数提交的原因是可能url带有特殊字符CI会报错
public function update_cache($static_html_url = false, $delete_only = false) {
$url = $static_html_url;
if (empty($url)) {
$url = $this->input->post('cache_url');
}
$url = !empty($static_html_url) ? $static_html_url : $this->input->post('cache_url');
$url = str_replace($this->config->item('site_url'), '', $url);
//原始链接
$original_url = $url;
$original_url = $url; //原始链接
$delete_only = !empty($delete_only) ? $delete_only : $this->input->get_post('delete_only');
switch ($this->config->item('site_code')) {
case 'cht':
$url = 'http://192.155.224.195:8080/guide-use.php/travelguide/guide/?static_html_url=' . $url;
if (strpos($url, '/festivals/') !== false || strpos($url, '/faq/') !== false) {//ch的部分控制器不是travelguide所以不能统一更新和生产缓存文件只能跳过统一控制器再回头取消这个限制
$url = 'http://www.chinahighlights.com/';
}
break;
if ($this->config->item('site_code') == 'cht') {
//$url = 'http://www.chinahighlights.com/api/community/updatecache.asp?gurl=http://www.chinahighlights.com' . $url . '&other=1&site=info';
//$url = 'http://192.155.224.195:2222/guide-use.php/travelguide/guide/?static_html_url=' . $url;
$url = 'http://192.155.224.195:8080/guide-use.php/travelguide/guide/?static_html_url=' . $url;
case 'ah':
if ($delete_only === true) {
$url = 'https://www.asiahighlights.com/index.php/information/delete_cache_8X913mksJ/?static_html_url=' . $url;
} else {// static_html_optimize=comeon 启用静态化压缩和js、css延迟加载
$url = 'https://www.asiahighlights.com/index.php/information/detail/?static_html_url=' . $url . '&static_html_optimize=comeon';
}
break;
//ch的部分控制器不是travelguide所以不能统一更新和生产缓存文件只能跳过统一控制器再回头取消这个限制
if (strpos($url, '/festivals/') !== false) {
$url = 'http://www.chinahighlights.com/';
}
if (strpos($url, '/faq/') !== false) {
$url = 'http://www.chinahighlights.com/';
}
} elseif ($this->config->item('site_code') == 'gm') {
$url = "http://148.251.35.42:3300/create-cache/?url=$url";
} else if (is_series_site()) {
if (FALSE === $delete_only) {
$delete_only = $this->input->get_post('delete_only');
}
if ($delete_only) {
//只删除操作在url修改和不发布信息的时候使用
$url = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $url;
} else {
$information = $this->Information_model->Detail($url);
$tmp = $url;
//判断是否是更新信息
/* 产品页面不能生成静态页面,比如/beijing/hotel/只是为了在导航显示一个链接,如果生成了静态页面,网前只会显示一个空白页面了
*/
if (!empty($information->ic_content)) {
//先尝试删除静态文件。
$try_del = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $url;
file_get_contents($try_del);
$url = $this->config->item('site_url') . '/index.php/information/detail/?static_html_url=' . $url;
case 'gm':
GET_HTTP("http://148.251.35.42:3300/create-cache/?url=" . urlencode($url)); //请求nodejs静态化更新页面删除缓存因为部分页面没有进入信息平台
if ($delete_only) {
$url = $this->config->item('site_url') . "/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . urlencode($url);
} else {
$url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $url;
$url = $this->config->item('site_url') . "/gm.php/information/detail?static_html_optimize=comeon&static_html_url=" . urlencode($url);
}
if (isset($information->ic_type) && $information->ic_type == 'product') {
$url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $tmp;
break;
case 'vac'://国际站
case 'vc':
case 'it':
case 'ru':
case 'jp':
if ($delete_only) {
//只删除操作在url修改和不发布信息的时候使用
$url = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $url;
} else {
$information = $this->Information_model->Detail($url);
$tmp = $url;
//判断是否是更新信息
// 产品页面不能生成静态页面,比如/beijing/hotel/只是为了在导航显示一个链接,如果生成了静态页面,网前只会显示一个空白页面了
if (!empty($information->ic_content)) {
//先尝试删除静态文件。
$try_del = $this->config->item('site_url') . '/index.php/welcome/update_cache/delete_only?static_html_url=' . $url;
file_get_contents($try_del);
$url = $this->config->item('site_url') . '/index.php/information/detail/?static_html_url=' . $url;
} else {
$url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $url;
}
if (isset($information->ic_type) && $information->ic_type == 'product') {
$url = $this->config->item('site_url') . '/index.php/welcome/update_cache/?static_html_url=' . $tmp;
}
}
}
} else if ($this->config->item('site_code') == 'ah') {
if ($delete_only === true) {
$url = 'https://www.asiahighlights.com/index.php/information/delete_cache_8X913mksJ/?static_html_url=' . $url;
} else {
// static_html_optimize=comeon 启用静态化压缩和js、css延迟加载
$url = 'https://www.asiahighlights.com/index.php/information/detail/?static_html_url=' . $url . '&static_html_optimize=comeon';
}
} else { //子站点使用
$url = $this->config->item('site_url') . $url . '@cache@refresh';
break;
case 'ct'://子站点使用
case 'sht':
case 'gl':
case 'mbj':
case 'yz':
$url = $this->config->item('site_url') . $url . '@cache@refresh';
break;
default:return false;
break;
}
//关闭错误提示防止file_get_contents请求特殊字符的时候会报错或者404、500,特殊字符需要用urlencode编码第一个/后面的url

@ -265,7 +265,7 @@ class Keyworlds extends CI_Controller {
}
}
//保存排名数据
if ($rank['rank'] == '151') {
if ($rank['rank'] == '151') { //超过151的排名则不记录
$this->Keywords_model->update_time($kw_id);
} elseif (isset($last_rank[0]->kwr_datetime) and $last_rank[0]->kwr_datetime > strtotime(date('Y-m-d'))) {
if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id, $rank['rank'], $rank['source'])) {
@ -321,15 +321,16 @@ class Keyworlds extends CI_Controller {
break;
}
}
//if ($rank['rank'] == '151') {
if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['source'], $rank['engines'])) {
$this->load->model('InfoSMS_model');
$last_rank = isset($last_rank[0]) ? $last_rank[0]->kwr_rank : $rank['rank'];
$this->InfoSMS_model->readed_for_info($v->kw_id, 'keywords_rank');
$this->InfoSMS_model->add('keywords_rank', $v->kw_id, $rank['rank'], $last_rank, (string) ($rank['rank'] - $last_rank));
if ($engines != 'yandex')
$this->Keywords_model->update_time($v->kw_id);
}
if ($rank['rank'] == '151') { //超过151的排名则不记录
$this->Keywords_model->update_time($v->kw_id);
}else if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['source'], $rank['engines'])) {
$this->load->model('InfoSMS_model');
$last_rank = isset($last_rank[0]) ? $last_rank[0]->kwr_rank : $rank['rank'];
$this->InfoSMS_model->readed_for_info($v->kw_id, 'keywords_rank');
$this->InfoSMS_model->add('keywords_rank', $v->kw_id, $rank['rank'], $last_rank, (string) ($rank['rank'] - $last_rank));
if ($engines != 'yandex')
$this->Keywords_model->update_time($v->kw_id);
}
}
var_dump($worldsList[0]->kw_keyworlds, $rank);
}

@ -63,8 +63,10 @@ class Index extends CI_Controller {
$js_jquery_content = '';
foreach ($html_object->find('script') as $link_script) {
if (!empty($link_script->src)) {
$link_js_array[] = $link_script->src;
$link_script->outertext = ''; //删除链接,移动到页底
if(empty($link_script->defer)){ //没有defer标记的才处理否则让js延后加载
$link_js_array[] = $link_script->src;
$link_script->outertext = ''; //删除链接,移动到页底
}
} else {
//网页内的js不需要提取
//$js_content.= $link_script->innertext;//js的内容

@ -10,11 +10,12 @@ class Confirm extends CI_Controller {
$this->load->model('Order_model');
}
public function index($COLI_SN = false, $visitor_link = false, $token = false) {
//site_code默认是空ct的站点需要传值
public function index($COLI_SN = false, $visitor_link = false, $token = false,$site_code='') {
$data = array();
if (empty($COLI_SN) || strtoupper(md5($visitor_link)) != strtoupper($token)) {
echo '<div class="hidden">校验不对</div>';
$this->load->view('link_tips', $data);
$this->load->view($site_code.'/link_tips', $data);
return false;
}
@ -29,19 +30,19 @@ class Confirm extends CI_Controller {
}
}
} else {
$this->load->view('link_tips', $data);
$this->load->view($site_code.'/link_tips', $data);
return false;
}
$visitor_link_arr = $this->Order_model->get_visitor_link($COLI_SN);
foreach ($visitor_link_arr as $l) {
if ($visitor_link == $l->visitor_link) {
$this->load->view('link_tips', $data);
$this->load->view($site_code.'/link_tips', $data);
return false;
}
}
$this->load->view('confirm_order', $data);
$this->load->view($site_code.'/confirm_order', $data);
}
public function save_confirm_info() {
@ -133,6 +134,7 @@ class Confirm extends CI_Controller {
}
}
//只有ch有review功能
function review() {
$data = array();
$data['postdata'] = $this->input->post();

@ -0,0 +1,738 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow" />
<title>www.chinatravel.com</title>
<link href="/css/order/bootstrap.min.css" rel="stylesheet" type="text/css"/>
<link href="/css/order/order.css?v=201506052" rel="stylesheet" type="text/css"/>
<link href="/css/order/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css"/>
<!--[if lt IE 9]>
<script src="/js/respond.min.js" type="text/javascript"></script>
<![endif]-->
<script src="/js/jquery.min.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui-timepicker-addon.js" type="text/javascript"></script>
<style type="text/css">
#header {background: #DF6536 !important;}
.text-red{color: #DF6536 !important;}
</style>
</head>
<body>
<div id="headerWrapper">
<div id="header">
<div id="mainnav" class="nav navbar" role="navigation">
<div class="container-fluid">
<div class="row">
<div class="col-lg-3 col-sm-4 logobox hidden-xs" style="top:8px;">
<a href="javascript:void(0);">
<img src="http://www.chinatravel.com/images/chinatravel-logo.png" alt="logo">
</a>
</div>
<div class="col-lg-15 col-sm-13 col-lg-offset-3 col-sm-offset-4">
<div class="navbar-header">
<div class="col-xs-24 btn-lg"></div>
<div class="col-xs-24 text-white">Dear <?php echo $username; ?></div>
<div class="col-xs-24 text-white">Reference Number: <?php echo $userinfo[0]->COLI_ID; ?></div>
</div>
</div>
<div class="col-lg-6 col-sm-7 hidden-xs pull-right nopadding">
<div class="tollfree pull-right" style="padding-top:10px;">
<div class="currentNo col-sm-24 nopadding"><span class="glyphicon glyphicon-earphone" style="font-size:12px;"></span> +86 773 <?php echo $userinfo[0]->OPI_Telephone; ?></div>
<div class="col-sm-24">
<div class="currentNo col-sm-24 nopadding"> 800-9337181 (Free in US & CA)</div>
<div class="currentNo col-sm-24 nopadding"> 86-773-2889566 (Intl rates apply)</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="col-xs-24 btn-lg"></div>
<div class="col-xs-24 welcome-text">
<h4 class="text-center text-red">Thanks for booking with China Travel! </h4>
<h4 class="text-center text-red">Please complete and submit the information below.</h4>
</div>
<form id="form-confirm-info" method="post" action="<?php echo site_url('apps/order/confirm/save_confirm_info'); ?>">
<div class="col-xs-24 personinfo-box">
<div class="panel panel-default">
<div class="panel-body">
<div class="row panel-new-head">
<h4 class="text-red">Passenger Information <span class="text-muted" style="font-size:15px;">(we need passport info for all the group members)</span></h4>
</div>
<div class="col-xs-24 nopadding personinfo-input-box">
<div class="form-group col-sm-7 nopadding-R">
<label style="width:100%;text-align:left !important;">
<span class="col-xs-6 nopadding"></span>
<div class="col-xs-18 nopadding-L" style="height:15px;">
<div class="col-xs-11 nopadding text-right">Sur name</div>
<div class="col-xs-1 nopadding text-right" style="font-size:18px;width:10px;">/</div>
<div class="col-xs-11 nopadding" style="padding-left: 2px !important;">Given name</div>
</div>
</label>
<div class="row">
<div class="col-xs-6 nopadding-R">
<select class="form-control input-sm nopadding-L" name="gender[]">
<option value="100001">Mr</option>
<option value="100003">Ms</option>
</select>
</div>
<div class="col-xs-18 nopadding-L">
<div class="input-group">
<div class="form-control input-sm nopadding">
<div class="col-xs-11 nopadding">
<input name="sur_name[]" class="common_input form-control input-sm nopadding-R" placeholder="" style="border:none;height:28px;" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in this Sur name!">
</div>
<div class="col-xs-1 nopadding text-center" style="font-size:18px;width:10px;">/</div>
<div class="col-xs-11 col-sm-11 nopadding">
<input name="given_name[]" class="common_input form-control input-sm nopadding-R" placeholder="" style="border:none;height:28px;" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in this Given name!">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group col-sm-4 nopadding-R">
<label class="">Passport No.</label>
<input type="text" class="form-control input-sm common_input" name="passport[]" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your passport!" autocomplete="off">
</div>
<div class="form-group col-sm-5 nopadding-R">
<label class="">Passport Expiration Date</label>
<div class="input-groups date">
<input class="form-control input-sm common_input datepicker" type="text" name="passport_expiration_date[]" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your passport expiration date!" autocomplete="off" style="color:#333333 !important;">
</div>
</div>
<div class="form-group col-sm-4 nopadding-R">
<label class="">Birthday</label>
<div class="input-groups date " data-date="1970-05-20">
<input class="form-control input-sm common_input bd_datepicker" type="text" name="birthday[]" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your birthday!" autocomplete="off" style="color:#333333 !important;">
</div>
</div>
<div class="form-group col-sm-4">
<label class="">Nationality</label>
<div class="input-group">
<select class="form-control input-sm common_input" name="nationality[]">
<option value="18" selected="selected">Australia</option>
<option value="5">Canada</option>
<option value="1">China</option>
<option value="8">France</option>
<option value="6">Germany</option>
<option value="9">Italy</option>
<option value="19">Malaysia</option>
<option value="27">Singapore</option>
<option value="7">United Kingdom</option>
<option value="3">United States</option>
<option value="458">Afghanistan</option>
<option value="459">Albania</option>
<option value="460">Algeria</option>
<option value="461">American Samoa</option>
<option value="462">Andorra</option>
<option value="463">Angola</option>
<option value="464">Anguilla</option>
<option value="465">Antarctica</option>
<option value="466">Antigua And Barbuda</option>
<option value="467">Argentina</option>
<option value="468">Armenia</option>
<option value="469">Aruba</option>
<option value="470">Austria</option>
<option value="471">Azerbaijan</option>
<option value="472">Bahamas</option>
<option value="473">Bahrain</option>
<option value="474">Bangladesh</option>
<option value="671">Barbadian</option>
<option value="475">Barbados</option>
<option value="476">Belarus</option>
<option value="477">Belgium</option>
<option value="478">Belize</option>
<option value="479">Benin</option>
<option value="480">Bermuda</option>
<option value="481">Bhutan</option>
<option value="482">Bolivia</option>
<option value="483">Botswana</option>
<option value="484">Bouvet Island</option>
<option value="38">Brazil</option>
<option value="485">British Indian Ocean Territory</option>
<option value="486">Brunei Darussalam</option>
<option value="487">Bulgaria</option>
<option value="488">Burkina Faso</option>
<option value="489">Burundi</option>
<option value="490">Cambodia</option>
<option value="491">Cameroon</option>
<option value="493">Cape Verde</option>
<option value="494">Cayman Islands</option>
<option value="495">Central African Republic</option>
<option value="496">Chad</option>
<option value="497">Chile</option>
<option value="10">China HK</option>
<option value="499">Christmas Island</option>
<option value="500">Colombia</option>
<option value="501">Comoros</option>
<option value="502">Congo</option>
<option value="504">Cook Islands</option>
<option value="505">Costa Rica</option>
<option value="506">Croatia</option>
<option value="507">Cuba</option>
<option value="508">Cyprus</option>
<option value="509">Czech Republic</option>
<option value="510">Czechoslovakia</option>
<option value="511">Denmark</option>
<option value="512">Djibouti</option>
<option value="513">Dominica</option>
<option value="514">Dominican Republic</option>
<option value="515">East Timor</option>
<option value="516">Ecuador</option>
<option value="517">Egypt</option>
<option value="518">El Salvador</option>
<option value="520">Equatorial Guinea</option>
<option value="521">Eritrea</option>
<option value="522">Estonia</option>
<option value="523">Ethiopia</option>
<option value="524">Falkland Islands</option>
<option value="525">Faroe Islands</option>
<option value="526">Fiji</option>
<option value="527">Finland</option>
<option value="528">French Guiana</option>
<option value="529">French Polynesia</option>
<option value="530">Gabon</option>
<option value="531">Gambia</option>
<option value="532">Georgia</option>
<option value="533">Ghana</option>
<option value="534">Gibraltar</option>
<option value="536">Greece</option>
<option value="537">Greenland</option>
<option value="538">Grenada</option>
<option value="539">Guadeloupe</option>
<option value="540">Guam</option>
<option value="670">Guatemala</option>
<option value="541">Guernsey</option>
<option value="542">Guinea</option>
<option value="543">Guinea-Bissau</option>
<option value="544">Guyana</option>
<option value="545">Haiti</option>
<option value="546">Honduras</option>
<option value="547">Hong Kong</option>
<option value="548">Hungary</option>
<option value="36">Iceland</option>
<option value="22">India</option>
<option value="549">Indonesia</option>
<option value="550">Iran</option>
<option value="551">Iraq</option>
<option value="552">Ireland</option>
<option value="553">Isle Of Man</option>
<option value="21">Israel</option>
<option value="554">Jamaica</option>
<option value="2">Japan</option>
<option value="556">Jersey</option>
<option value="557">Jordan</option>
<option value="558">Kazakhstan</option>
<option value="668">Kazakhstan2</option>
<option value="559">Kenya</option>
<option value="560">Kiribati</option>
<option value="562">Korea</option>
<option value="563">Kuwait</option>
<option value="564">Kyrgyzstan</option>
<option value="35">Laos</option>
<option value="565">Latvia</option>
<option value="566">Lebanon</option>
<option value="567">Lesotho</option>
<option value="568">Liberia</option>
<option value="569">Libyan Arab Jamahiriya</option>
<option value="570">Liechtenstein</option>
<option value="571">Lithuania</option>
<option value="572">Luxembourg</option>
<option value="573">Macau</option>
<option value="574">Macedonia</option>
<option value="575">Madagascar</option>
<option value="576">Malawi</option>
<option value="577">Maldives</option>
<option value="578">Mali</option>
<option value="579">Malta</option>
<option value="580">Marshall Islands</option>
<option value="581">Martinique</option>
<option value="582">Mauritania</option>
<option value="583">Mauritius</option>
<option value="584">Mayotte</option>
<option value="32">Mexican</option>
<option value="585">Micronesia</option>
<option value="586">Moldova</option>
<option value="587">Monaco</option>
<option value="29">Mongolia</option>
<option value="588">Montserrat</option>
<option value="589">Morocco</option>
<option value="590">Mozambique</option>
<option value="591">Myanmar</option>
<option value="592">Namibia</option>
<option value="593">Nauru</option>
<option value="31">Nepal</option>
<option value="39">Netherlands</option>
<option value="594">Netherlands Antilles</option>
<option value="595">Neutral Zone</option>
<option value="596">New Caledonia</option>
<option value="20">New Zealand</option>
<option value="597">Nicaragua</option>
<option value="598">Niger</option>
<option value="599">Nigeria</option>
<option value="600">Niue</option>
<option value="601">Norfolk Island</option>
<option value="33">North Korea</option>
<option value="602">Northern Mariana Islands</option>
<option value="37">Norway</option>
<option value="603">Oman</option>
<option value="604">Pakistan</option>
<option value="605">Palau</option>
<option value="606">Panama</option>
<option value="607">Papua New Guinea</option>
<option value="608">Paraguay</option>
<option value="609">Peru</option>
<option value="23">Philippines</option>
<option value="610">Pitcairn</option>
<option value="611">Poland</option>
<option value="612">Portugal</option>
<option value="613">Puerto Rico</option>
<option value="614">Qatar</option>
<option value="615">Reunion</option>
<option value="616">Romania</option>
<option value="24">Russian Federation</option>
<option value="617">Rwanda</option>
<option value="618">Saint Helena</option>
<option value="619">Samoa</option>
<option value="620">San Marino</option>
<option value="621">Sao Tome and Principe</option>
<option value="622">Saudi Arabia</option>
<option value="674">Scotland</option>
<option value="623">Senegal</option>
<option value="624">Seychelles</option>
<option value="625">Sierra Leone</option>
<option value="626">Slovakia</option>
<option value="627">Slovenia</option>
<option value="628">Solomon Islands</option>
<option value="629">Somalia</option>
<option value="630">South Africa</option>
<option value="631">South Georgia and The Sandwich</option>
<option value="26">Spain</option>
<option value="632">Sri Lanka</option>
<option value="633">Sudan</option>
<option value="634">Suriname</option>
<option value="635">Swaziland</option>
<option value="636">Sweden</option>
<option value="25">Switzerland</option>
<option value="637">Syrian Arab Republic</option>
<option value="638">Taiwan</option>
<option value="639">Tanzania</option>
<option value="28">Thailand</option>
<option value="676">The Republic of Cote d'ivoire</option>
<option value="640">Togo</option>
<option value="641">Tokelau</option>
<option value="642">Tonga</option>
<option value="643">Trinidad and Tobago</option>
<option value="644">Tunisia</option>
<option value="645">Turkey</option>
<option value="646">Turkmenistan</option>
<option value="647">Turks and Caicos Islands</option>
<option value="648">Tuvalu</option>
<option value="649">Uganda</option>
<option value="650">Ukraine</option>
<option value="651">United Arab Emirates</option>
<option value="667">unknown</option>
<option value="652">Uruguay</option>
<option value="653">USSR</option>
<option value="654">Uzbekistan</option>
<option value="655">Vanuatu</option>
<option value="656">Vatican City State</option>
<option value="657">Venezuela</option>
<option value="30">Vietnam</option>
<option value="659">Virgin Islands (British)</option>
<option value="660">Virgin Islands (U.S.)</option>
<option value="661">Western Sahara</option>
<option value="662">Yemen</option>
<option value="663">Yugoslavia</option>
<option value="664">Zaire</option>
<option value="665">Zambia</option>
<option value="666">Zimbabwe</option>
</select>
<span class="input-group-addon" style="background:#fff;border:none;padding:2px 3px;">
<span class="glyphicon glyphicon-minuss text-danger"></span>
</span>
</div>
</div>
</div>
<div class="col-xs-24 add-personinfo-box">
<span class="text-red" id="btn-add-personinfo-box">
<span class="glyphicon glyphicon-plus"></span> Add a passenger
</span>
<div class="col-xs-24 btn-lg"></div>
</div>
<div class="form-group col-xs-24 Home-Address">
<div class="input-group">
<span class="input-group-addon">
Contact phone no.:
</span>
<div class="form-control input-sm nopadding" style="border:none;-webkit-box-shadow: inset 0 0px 0px rgba(0,0,0,0.075);box-shadow: inset 0 0px 0px rgba(0,0,0,0.">
<div class="col-xs-11 nopadding">
<input type="text" name="landline" value="" class="common_input form-control input-sm" placeholder="Land line" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your Contact Land line.!">
</div>
<div class="col-xs-13 nopadding">
<input type="text" name="mobile" value="" class="common_input form-control input-sm" placeholder="Mobile" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your Contact Mobile.!">
</div>
</div>
</div>
</div>
<?php if($userinfo[0]->COLI_CustomerType!=44003){ ?>
<div class="form-group col-xs-24 Home-Address">
<div class="input-group">
<span class="input-group-addon" style="min-width:145px;">
Home Address:
</span>
<div class="form-control input-sm hidden-xs nopadding">
<div class="col-xs-5 nopadding">
<input name="address_street" class="input_home_addressform form-control input-sm" placeholder="Street" style="border:none;height:28px;" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your home address!">
</div>
<div class="col-xs-1 nopadding" style="font-size:18px;width:10px;">,</div>
<div class="col-xs-5 nopadding">
<input name="address_city" class="input_home_addressform form-control input-sm nopadding" placeholder="City" style="border:none;height:28px;" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your home address!">
</div>
<div class="col-xs-1 nopadding" style="font-size:18px;width:10px;">,</div>
<div class="col-xs-5 nopadding">
<input name="address_state" class="input_home_addressform form-control input-sm nopadding" placeholder="State" style="border:none;height:28px;" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your home address!">
</div>
<div class="col-xs-1 nopadding" style="font-size:18px;width:10px;">,</div>
<div class="col-xs-7 nopadding">
<input name="address_country" class="input_home_addressform form-control input-sm nopadding" placeholder="Country" style="border:none;height:28px;" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your home address!">
</div>
</div>
<input class="form-control input-sm visible-xs-block" name="home_address">
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<div class="col-xs-24 flightinfo-box">
<div class="panel panel-default">
<div class="panel-body">
<div class="row panel-new-head">
<h4 class="text-red">Flight Information <span class="text-muted" style="font-size:15px;">(please skip this if your dont need airport pick up and drop off service)</span></h4>
</div>
<div class="col-xs-24 flight-info-box">
<div class="form-group col-sm-6 nopadding">
<label>Arrival China Flight No.</label>
<input type="text" class="form-control input-sm" name="arrive_flight" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your Flight No.!">
</div>
<div class="form-group col-sm-6 nopadding-R">
<label>Arrival time</label>
<div class="input-groups date" >
<input class="form-control input-sm f_datepicker" type="text" name="arrive_time" value="" autocomplete="off" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your arrival time!" style="color:#333333 !important;">
</div>
</div>
<div class="form-group col-sm-6 nopadding-R">
<label>Departure China Flight no.</label>
<input type="text" class="form-control input-sm" name="departure_flight" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your flight no.!">
</div>
<div class="form-group col-sm-6 nopadding-R">
<label>Departure time</label>
<div class="input-groups date ">
<input class="form-control input-sm f_datepicker" type="text" name="depart_time" value="" autocomplete="off" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your departure time!" style="color:#333333 !important;">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-xs-24">
<div class="panel panel-default">
<div class="panel-body">
<div class="row panel-new-head">
<h4 class="text-red">
Special Request
</h4>
</div>
<div class="col-xs-24 special_request_box">
<div class="form-group">
<div class="col-xs-24 nopadding">
<textarea class="form-control input-sm" rows="5" name="special_request" placeholder="King-size bed for
Vegetarian food for
Different arrival/departure information for
"></textarea>
</div>
<div class="col-xs-24 btn-lg"></div>
</div>
</div>
</div>
</div>
</div>
<?php if($userinfo[0]->COLI_CustomerType!=44003){ ?>
<div class="col-xs-24">
<div class="panel panel-default">
<div class="panel-body">
<div class="row panel-new-head">
<h4 class="text-red">
Emergency Contact Information
<span class="text-muted" style="font-size:15px;">(in case an unlikely event happens when you are traveling)</span>
</h4>
</div>
<div class="col-xs-24 new-form-horizontal emergencyx_box">
<div class="form-group col-sm-13">
<label class="col-sm-9 control-label nopadding-L">Contact person name</label>
<div class="col-sm-13 nopadding">
<input type="text" class="form-control input-sm" name="emergency_person_name" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your emergency contact person name!">
</div>
</div>
<div class="form-group col-sm-11">
<label class="col-sm-7 control-label nopadding-L">E-mail address</label>
<div class="col-sm-17 nopadding">
<input type="text" class="form-control input-sm" name="emergency_email" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your email!">
</div>
</div>
<div class="form-group col-sm-13">
<label class="col-sm-9 control-label nopadding-L">Relationship with him/her</label>
<div class="col-sm-13 nopadding">
<input type="text" class="form-control input-sm" name="emergency_relationship" placeholder="eg: He is Sues father" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in the relationship!">
</div>
</div>
<div class="form-group col-sm-11">
<label class="col-sm-7 control-label nopadding-L">Telephone no. </label>
<div class="col-sm-17 nopadding">
<input type="text" class="form-control input-sm" name="emergency_telephone" placeholder="country code + area code + land line" value="" data-trigger="manual" data-container="body" data-toggle="popover" data-placement="top" data-content="Please fill in your telephone no!">
</div>
</div>
<div class="col-xs-24 btn-lg"></div>
</div>
</div>
</div>
</div>
<?php } ?>
<div class="col-xs-24">
<input type="hidden" name="toname" value="<?php echo $userinfo[0]->OPI_FirstName; ?>">
<input type="hidden" name="tomail" value="<?php echo $userinfo[0]->OPI_Email; ?>">
<input type="hidden" name="COLI_ID" value="<?php echo $userinfo[0]->COLI_ID; ?>">
<input type="hidden" name="COLI_SN" value="<?php echo $userinfo[0]->COLI_SN; ?>">
<input type="hidden" name="visitor_link" value="<?php echo $visitor_link; ?>">
<div class="col-sm-15 col-xs-24 nopadding">
<button type="submit" id="btn-add-userinfo" class="btn btn-danger btn-lg col-sm-9 col-xs-24 pull-right" style="min-width:210px;font-size:24px;background: #DF6536;border-radius:6px;">Check & Submit</button>
</div>
<div class="partner-text col-sm-9 col-xs-24 text-left">Thanks,yours <?php echo $userinfo[0]->OPI_FirstName; ?></div>
</div>
</form>
</div>
</div>
<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Error!</h4>
</div>
<div class="modal-body" style="height:150px;">
<p class="text-danger lead" style="padding-top:10px;">Error: Please contact your travel advisor.</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(".common_input,textarea").each(function(){
if ($(this).val()=='' && $(this).attr('placeholder')!='') {
var valstr=$(this).val($(this).attr('placeholder'));
$(this).css("color","#999999");
}
});
$(".common_input,textarea").click(function(){
if ($(this).val()==$(this).attr('placeholder') || $(this).val()=='') {
$(this).val('');
$(this).css("color","#333333");
}
$(this).popover('hide');
});
$(".common_input,textarea").blur(function(){
if ($(this).val()=='' && $(this).attr('placeholder')!='') {
$(this).val($(this).attr('placeholder'));
$(this).css("color","#999999");
}
});
//提交信息
$("#form-confirm-info").submit(function(event){
event.preventDefault();
var $btn = $("#btn-add-userinfo").button('loading');
var flag=true;
$(".common_input").each(function(){
if ($(this).val()==$(this).attr('placeholder') || $(this).val()=='') {
$(this).popover('show');
flag = false;
$btn.button('reset');
return false;
};
});
if (!flag) {
$btn.button('reset');
return false;
};
$(".input_home_address").each(function()
{
if ($(this).val()==$(this).attr('placeholder')) {
$(this).val('');
}
});
if ($("textarea").val()==$("textarea").attr('placeholder')) {
$("textarea").val('');
};
var url=$(this).attr('action');
var data=$(this).serialize();
$.ajax({
type: "post",
url: url,
dataType: "json",
data: data,
success: function(json_data) {
if (json_data.status == 'ok') {
location.href='<?php echo site_url('apps/order/confirm/index/0/0/0/ct'); ?>';
} else {
$btn.button('reset');
$('#myModal').modal('show');
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$btn.button('reset');
alert(errorThrown);
}
});
});
//移除一个客户信息
$('body').on('click','.glyphicon-minus',function(){
if(confirm("Remove this passenger?"))
{
$(this).parents('.personinfo-input-box').remove();
}
});
//添加一个客户信息
$("#btn-add-personinfo-box").click(function()
{
var html=$(".personinfo-input-box:first").clone();
$('.add-personinfo-box').before(html);
var num=$(".personinfo-input-box").length;
var $currentbox=$(".personinfo-input-box:last");
$currentbox.find('.glyphicon-minuss').addClass('glyphicon-minus').removeClass('glyphicon-minuss');
$currentbox.find('label').remove();
$currentbox.find('input').val('');
$currentbox.find('.datepicker').removeClass('hasDatepicker').attr('id','');
$currentbox.find('.bd_datepicker').removeClass('hasDatepicker').attr('id','');
$('.datepicker').datepicker({
controlType: 'select',
oneLine: true,
changeMonth: true,
changeYear: true,
yearRange: '2010:2055',
timeFormat: 'mm/dd/yy'
});
$('.bd_datepicker').datepicker({
controlType: 'select',
oneLine: true,
changeMonth: true,
changeYear: true,
defaultDate:'-45y',
yearRange: '1920:2055',
timeFormat: 'mm/dd/yy'
});
});
//日期初始化
$('.f_datepicker').datetimepicker({
controlType: 'select',
oneLine: true,
changeMonth: false,
changeYear: false,
timeFormat: 'H:mm'
});
$('.bd_datepicker').datepicker({
controlType: 'select',
oneLine: true,
changeMonth: true,
changeYear: true,
defaultDate:'-45y',
yearRange: '1920:2055',
timeFormat: 'mm/dd/yy'
});
$('.datepicker').datepicker({
controlType: 'select',
oneLine: true,
changeMonth: true,
changeYear: true,
yearRange: '2010:2055',
timeFormat: 'mm/dd/yy'
});
});
$(document).on('click','.common_input',function(){
$(this).popover('hide');
});
</script>
</body>
</html>

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow" />
<title>www.chinatravel.com</title>
<link href="/css/order/bootstrap.min.css" rel="stylesheet" type="text/css"/>
<link href="/css/order/order.css?v=201506052" rel="stylesheet" type="text/css"/>
<link href="/css/order/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css"/>
<!--[if lt IE 9]>
<script src="/js/respond.min.js" type="text/javascript"></script>
<![endif]-->
<script src="/js/jquery.min.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui-timepicker-addon.js" type="text/javascript"></script>
<style type="text/css">
#header {background: #DF6536 !important;}
.text-red{color: #DF6536 !important;}
</style>
</head>
<body class="modal-open">
<div id="headerWrapper">
<div id="header">
<div id="mainnav" class="nav navbar" role="navigation">
<div class="container-fluid">
<div class="row">
<div class="col-lg-3 col-sm-4 logobox hidden-xs" style="top:8px;">
<a href="javascript:void(0);">
<img src="//www.chinatravel.com/images/chinatravel-logo.png" alt="logo">
</a>
</div>
<div class="col-lg-15 col-sm-13 col-lg-offset-3 col-sm-offset-4">
<div class="navbar-header">
</div>
</div>
<div class="col-lg-6 col-sm-7 hidden-xs pull-right nopadding">
<div class="tollfree pull-right" style="padding-top:10px;">
<div class="currentNo col-sm-24 nopadding"><span class="glyphicon glyphicon-earphone" style="font-size:12px;"></span> 800-933-7181 (Free in USA & CA)</div>
<div class="col-sm-24">
<div class="currentNo col-sm-24 nopadding"> 86-773-2889566 (Intl rates apply)</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bs-example bs-example-modal" data-example-id="static-modal">
<div class="modal" style="display:block;">
<div class="modal-dialog" style="margin-top:200px;">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title text-success" id="modal-title">Success!<a class="anchorjs-link" href="#modal-title"><span class="anchorjs-icon"></span></a></h3>
</div>
<div class="modal-body" style="height:150px;">
<h4 style="padding-top:10px;">For any change, please contact your travel advisor.</h4>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
<div class="modal-backdrop fade in" style="bottom:0;"></div>
</body>
</html>

@ -0,0 +1,168 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class search extends CI_Controller{
public function __construct(){
parent::__construct();
$this->load->model("BIZ_train_model");//加载模型
}
//查询聚合余票接口,对返回的数据进行处理
public function index($train_date,$fromStation,$toStation){
$url = 'http://op.juhe.cn/trainTickets/ticketsAvailable?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation;
$back_data = $this->get_http($url);
//print_r(json_decode($back_data));
$return_data = new stdClass();
$return_data->httpstatus = 200;
$return_data->data = new stdClass();
$return_data->data->result = array();
$return_data->data->map = new stdClass();
$obj = array();
$i = 0;
$pricestr = '';
if(!empty(json_decode($back_data)->result->list)){
foreach (json_decode($back_data)->result->list as $value){
$obj[$value->from_station_code] = $value->from_station_name;
$obj[$value->to_station_code] = $value->to_station_name;
$seat_type = '';
if(isset($value->gjrw_price)){
if($value->gjrw_price > 0){
$gjrwPrice = $value->gjrw_price * 10;
$seat_type .= '"6":"'.$gjrwPrice.'","A6":"¥'.$value->gjrw_price.'",';
}
}
if(isset($value->qtxb_price)){
if($value->qtxb_price > 0){
$seat_type .= '"H":"¥'.$value->qtxb_price.'",';
}
}
if(isset($value->rw_price)){
if($value->rw_price > 0){
$rwPrice = $value->rw_price * 10;
$seat_type .= '"4":"'.$rwPrice.'","A4":"¥'.$value->rw_price.'",';
}
}
if(isset($value->rz_price)){
if($value->rz_price > 0){
$rzPrice = $value->rz_price * 10;
$seat_type .= '"2":"'.$rzPrice.'","A2":"¥'.$value->rz_price.'",';
}
}
if(isset($value->tdz_price)){
if($value->tdz_price > 0){
$seat_type .= '"P":"¥'.$value->tdz_price.'",';
}
}
if(isset($value->wz_price)){
if($value->wz_price > 0){
$wzPrice = $value->wz_price * 10;
$seat_type .= '"WZ":"¥'.$value->wz_price.'",';
}
}
if(isset($value->yw_price)){
if($value->yw_price > 0){
$ywPrice = $value->yw_price * 10;
$seat_type .= '"3":"'.$ywPrice.'","A3":"¥'.$value->yw_price.'",';
}
}
if(isset($value->yz_price)){
if($value->yz_price > 0){
$yzPrice = $value->yz_price * 10;
$seat_type .= '"1":"'.$yzPrice.'","A1":"¥'.$value->yz_price.'",';
}
}
if(isset($value->edz_price)){
if($value->edz_price > 0){
$seat_type .= '"O":"¥'.$value->edz_price.'",';
}
}
if(isset($value->ydz_price)){
if($value->ydz_price > 0){
$seat_type .= '"M":"¥'.$value->ydz_price.'",';
}
}
if(isset($value->swz_price)){
if($value->swz_price > 0){
$swzPrice = $value->swz_price * 10;
$seat_type .= '"9":"'.$swzPrice.'","A9":"¥'.$value->swz_price.'",';
}
}
$pricestr = $seat_type.'"train_no":'.'"'.$value->train_no.'"';
//余票字符串
$return_data->data->result[$i] = '|预定|'.$value->train_no.'|'.$value->train_code.'|'.$value->from_station_name.'|'.$value->to_station_name.'|'.$value->from_station_code.'|'.$value->to_station_code.'|'.$value->start_time.'|'.$value->arrive_time.'|'.$value->run_time.'|'.$value->can_buy_now.'||'.$value->train_start_date.'||||||||'.$this->ticket_exchange($value->gjrw_num).'|'.$this->ticket_exchange($value->qtxb_num).'|'.$this->ticket_exchange($value->rw_num).'|'.$this->ticket_exchange($value->rz_num).'|'.$this->ticket_exchange($value->tdz_num).'|'.$this->ticket_exchange($value->wz_num).'||'.$this->ticket_exchange($value->yw_num).'|'.$this->ticket_exchange($value->yz_num).'|'.$this->ticket_exchange($value->edz_num).'|'.$this->ticket_exchange($value->ydz_num).'|'.$this->ticket_exchange($value->swz_num).'|'.$this->ticket_exchange($value->dw_num).'||';
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$pricestr.'},"messages":[],"validateMessages":{}}';
$return_data->data->price[$i] = $data;
$this->BIZ_train_model->addOrUpdate($value->train_no,$value->train_code,$value->from_station_code,$value->to_station_code,json_encode($data));
$i++;
}
}
$return_data->data->map = (object)$obj;
print_r(json_encode($return_data));
}
//获取价格
/*
fromStationCode出发站三字码
toStationCode:终点站三字码
trainCode:车次号
*/
public function get_price($fromStationCode,$toStationCode,$trainCode){
$return_data = $this->BIZ_train_model->get_price($fromStationCode,$toStationCode,$trainCode);
if(!empty($return_data)){
print_r(json_decode($return_data->TPL_Price));
}else{
print_r('没有数据返回');
}
}
//余票转换
function ticket_exchange($num){
if(is_numeric($num)){
if($num == 0){
return '无';
}elseif($num >= 99){
return '有';
}else{
return $num;
}
}else{
if($num == '--'){
return '';
}
}
}
//发送请求
function get_http($url, $data = '', $method = 'GET') {
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
if ($method == 'POST' && !empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
}
curl_setopt($curl, CURLOPT_TIMEOUT, 45); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
$errno = curl_errno($curl);
if ($errno !== 0) {
return false;
$error_message = $errno . ' ' . curl_error($curl); //记录错误日志
log_message('error', "third_party/train_app/index/get_http curl {$error_message}");
}
curl_close($curl); //关闭CURL会话
return $tmpInfo; //返回数据
}
}
?>

@ -5,8 +5,66 @@ class BIZ_train_model extends CI_Model {
function __construct() {
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
$this->INFO = $this->load->database('INFO', TRUE);
}
//新增或更新价格
public function addOrUpdate($TPL_Train_No,$TPL_Train_Code,$TPL_From_Station_Code,$TPL_To_Station_Code,$TPL_Price){
$sql = "IF NOT EXISTS(
SELECT 1
FROM TrainPriceList
WHERE TPL_Train_Code = '$TPL_Train_Code'
AND TPL_From_Station_Code = '$TPL_From_Station_Code'
AND TPL_To_Station_Code = '$TPL_To_Station_Code'
) BEGIN
INSERT INTO TrainPriceList
(
TPL_Train_No,
TPL_Train_Code,
TPL_From_Station_Code,
TPL_To_Station_Code,
TPL_Price,
TPL_Datetime,
TPL_Source
)
VALUES
(
'$TPL_Train_No','$TPL_Train_Code','$TPL_From_Station_Code','$TPL_To_Station_Code','$TPL_Price',GETDATE(),'juhe'
)
END
ELSE
BEGIN
UPDATE TrainPriceList
SET TPL_Train_No = '$TPL_Train_No',
TPL_Price = '$TPL_Price',
TPL_Datetime = GETDATE(),
TPL_Source = 'juhe'
WHERE TPL_Train_Code = '$TPL_Train_Code'
AND TPL_From_Station_Code = '$TPL_From_Station_Code'
AND TPL_To_Station_Code = '$TPL_To_Station_Code'
END
";
$query = $this->INFO->query($sql);
return $query;
}
//获取价格
public function get_price($fromStationCode,$toStationCode,$trainCode){
$sql = "SELECT
TPL_Price
FROM
TrainPriceList
WHERE
TPL_Train_Code = '$trainCode'
AND
TPL_From_Station_Code = '$fromStationCode'
AND
TPL_To_Station_Code = '$toStationCode'";
$query = $this->INFO->query($sql);
return $query->row();
}
function biz_order_detail($cold_sn) {
$sql = "
SELECT TOP 1 bfoi.FOI_SN

@ -18,7 +18,7 @@ class Index extends CI_Controller {
$this->permission->is_admin();
$data = array();
$data['city'] = $city;
$data['ta_review_list'] = $this->Tripadvisor_Review_model->search(30, $data['city']);
$data['ta_review_list'] = $this->Tripadvisor_Review_model->search(200, $data['city']);
$this->load->view('bootstrap3/header', $data);
$this->load->view('welcome');
$this->load->view('bootstrap3/footer');

@ -99,6 +99,9 @@ class Tripadvisor_Review_model extends CI_Model {
}
public function find_group($city, $start_date, $end_date) {
if($city=='Panda'){
$city='chengdu';
}
$sql = "
SELECT top 100 GRI_No
,coli_id

@ -0,0 +1,300 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
//途牛apiurl
define("TUNIU_URL","https://open.tuniu.cn");
//途牛apikey
define("TUNIU_KEY","AILvoDj8El7KCSMe25");
class Tuniu_train extends CI_Controller{
public function __construct(){
// header("Content-Type: text/html;charset=utf-8");
parent::__construct();
date_default_timezone_set('PRC');
$this->load->helper('tuniu');
$this->load->library('Des');
$this->load->model("tuniuprice_model");
}
//创建请求签名
public function create_sign(){
$time = date('Y-m-d H:i:s',time());
$secretKey = 'hxRkFRKaYCScaJRRO2db';
$id = 'retailId25';
$timeStamp = 'timestamp'.$time;
$sign = $secretKey.$id.'apiKey'.TUNIU_KEY.$timeStamp.$secretKey;
return strtoupper(md5($sign));
}
//index
public function index(){
echo 'hi,tuniu';
}
//获取余票
public function search($date,$fromStation,$toStation){
$sign = $this->create_sign();
$url = TUNIU_URL.'/train/search';
$time = date('Y-m-d H:i:s',time());
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": { "trainDate": "'.$date.'", "fromStation": "'.$fromStation.'", "toStation": "'.$toStation.'", "trainCode": "" }
}';
$back_data = post_tuniu($url,$post_data,$method = 'POST');
//print_r(json_decode($back_data));
$return_data = new stdClass();
$return_data->returnCode = json_decode($back_data)->returnCode;
$return_data->httpstatus = 200;
$return_data->data = new stdClass();
$return_data->data->result = array();
$return_data->data->map = new stdClass();
$i = 0;
$pricestr = '';
if(!empty(json_decode($back_data)->data)){
foreach (json_decode($back_data)->data as $value){
$obj[$value->fromStationCode] = $value->fromStationName;
$obj[$value->toStationCode] = $value->toStationName;
$seat_type = '';
if(isset($value->gjrwPrice)){
if(is_numeric($value->gjrwPrice)){
$gjrwPrice = $value->gjrwPrice * 10;
$seat_type .= '"6":"'.$gjrwPrice.'","A6":"¥'.$value->gjrwPrice.'",';
}
}
if(isset($value->qtxbPrice)){
if(is_numeric($value->qtxbPrice)){
$seat_type .= '"H":"¥'.$value->qtxbPrice.'",';
}
}
if(isset($value->rwPrice)){
if(is_numeric($value->rwPrice)){
$rwPrice = $value->rwPrice * 10;
$seat_type .= '"4":"'.$rwPrice.'","A4":"¥'.$value->rwPrice.'",';
}
}
if(isset($value->rzPrice)){
if(is_numeric($value->rzPrice)){
$rzPrice = $value->rzPrice * 10;
$seat_type .= '"2":"'.$rzPrice.'","A2":"¥'.$value->rzPrice.'",';
}
}
if(isset($value->tdzPrice)){
if(is_numeric($value->tdzPrice)){
$seat_type .= '"P":"¥'.$value->tdzPrice.'",';
}
}
if(isset($value->wzPrice)){
if(is_numeric($value->wzPrice)){
$wzPrice = $value->wzPrice * 10;
$seat_type .= '"WZ":"¥'.$value->wzPrice.'",';
}
}
if(isset($value->ywPrice)){
if(is_numeric($value->ywPrice)){
$ywPrice = $value->ywPrice * 10;
$seat_type .= '"3":"'.$ywPrice.'","A3":"¥'.$value->ywPrice.'",';
}
}
if(isset($value->yzPrice)){
if(is_numeric($value->yzPrice)){
$yzPrice = $value->yzPrice * 10;
$seat_type .= '"1":"'.$yzPrice.'","A1":"¥'.$value->yzPrice.'",';
}
}
if(isset($value->edzPrice)){
if(is_numeric($value->edzPrice)){
$seat_type .= '"O":"¥'.$value->edzPrice.'",';
}
}
if(isset($value->ydzPrice)){
if(is_numeric($value->ydzPrice)){
$seat_type .= '"M":"¥'.$value->ydzPrice.'",';
}
}
if(isset($value->swzPrice)){
if(is_numeric($value->swzPrice)){
$swzPrice = $value->swzPrice * 10;
$seat_type .= '"9":"'.$swzPrice.'","A9":"¥'.$value->swzPrice.'",';
}
}
$pricestr = $seat_type.'"train_no":'.'"'.$value->trainNo.'"';
//余票字符串
$return_data->data->result[$i] = '|预定|'.$value->trainNo.'|'.$value->trainCode.'|'.$value->fromStationName.'|'.$value->toStationName.'|'.$value->fromStationCode.'|'.$value->toStationCode.'|'.$value->startTime.'|'.$value->arriveTime.'|'.$value->runTime.'|'.$value->canBuyNow.'||'.date('Ymd',strtotime($value->trainStartDate)).'||||||||'.ticket_exchange($value->gjrwNum).'|'.ticket_exchange($value->qtxbNum).'|'.ticket_exchange($value->rwNum).'|'.ticket_exchange($value->rzNum).'|'.ticket_exchange($value->tdzNum).'|'.ticket_exchange($value->wzNum).'||'.ticket_exchange($value->ywNum).'|'.ticket_exchange($value->yzNum).'|'.ticket_exchange($value->edzNum).'|'.ticket_exchange($value->ydzNum).'|'.ticket_exchange($value->swzNum).'|'.ticket_exchange($value->dwNum).'||';
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$pricestr.'},"messages":[],"validateMessages":{}}';
$return_data->data->price[$i] = $data;
$this->tuniuprice_model->addOrUpdate($value->trainNo,$value->trainCode,$value->fromStationCode,$value->toStationCode,json_encode($data));
$i++;
}
}
$return_data->data->map = (object)$obj;
print_r(json_encode($return_data));
}
//获取价格
/*
fromStationCode出发站三字码
toStationCode:终点站三字码
trainCode:车次
*/
public function get_price($fromStationCode,$toStationCode,$trainCode){
$return_data = $this->tuniuprice_model->get_price($fromStationCode,$toStationCode,$trainCode);
print_r(json_decode($return_data->TPL_Price));
}
//占座下单
public function book_ticket(){
header('Content-Type:application/json;charset=UTF-8');
$sign = $this->create_sign();
$url = TUNIU_URL.'/train/book';
$time = date('Y-m-d H:i:s',time());
$data = '{
"retailOrderId": "w123",
"cheCi": "K1137",
"fromStationCode": "GBZ",
"fromStationName":"桂林北",
"toStationCode":"NNZ",
"toStationName":"南宁",
"trainDate":"2017-09-25",
"callBackUrl":"http://www.mycht.cn/info.php/apps/train/tuniu_callback/book",
"hasSeat":true,
"contact":"陈宇超",
"phone":"18877381547",
"passengers":[{
"passengerId":1,
"ticketNo": null,
"passengerName": "陈宇超",
"passportNo": "450302199208131039",
"passportTypeId": "1",
"passportTypeName": "二代身份证",
"piaoType": "1",
"piaoTypeName": "成人票",
"zwCode": "4",
"zwName": "软卧",
"cxin": null,
"price": "166.5",
"reason": 0
}]
}';
$crypt = new DES();
$mstr = $crypt->encrypt($data,TUNIU_KEY);
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": "'.$mstr.'"
}';
//print_r($url);
print_r($post_data);
$back_data = post_tuniu($url,$post_data,$method = 'POST');
print_r($back_data);
}
//取消占座
public function cancel_book($retailOrderId,$orderId){
$url = TUNIU_URL.'/train/cancel';
$sign = $this->create_sign();
$time = date('Y-m-d H:i:s',time());
$data =
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": {
"retailOrderId":"'.$retailOrderId.'",
"orderId":"'.$orderId.'",
"callBackUrl":"http://www.mycht.cn/info.php/apps/train/tuniu_callback/cancelbook"
}
}';
$back_data = post_tuniu($url,$post_data,$method = 'POST');
print_r($back_data);
}
//确认出票
public function confirm_ticket($retailOrderId,$orderId){
$url = TUNIU_URL.'/train/confirm';
$sign = $this->create_sign();
$time = date('Y-m-d H:i:s',time());
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": {
"retailOrderId":"'.$retailOrderId.'",
"orderId":"'.$orderId.'",
"callBackUrl":"http://www.mycht.cn/info.php/apps/train/tuniu_callback/confirm"
}
}';
$back_data = post_tuniu($url,$post_data,$method = 'POST');
print_r($back_data);
}
//退票
public function cancel_ticket($retailOrderId,$orderId){
$url = TUNIU_URL.'/train/return';
$sign = $this->create_sign();
$time = date('Y-m-d H:i:s',time());
$data = '{
"retailOrderId": "'.$retailOrderId.'",
"orderId": "'.$orderId.'",
"orderNumber": "E551561213",
"callBackUrl":"http://www.mycht.cn/info.php/apps/train/tuniu_callback/return_ticket",
"tickets":[{
"ticketNo": "TN_aaac40ec06d72851",
"passengerName": "陈宇超",
"passportTypeId": "1",
"passportNo": "450302199208131039"
}]
}';
$crypt = new DES();
$mstr = $crypt->encrypt($data,TUNIU_KEY);
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": "'.$mstr.'"
}';
$back_data = post_tuniu($url,$post_data,$method = 'POST');
print_r($back_data);
}
//查询经停站
public function queryStaions($time,$trainNo){
$sign = $this->create_sign();
$url = TUNIU_URL.'/train/queryStations';
$time = date('Y-m-d H:i:s',time());
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": {
"trainDate": "'.$time.'",
"trainCode": "'.$trainNo.'"
}
}';
$back_data = post_tuniu($url,$post_data,$method = 'POST');
print_r($back_data);
}
//身份验证
public function validate(){
//$name = $this->input->post('name');
//$identityType = $this->input->post('identityType');
//$identifyCard = $this->input->post('identifyCard');
$sign = $this->create_sign();
$url = TUNIU_URL.'/train/validate';
$time = date('Y-m-d H:i:s',time());
$post_data = '{
"apiKey": "'.TUNIU_KEY.'",
"sign": "'.$sign.'",
"timestamp": "'.$time.'",
"data": { "name": "", "identityType": "", "identifyCard": ""}
}';
$back_data = post_tuniu($url,$post_data,$method = 'POST');
print_r($back_data);
}
}

@ -0,0 +1,56 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//验证参数是否存在并且是否为数字
function checkNum($num){
if(isset($num)){
if(is_numeric($num)){
return true;
}else{
return false;
}
}else{
return false;
}
}
//余票转换
function ticket_exchange($num){
if(is_numeric($num)){
if($num == 0){
return '无';
}elseif($num == 99){
return '有';
}else{
return $num;
}
}
}
//发送请求函数
function post_tuniu($url, $data = '', $method = 'GET') {
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
if ($method == 'POST' && !empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
}
curl_setopt($curl, CURLOPT_TIMEOUT, 45); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
$errno = curl_errno($curl);
if ($errno !== 0) {
return false;
echo $errno . curl_error($curl); //记录错误日志
}
curl_close($curl); //关闭CURL会话
return $tmpInfo; //返回数据
}
?>

@ -0,0 +1,59 @@
<?php
class Des
{
function encrypt($string,$key)
{
$size = mcrypt_get_block_size('des', 'ecb');
//$string = mb_convert_encoding($string, 'GBK', 'UTF-8');
$string = $this->pkcs5_pad($string, $size);
$td = mcrypt_module_open('des', '', 'ecb', '');
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
@mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $string);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
function decrypt($string,$key)
{
$string = base64_decode($string);
$td = mcrypt_module_open('des', '', 'ecb', '');
//使用MCRYPT_DES算法,cbc模式
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
@mcrypt_generic_init($td, $key, $iv);
//初始处理
$decrypted = mdecrypt_generic($td, $string);
//解密
mcrypt_generic_deinit($td);
//结束
mcrypt_module_close($td);
$result = $this->pkcs5_unpad($decrypted);
// $result = mb_convert_encoding($result, 'UTF-8', 'GBK');
return $result;
}
function pkcs5_pad($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($text)
{
$pad = ord($text{strlen($text) - 1});
if ($pad > strlen($text)) {
return false;
}
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
return false;
}
return substr($text, 0, -1 * $pad);
}
}
?>

@ -0,0 +1,66 @@
<?php
class tuniuprice_model extends CI_Model {
function __construct() {
parent::__construct();
$this->INFO = $this->load->database('INFO', TRUE);
}
//新增或更新价格
public function addOrUpdate($TPL_Train_No,$TPL_Train_Code,$TPL_From_Station_Code,$TPL_To_Station_Code,$TPL_Price){
$sql = "IF NOT EXISTS(
SELECT 1
FROM TrainPriceList
WHERE TPL_Train_Code = '$TPL_Train_Code'
AND TPL_From_Station_Code = '$TPL_From_Station_Code'
AND TPL_To_Station_Code = '$TPL_To_Station_Code'
) BEGIN
INSERT INTO TrainPriceList
(
TPL_Train_No,
TPL_Train_Code,
TPL_From_Station_Code,
TPL_To_Station_Code,
TPL_Price,
TPL_Datetime,
TPL_Source
)
VALUES
(
'$TPL_Train_No','$TPL_Train_Code','$TPL_From_Station_Code','$TPL_To_Station_Code','$TPL_Price',GETDATE(),'tuniu'
)
END
ELSE
BEGIN
UPDATE TrainPriceList
SET
TPL_Train_No = '$TPL_Train_No',
TPL_Price = '$TPL_Price',
TPL_Datetime = GETDATE(),
TPL_Source = 'tuniu'
WHERE TPL_Train_Code = '$TPL_Train_Code'
AND TPL_From_Station_Code = '$TPL_From_Station_Code'
AND TPL_To_Station_Code = '$TPL_To_Station_Code'
END
";
$query = $this->INFO->query($sql);
return $query;
}
//获取价格
public function get_price($fromStationCode,$toStationCode,$trainCode){
$sql = "SELECT
TPL_Price
FROM
TrainPriceList
WHERE
TPL_Train_Code = '$trainCode'
AND
TPL_From_Station_Code = '$fromStationCode'
AND
TPL_To_Station_Code = '$toStationCode'";
$query = $this->INFO->query($sql);
return $query->row();
}
}
?>

@ -96,6 +96,7 @@
<input type="text" class="input-xlarge" name="keywords" id="keywords" value="<?php echo isset($keywords) ? $keywords : false; ?>">
<button class="btn">搜索</button>
<a href="#" onclick="openKCFinder_singleFile_res();" class="btn" title="快速上传图片" ><i class="icon-picture"></i></a>
<a href="#" onclick="openKCFinder_fast();" class="btn btn-default btn-sm" title="快速上传图片" ><span class="icon-folder-open"></span></a>
<a href="#" title="静态化更新" class="btn" data-toggle="modal" data-target="#cache_refresh_modal" ><i class="icon-refresh"></i></a>
</div>
</form>

@ -99,6 +99,7 @@
<span class="input-group-btn">
<button class="btn btn-default btn-sm" type="submit">搜索</button>
<a href="#" onclick="openKCFinder_singleFile_res();" class="btn btn-default btn-sm" title="快速上传图片" ><span class="glyphicon glyphicon-picture"></span></a>
<a href="#" onclick="openKCFinder_fast();" class="btn btn-default btn-sm" title="快速上传图片" ><span class="glyphicon glyphicon-folder-open"></span></a>
<a href="#" title="静态化更新" class="btn btn-default btn-sm" data-toggle="modal" data-target="#cache_refresh_modal" ><span class="glyphicon glyphicon-repeat"></span></a>
</span>
</div>

@ -1183,7 +1183,7 @@
<input type="checkbox" name="ignore_url_check" id="ignore_url_check" />忽略URL重复
</label>
<div class="clearfix"></div>
<?php if (is_series_site() || ($this->config->item('site_code') == 'ah')) { ?>
<?php if (is_series_site() || ($this->config->item('site_code') == 'ah') || ($this->config->item('site_code') == 'gm') ) { ?>
<label class="col-xs-24">本站会自动更新静态页面</label>
<?php } else { ?>
<label class="checkbox col-xs-24" style="font-weight: normal;margin-top:0;padding-left: 21px;">

@ -88,19 +88,17 @@ function is_remote_ip()
if(isset($_SERVER["REMOTE_ADDR"]))$ip_list=$_SERVER["REMOTE_ADDR"].' ';
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]))$ip_list.=$_SERVER["HTTP_X_FORWARDED_FOR"];
//$ip_list=$_SERVER["REMOTE_ADDR"].' '.$_SERVER["HTTP_X_FORWARDED_FOR"];
//echo $ip_list.'<br/>';
if (stripos($ip_list,'202.103.68.34')!==false)
{
//print_r($_SERVER);
echo '<!--'.$ip_list.'-->';
if (stripos($ip_list,'202.103.68.34')!==false) {
return false;
}
elseif (stripos($ip_list,'221.7.151.39')!==false || stripos($ip_list,'221.7.151.37')!==false || stripos($ip_list,'221.7.151.41')!==false || stripos($ip_list,'111.59.90.31')!==false || stripos($ip_list,'180.140.114.208')!==false )
{
}elseif (stripos($ip_list,'221.7.151.39')!==false || stripos($ip_list,'221.7.151.37')!==false || stripos($ip_list,'221.7.151.41')!==false || stripos($ip_list,'111.59.90.31')!==false || stripos($ip_list,'180.140.114.208')!==false ){
return false;
}else if($ip_list!=='::1'){ //这个也是本地IP
return false;
}
else
{
return true;
}
return true;
}
?>

Loading…
Cancel
Save