Merge branch 'master' of github.com:hainatravel/information-system

mobile-first
Ycc 5 years ago
commit 83af1fc97d

@ -410,7 +410,7 @@ $config['site'] = array(
'pgr' => array('site_code' => 'pgr', 'site_id' => 148, 'site_lgc' => '2', 'sitemap_name' => '', 'site_image_url' => '', 'site_url' => 'https://www.peregrine.cn', 'site_sitemap' => '', 'site_authors' => array('X', 'sfx'), 'site_user' => array(',ycc,sfx,X,')), 'pgr' => array('site_code' => 'pgr', 'site_id' => 148, 'site_lgc' => '2', 'sitemap_name' => '', 'site_image_url' => '', 'site_url' => 'https://www.peregrine.cn', 'site_sitemap' => '', 'site_authors' => array('X', 'sfx'), 'site_user' => array(',ycc,sfx,X,')),
'ts' => array('site_code' => 'ts', 'site_id' => 149, 'site_lgc' => '1', 'sitemap_name' => '', 'site_image_url' => '', 'site_url' => 'https://www.trainspread.com', 'site_sitemap' => '', 'site_authors' => array('X', 'sfx'), 'site_user' => array(',ycc,sfx,X,')), 'ts' => array('site_code' => 'ts', 'site_id' => 149, 'site_lgc' => '1', 'sitemap_name' => '', 'site_image_url' => '', 'site_url' => 'https://www.trainspread.com', 'site_sitemap' => '', 'site_authors' => array('X', 'sfx'), 'site_user' => array(',ycc,sfx,X,')),
'bht' => array('site_code' => 'bht', 'site_id' => 6565, 'site_lgc' => '1', 'site_image_url' => '', 'site_url' => 'https://www.beijinghighlights.com', 'site_authors' => array('cj')), 'bht' => array('site_code' => 'bht', 'site_id' => 6565, 'site_lgc' => '1', 'site_image_url' => '', 'site_url' => 'https://www.beijinghighlights.com', 'site_authors' => array('cj')),
'trippest' => array('site_code' => 'trippest', 'site_id' => 145, 'site_lgc' => '1', 'site_image_url' => '', 'site_url' => 'https://www.trippest.com', 'site_authors' => array('cj')) 'trippest' => array('site_code' => 'trippest', 'site_id' => 145, 'site_lgc' => '1', 'site_image_url' => '', 'site_url' => 'https://www.trippest.com', 'site_authors' => array('cj'),'site_user' => array(',ycc,zp,'))
); );
//静态文件生成路径 //静态文件生成路径
@ -682,7 +682,7 @@ $config['project_state'] = array(
//是否开启权限控制 //是否开启权限控制
$config['check_access'] = TRUE; $config['check_access'] = TRUE;
//权限管理超级管理 //权限管理超级管理
$config['access_super_manage'] = array('ycc', 'lmr', 'lyj','cyc'); $config['access_super_manage'] = array('ycc', 'lmr', 'lyj','cyc','zp');
//编辑器预览样式路径 //编辑器预览样式路径
$config['css_source_cht'] = 'https://data.chinahighlights.com/css/min.php?f=/public/css/global.min.css,/css/festival-detail.css'; $config['css_source_cht'] = 'https://data.chinahighlights.com/css/min.php?f=/public/css/global.min.css,/css/festival-detail.css';

@ -0,0 +1,115 @@
<?php
/**
* TP抓取数据infobokundata表的操作界面
*/
defined('BASEPATH') or exit('No direct script access allowed');
class InfoBokunData extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model("InfoBokunData_model");
}
public function index($ic_id)
{
$list = $this->InfoBokunData_model->getList($ic_id);
if ($list) {
$data["list"] = $list;
$this->load->view("/trippest/infobokundata", $data);
} else {
if ($ic_id > 0) {
$newBokun = new stdClass(); //如果是cht的产品构建一个bokun属性这样可以使用bokun的管理界面添加图片等属性。
$newBokun->ibd_id = 0;
$newBokun->ibd_ic_id = $ic_id;
$newBokun->ibd_parentId = 0;
$newBokun->ibd_ItemName = "ActivityID";
$newBokun->ibd_Itemvalue = "0";
$newBokun->ibd_ItemType = "";
$newBokun->ibd_ItemDescription = "";
$list[] = $newBokun;
$data["list"] = $list;
/**初始化一条bokun activityId的属性 */
$this->InfoBokunData_model->ibd_ic_id = $ic_id;
$this->InfoBokunData_model->ibd_parentId = 0;
$this->InfoBokunData_model->ibd_ItemName = "ActivityID";
$this->InfoBokunData_model->ibd_Itemvalue = "0";
$this->InfoBokunData_model->ibd_ItemType = "";
$this->InfoBokunData_model->ibd_ItemDescription = "";
$this->InfoBokunData_model->Add();
//调用视图
$this->load->view("/trippest/infobokundata", $data);
} else {
header('Cache-Control: no-cache');
echo "找不到对应信息!";
return;
}
}
}
//保存bokun附加配置
function save_meta()
{
$ibd_id = $this->input->post('ibd_id');
$ibd_Itemvalue = $this->input->post('ibd_Itemvalue');
$ibd_ItemType = $this->input->post('ibd_ItemType');
$ibd_ItemDescription = $this->input->post('ibd_ItemDescription');
if ($ibd_id && $ibd_Itemvalue !== false) {
$this->InfoBokunData_model->update_byId($ibd_id, $ibd_Itemvalue, $ibd_ItemType, $ibd_ItemDescription);
$data[] = array('name' => 'ok', 'value' => $this->lang->line('media_save_success'));
} else {
$data[] = array('name' => 'no', 'value' => $this->lang->line('media_save_error'));
}
echo json_encode($data);
return true;
}
//删除bokun附加
function delete_meta()
{
$ibd_id = $this->input->post('ibd_id');
if ($ibd_id) {
$this->InfoBokunData_model->delete_byid($ibd_id);
$data[] = array('name' => 'ok', 'value' => $this->lang->line('media_delete_success'));
} else {
$data[] = array('name' => 'no', 'value' => $this->lang->line('media_save_error'));
}
echo json_encode($data);
return true;
}
function add_meta()
{
$ibd_ic_id = $this->input->post('ibd_ic_id');
$ibd_parentId = $this->input->post('ibd_parentId');
$ibd_ItemName = $this->input->post('ibd_ItemName');
$ibd_Itemvalue = $this->input->post('ibd_Itemvalue');
$ibd_ItemType = $this->input->post('ibd_ItemType');
$ibd_ItemDescription = $this->input->post('ibd_ItemDescription');
if ($ibd_ic_id && $ibd_ItemName) {
$this->InfoBokunData_model->ibd_ic_id = $ibd_ic_id;
$this->InfoBokunData_model->ibd_parentId = $ibd_parentId;
$this->InfoBokunData_model->ibd_ItemName = $ibd_ItemName;
$this->InfoBokunData_model->ibd_Itemvalue = $ibd_Itemvalue;
$this->InfoBokunData_model->ibd_ItemType = $ibd_ItemType;
$this->InfoBokunData_model->ibd_ItemDescription = $ibd_ItemDescription;
$this->InfoBokunData_model->Add();
$data[] = array('name' => 'ok', 'value' => $this->lang->line('media_save_success'));
} else {
$data[] = array('name' => 'no', 'value' => $this->lang->line('media_save_error'));
}
echo json_encode($data);
return true;
}
}
/* End of file InfoBokunData.php */

@ -551,13 +551,13 @@ class Information extends CI_Controller
case 'gm': case 'gm':
//GET_HTTP("http://148.251.35.42:3300/create-cache/?url=" . urlencode($url)); //请求nodejs静态化更新页面删除缓存因为部分页面没有进入信息平台 //GET_HTTP("http://148.251.35.42:3300/create-cache/?url=" . urlencode($url)); //请求nodejs静态化更新页面删除缓存因为部分页面没有进入信息平台
if ($delete_only) { //if ($delete_only) {
$url = "http://144.76.185.44:8029/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . urlencode($url); // $url = "http://144.76.185.44:8029/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . urlencode($url);
} else { //} else {
//先删除再生成,部分页面没有在信息平台中 //先删除再生成,部分页面没有在信息平台中
GET_HTTP("http://144.76.185.44:8029/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . urlencode($url)); GET_HTTP("http://144.76.185.44:8029/gm.php/information/delete_cache_23Xd913mddkgssODII?static_html_url=" . urlencode($url));
$url = "http://144.76.185.44:8029" . $url; $url = "http://144.76.185.44:8029/gm.php/information/detail/?static_html_url=" . $url;
} //}
break; break;
case 'vac': //国际站 case 'vac': //国际站

@ -54,8 +54,8 @@ class Sendmail extends CI_Controller
} }
$this->load->library('email'); $this->load->library('email');
$config['protocol'] = 'smtp'; $config['protocol'] = 'smtp';
$config['smtp_host'] = 'hwsmtp.exmail.qq.com';//ssl://smtp.sendgrid.net'; $config['smtp_host'] = 'ssl://hwsmtp.exmail.qq.com';//ssl://smtp.sendgrid.net';
$config['smtp_port'] = 25; $config['smtp_port'] = 465;
$config['smtp_user'] = 'noreply02@chinahighlights.net';//'zm198311@yahoo.com.cn'; $config['smtp_user'] = 'noreply02@chinahighlights.net';//'zm198311@yahoo.com.cn';
$config['smtp_pass'] = 'eHgb2Z8G\HbR';//cits@123'; $config['smtp_pass'] = 'eHgb2Z8G\HbR';//cits@123';
$config['smtp_timeout'] = 3600; $config['smtp_timeout'] = 3600;

@ -30,7 +30,7 @@ class Amplib {
}else{ }else{
$data['last_edit_amp_id'] = ''; $data['last_edit_amp_id'] = '';
} }
$this->CI->load->view('bootstrap3/header', $data); $this->CI->load->view('bootstrap3/header', $data);
$this->CI->load->view('amp_editor'); $this->CI->load->view('amp_editor');
$this->CI->load->view('bootstrap3/footer'); $this->CI->load->view('bootstrap3/footer');
@ -38,6 +38,9 @@ class Amplib {
public function auto_create($ic_id) { public function auto_create($ic_id) {
$data = array(); $data = array();
if(strtolower($this->CI->config->item('site_code')) == 'cht'){
$this->CI->Information_model->ic_type = "AND ic.ic_type != 'none'";
}
$data['information'] = $this->CI->Information_model->detail_by_ic_id($ic_id); $data['information'] = $this->CI->Information_model->detail_by_ic_id($ic_id);
if ($data['information'] == FALSE) { if ($data['information'] == FALSE) {
return json_encode(array('result' => 'no', 'data' => '找不到这个页面')); return json_encode(array('result' => 'no', 'data' => '找不到这个页面'));
@ -54,7 +57,7 @@ class Amplib {
break; break;
case 'cht': case 'cht':
$websitehost = 'https://data.chinahighlights.com'; $websitehost = 'https://data.chinahighlights.com';
$html_source_url = 'http://192.155.224.195:2222' . $data['information']->ic_url; $html_source_url = 'http://169.54.172.35:3588' . $data['information']->ic_url;
break; break;
case 'gm': case 'gm':
$websitehost = 'https://data.chinarundreisen.com'; $websitehost = 'https://data.chinarundreisen.com';
@ -110,11 +113,11 @@ class Amplib {
//备份修改的代码 //备份修改的代码
$this->CI->Logs_model->write('backup_amp', $ic_id, $textarea_htmlcode); $this->CI->Logs_model->write('backup_amp', $ic_id, $textarea_htmlcode);
//AMP格式验证 //AMP格式验证
if ($amp_status !== '0') {//只有发布的时候才需要验证 if ($amp_status !== '0') {//只有发布的时候才需要验证
//把AMP网页内容到purifycss处理内置了AMP-Validator //把AMP网页内容到purifycss处理内置了AMP-Validator
$purifycss_server = 'http://184.172.113.217:33033/'; $purifycss_server = 'http://169.54.167.189:33033/';
if ($this->CI->config->item('site_code' == 'gm')) {//德语站点使用自己的css处理服务器 if ($this->CI->config->item('site_code' == 'gm')) {//德语站点使用自己的css处理服务器
$purifycss_server = 'http://158.177.67.52:33033/'; $purifycss_server = 'http://158.177.67.52:33033/';
} }

@ -0,0 +1,107 @@
<?php
/*
* @Author: zp
* @Date: 2020-04-29 11:36:41
* @LastEditTime: 2020-05-26 15:33:10
* @LastEditors: Please set LastEditors
* @Description: 雷延廷的抓取bokun接口文件
* @FilePath: \trippest.com\TP\libraries\bokun_lib.php
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class Bokun_lib
{
protected $ci;
private $bokun_url = 'https://api.bokun.is'; // https://api.bokun.io
private $access_key = '2f6284e43ee84f6a85fbb0c5660c7404';
private $secret_key = 'ef3353fe28dc402b9045c2a766b68efe';
public function __construct()
{
$this->ci =& get_instance();
}
/**
* @description:
* @param string $activityid :产品的ID
* @return: json :产品的详细json数据
* @Date Changed:
*/
public function get_activity_detail($activityid){
$path = "/activity.json/$activityid?currency=USD&lang=EN";
$activity = $this->call_bokun($path,'get');
return ($activity);
}
public function get_all_product_list()
{
$path = "/product-list.json/list?lang=EN";
$product_list = $this->call_bokun($path,'get');
return ($product_list);
}
public function get_product_list_detail($list_id)
{
$path = "/product-list.json/$list_id?currency=USD&lang=EN";
$product_list = $this->call_bokun($path,'get');
return ($product_list);
}
public function get_activity_price($bokun_id)
{
$path = "/activity.json/$bokun_id/price-list?currency=USD";
$price_list = $this->call_bokun($path,'get');
return ($price_list);
}
private function make_bokun_signature($date, $method, $path)
{
$raw_str = $date . $this->access_key . strtoupper($method) . $path;
return base64_encode(hash_hmac("sha1", $raw_str, $this->secret_key, TRUE));
}
private function call_bokun($path, $method, $body=null)
{
$url = $this->bokun_url . $path;
$create_date = gmdate("Y-m-d H:i:s");
$bokun_signature = $this->make_bokun_signature($create_date, $method, $path);
$curl = curl_init();
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array(
"X-Bokun-Date:" . $create_date,
"X-Bokun-AccessKey :" . $this->access_key,
"X-Bokun-Signature :" . $bokun_signature
)
);
$set_post = strtoupper($method) === 'GET' ? false : true;
curl_setopt($curl, CURLOPT_POST, $set_post);
// curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
log_message('debug','call_bokun ' . $method . PHP_EOL . var_export($url, 1));
$output = curl_exec($curl);
if (curl_errno($curl)) {
log_message('error', "curl error code: ".curl_error($curl)."; curl call: ".$path);
} else {
$httpStatusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if (200 !== $httpStatusCode) {
log_message('error', "Request html Status Code: ".$httpStatusCode."; curl call: ".$path);
}
}
curl_close($curl);
return $output;
}
}
/* End of file Bokun_lib.php */

@ -0,0 +1,115 @@
<?php
/**
* 新建infoBokunData表主要是用来保存抓取下来的bokun数据
*
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class InfoBokunData_model extends CI_Model {
public function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
var $ibd_ic_id;
var $ibd_parentId=0;
var $ibd_ItemName;
var $ibd_Itemvalue;
var $ibd_ItemType="";
var $ibd_ItemDescription="";
/**
* @description: 增加一条bokun产品的新附加属性
* @param {type}
* @return:
* @Date Changed:
*/
function Add(){
$sql = "
INSERT INTO [infoBokunData]
([ibd_ic_id]
,[ibd_parentId]
,[ibd_ItemName]
,[ibd_Itemvalue]
,[ibd_ItemType]
,[ibd_ItemDescription])
VALUES
(?,?,?,?,?,?)
";
$query = $this->HT->query($sql,array(
$this->ibd_ic_id,
$this->ibd_parentId,
$this->ibd_ItemName,
(string)$this->ibd_Itemvalue,
$this->ibd_ItemType,
$this->ibd_ItemDescription
));
return $this->HT->query("select max(ibd_id) as ibd_id from infoBokunData")->row("ibd_id") ;
}
/**
* @description: 根据ID更新
* @param {type}
* @return:
* @Date Changed:
*/
function update_byId($ibd_id,$ibd_Itemvalue,$ibd_ItemType,$ibd_ItemDescription){
$sql = "
UPDATE [infoBokunData]
SET [ibd_Itemvalue] = ?
,[ibd_ItemType] = ?
,[ibd_ItemDescription] = ?
WHERE ibd_id=?
";
$query = $this->HT->query($sql,array(
$ibd_Itemvalue,
$ibd_ItemType,
$ibd_ItemDescription,
$ibd_id
));
return $query;
}
/**
* @description: 根据ic_idibd_ItemName 及ibd_ItemType由于图片等可能多个key名称相同所以加个类别
* @param {type}
* @return:
* @Date Changed:
*/
function update(){
}
/**
* @description: 根据ID删除
* @param {type}
* @return:
* @Date Changed:
*/
function delete_byid($ibd_id){
$sql =" delete from infoBokunData where ibd_id =?";
return $this->HT->query($sql,array($ibd_id));
}
/**
* @description: 根据ic_id获取所有的附加属性
* @param {type}
* @return:
* @Date Changed:
*/
function getList($ic_id){
$sql = " select * from infobokundata
where ibd_ic_id = ?
order by case when CHARINDEX('Photo',ibd_itemName)>0 then 999 else 1 end ,ibd_id ";
$query = $this->HT->query($sql,array($ic_id));
return $query->result();
}
}
/* End of file InfoBokunData.php */

@ -35,7 +35,6 @@ class Information_model extends CI_Model {
$this->ic_url_is_id = false; $this->ic_url_is_id = false;
$this->ic_ht_area_type = false; $this->ic_ht_area_type = false;
$this->ic_ht_area_id = false; $this->ic_ht_area_id = false;
$this->ic_type = false;
$this->ic_id = false; $this->ic_id = false;
} }
@ -133,7 +132,7 @@ class Information_model extends CI_Model {
} }
$this->init(); $this->init();
$this->topNum = 1; $this->topNum = 1;
$this->ic_url_is_id = " AND ic.ic_id = " . $this->HT->escape($ic_id); $this->ic_url_is_id = " AND ic.ic_id = " . $this->HT->escape($ic_id);
return $this->GetList(); return $this->GetList();
} }
@ -200,7 +199,7 @@ class Information_model extends CI_Model {
$this->orderBy ? $sql.=$this->orderBy : false; $this->orderBy ? $sql.=$this->orderBy : false;
$query = $this->HT->query($sql, array($site_code ? $site_code : $this->config->item('site_code'))); $query = $this->HT->query($sql, array($site_code ? $site_code : $this->config->item('site_code')));
//print_r($this->HT->queries); //print_r($this->HT->queries);die();
if ($this->topNum === 1) { if ($this->topNum === 1) {
if ($query->num_rows() > 0) { if ($query->num_rows() > 0) {
$row = $query->row(); $row = $query->row();

@ -1,21 +1,24 @@
<?php <?php
class Logs_model extends CI_Model { class Logs_model extends CI_Model
{
var $insert_id = -1; public $insert_id = -1;
var $top_num = false; public $top_num = false;
var $log_res_id = false; public $log_res_id = false;
var $log_id = false; public $log_id = false;
var $log_action = false; public $log_action = false;
var $order_by = false; public $order_by = false;
var $log_datetime = false; public $log_datetime = false;
function __construct() { public function __construct()
{
parent::__construct(); parent::__construct();
$this->HT = $this->load->database('HT', TRUE); $this->HT = $this->load->database('HT', true);
} }
function init() { public function init()
{
$this->top_num = false; $this->top_num = false;
$this->log_res_id = false; $this->log_res_id = false;
$this->log_id = false; $this->log_id = false;
@ -24,8 +27,9 @@ class Logs_model extends CI_Model {
$this->order_by = " ORDER BY il.log_id DESC "; $this->order_by = " ORDER BY il.log_id DESC ";
} }
//获取日志详情 //获取日志详情.
function read($log_id) { public function read($log_id)
{
$this->init(); $this->init();
$this->top_num = 1; $this->top_num = 1;
$this->log_id = " AND il.log_id =" . $this->HT->escape($log_id); $this->log_id = " AND il.log_id =" . $this->HT->escape($log_id);
@ -33,7 +37,8 @@ class Logs_model extends CI_Model {
} }
//获取备份信息内容 //获取备份信息内容
function get_backup_list($is_id) { public function get_backup_list($is_id)
{
$this->init(); $this->init();
$this->top_num = 16; $this->top_num = 16;
$this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id); $this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id);
@ -42,7 +47,8 @@ class Logs_model extends CI_Model {
} }
//获取最近的备份信息内容 //获取最近的备份信息内容
function get_last_backup($is_id) { public function get_last_backup($is_id)
{
$this->init(); $this->init();
$this->top_num = 1; $this->top_num = 1;
$this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id); $this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id);
@ -51,27 +57,30 @@ class Logs_model extends CI_Model {
} }
//获取所有备份信息内容 //获取所有备份信息内容
function get_all_backup_list($is_id,$amp=false) { public function get_all_backup_list($is_id, $amp = false)
{
$this->init(); $this->init();
$this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id); $this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id);
if($amp){ if ($amp) {
$this->log_action = " AND (il.log_action = 'backup_amp')"; $this->log_action = " AND (il.log_action = 'backup_amp')";
}else{ } else {
$this->log_action = " AND (il.log_action = 'backup_info')"; $this->log_action = " AND (il.log_action = 'backup_info')";
} }
return $this->get_list(); return $this->get_list();
} }
//获取最后操作信息 //获取最后操作信息
function get_last_edit($is_id) { public function get_last_edit($is_id)
{
$this->init(); $this->init();
$this->top_num = 1; $this->top_num = 1;
$this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id); $this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id);
return $this->get_list(); return $this->get_list();
} }
public function get_last_log() { public function get_last_log()
{
$this->init(); $this->init();
$this->top_num = 1; $this->top_num = 1;
$this->log_action = " AND il.log_action = 'backup_info'"; $this->log_action = " AND il.log_action = 'backup_info'";
@ -79,17 +88,21 @@ class Logs_model extends CI_Model {
return $this->get_list(); return $this->get_list();
} }
public function get_last_cdn_update_info() { public function get_last_cdn_update_info()
{
$this->init(); $this->init();
$this->top_num = 1; $this->top_num = 1;
$this->log_action = " AND il.log_action = 'update_cdn'"; $this->log_action = " AND il.log_action = 'update_cdn'";
return $this->get_list(); return $this->get_list();
} }
public function get_uncdn_list($last_id = false) { public function get_uncdn_list($last_id = false)
{
$map = ''; $map = '';
if ($last_id) if ($last_id) {
$map = " AND log_id > $last_id"; $map = " AND log_id > $last_id";
}
$sql = " SELECT log_id,is_sitecode,ic_url $sql = " SELECT log_id,is_sitecode,ic_url
FROM infoLogs FROM infoLogs
LEFT JOIN infoStructures ON is_id=log_res_id LEFT JOIN infoStructures ON is_id=log_res_id
@ -103,7 +116,8 @@ class Logs_model extends CI_Model {
return $query->result(); return $query->result();
} }
public function get_list_by_action() { public function get_list_by_action()
{
$this->init(); $this->init();
$this->top_num = 50; $this->top_num = 50;
$this->log_action = " AND il.log_action = 'send_mail'"; $this->log_action = " AND il.log_action = 'send_mail'";
@ -111,29 +125,30 @@ class Logs_model extends CI_Model {
return $this->get_list(); return $this->get_list();
} }
function get_list() { public function get_list()
{
$this->top_num ? $sql = "SELECT TOP " . $this->top_num : $sql = "SELECT "; $this->top_num ? $sql = "SELECT TOP " . $this->top_num : $sql = "SELECT ";
$sql .= " il.log_id, \n" $sql .= " il.log_id, \n"
. " il.log_action, \n" . " il.log_action, \n"
. " il.log_res_id, \n" . " il.log_res_id, \n"
. " il.log_ht_usercode, \n" . " il.log_ht_usercode, \n"
. " il.log_ht_username, \n" . " il.log_ht_username, \n"
. " il.log_content, \n" . " il.log_content, \n"
. " il.log_datetime \n" . " il.log_datetime \n"
. "FROM infoLogs il \n" . "FROM infoLogs il \n"
. "WHERE 1=1 \n"; . "WHERE 1=1 \n";
$this->log_res_id ? $sql.=$this->log_res_id : false; $this->log_res_id ? $sql .= $this->log_res_id : false;
$this->log_id ? $sql.=$this->log_id : false; $this->log_id ? $sql .= $this->log_id : false;
$this->log_action ? $sql.=$this->log_action : false; $this->log_action ? $sql .= $this->log_action : false;
$this->log_datetime ? $sql.=$this->log_datetime : false; $this->log_datetime ? $sql .= $this->log_datetime : false;
$this->order_by ? $sql.=$this->order_by : false; $this->order_by ? $sql .= $this->order_by : false;
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
if ($this->top_num == 1) { if ($this->top_num == 1) {
if ($query->num_rows() > 0) { if ($query->num_rows() > 0) {
$row = $query->row(); $row = $query->row();
return $row; return $row;
} else { } else {
return FALSE; return false;
} }
} else { } else {
return $query->result(); return $query->result();
@ -141,31 +156,36 @@ class Logs_model extends CI_Model {
} }
//备份信息内容 //备份信息内容
function backup_project($p_id, $log_content) { public function backup_project($p_id, $log_content)
{
return $this->write('backup_project', $p_id, $log_content); return $this->write('backup_project', $p_id, $log_content);
} }
//备份信息内容 //备份信息内容
function backup($is_id, $log_content) { public function backup($is_id, $log_content)
{
return $this->write('backup_info', $is_id, $log_content); return $this->write('backup_info', $is_id, $log_content);
} }
//备份信息meta内容,lmr - 2020/03/12 //备份信息meta内容,lmr - 2020/03/12
function backup_meta($is_id, $log_content, $meta_code) { public function backup_meta($is_id, $log_content, $meta_code)
$add_icid_time_flug = 'backup_meta_'.$meta_code.'_'. $is_id.'_'.time(); {
$add_icid_time_flug = 'backup_meta_' . $meta_code . '_' . $is_id . '_' . time();
$this->write($add_icid_time_flug, $is_id, $log_content); $this->write($add_icid_time_flug, $is_id, $log_content);
return $add_icid_time_flug; return $add_icid_time_flug;
} }
//列表信息meta内容,lmr - 2020/03/23 //列表信息meta内容,lmr - 2020/03/23
function list_backup_meta($is_id, $meta_code) { public function list_backup_meta($is_id, $meta_code)
{
$this->init(); $this->init();
$this->top_num = 100; $this->top_num = 100;
$this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id); $this->log_res_id = " AND il.log_res_id =" . $this->HT->escape($is_id);
$this->log_action = " AND il.log_action like 'backup_meta_".$meta_code."_%'"; $this->log_action = " AND il.log_action like 'backup_meta_" . $meta_code . "_%'";
return $this->get_list(); return $this->get_list();
} }
//制定读取信息meta内容,lmr - 2020/03/23 //制定读取信息meta内容,lmr - 2020/03/23
function pick_backup_meta($action) { public function pick_backup_meta($action)
{
$this->init(); $this->init();
$this->top_num = 1; $this->top_num = 1;
$this->log_action = " AND il.log_action =" . $this->HT->escape($action); $this->log_action = " AND il.log_action =" . $this->HT->escape($action);
@ -173,28 +193,33 @@ class Logs_model extends CI_Model {
} }
//备份信息简介 //备份信息简介
function backup_summary($is_id, $log_content) { public function backup_summary($is_id, $log_content)
{
return $this->write('backup_summary', $is_id, $log_content); return $this->write('backup_summary', $is_id, $log_content);
} }
//添加信息 //添加信息
function add($is_id) { public function add($is_id)
{
return $this->write('add_info', $is_id); return $this->write('add_info', $is_id);
} }
//删除信息 //删除信息
function delete($is_id, $log_content) { public function delete($is_id, $log_content)
{
return $this->write('delete_info', $is_id, $log_content); return $this->write('delete_info', $is_id, $log_content);
} }
//移动信息 //移动信息
function move($is_id_array) { public function move($is_id_array)
{
//移动是很多个信息节点变动的在日志内容中记录所有几点id //移动是很多个信息节点变动的在日志内容中记录所有几点id
return $this->write('move_info', 0, $is_id_array); return $this->write('move_info', 0, $is_id_array);
} }
//写入测试,看看数据库写入是否正常 //写入测试,看看数据库写入是否正常
function write_test() { public function write_test()
{
$sql = " $sql = "
INSERT INTO infoLogs INSERT INTO infoLogs
( (
@ -219,35 +244,37 @@ class Logs_model extends CI_Model {
} }
//写入操作日志 //写入操作日志
function write($log_action, $is_id, $log_content = '') { public function write($log_action, $is_id, $log_content = '')
{
$admin_info = $this->session->userdata('session_admin'); $admin_info = $this->session->userdata('session_admin');
$sql = "INSERT INTO infoLogs \n" $sql = "INSERT INTO infoLogs \n"
. " ( \n" . " ( \n"
. " log_action, log_res_id, log_content, log_ht_usercode, log_ht_username, \n" . " log_action, log_res_id, log_content, log_ht_usercode, log_ht_username, \n"
. " log_datetime \n" . " log_datetime \n"
. " ) \n" . " ) \n"
. "VALUES \n" . "VALUES \n"
. " ( \n" . " ( \n"
. " ?, ?, N?, ?, ?, GETDATE() \n" . " ?, ?, N?, ?, ?, GETDATE() \n"
. " )"; . " )";
$query = $this->HT->query($sql, array($log_action, $is_id, $log_content, $admin_info['OPI_Code'], $admin_info['OPI_Name'])); $query = $this->HT->query($sql, array($log_action, $is_id, $log_content, $admin_info['OPI_Code'], $admin_info['OPI_Name']));
$this->insert_id = $this->HT->last_id('infoLogs'); $this->insert_id = $this->HT->last_id('infoLogs');
return $query; return $query;
//print_r($this->HT->queries); //print_r($this->HT->queries);
} }
function update($log_action, $log_res_id) { public function update($log_action, $log_res_id)
{
$sql = "UPDATE infoLogs SET log_res_id=? WHERE log_action=?"; $sql = "UPDATE infoLogs SET log_res_id=? WHERE log_action=?";
$query = $this->HT->query($sql, array($log_res_id, $log_action)); $query = $this->HT->query($sql, array($log_res_id, $log_action));
return $query; return $query;
} }
//查询上一次修改记录
//查询上一次修改记录 public function get_last_edit_amp($ic_id)
function get_last_edit_amp($ic_id){ {
$sql = 'select top 1 log_id from infoLogs where log_res_id = ? order by log_datetime desc'; $sql = 'select top 1 log_id from infoLogs where log_res_id = ? order by log_datetime desc';
$query = $this->HT->query($sql, array($ic_id)); $query = $this->HT->query($sql, array($ic_id));
return $query->row(); return $query->row();
} }
} }

@ -106,7 +106,7 @@ class Index extends CI_Controller
} }
//echo $js_content; //echo $js_content;
//把网页内容和css提交到purifycss处理 //把网页内容和css提交到purifycss处理
$purifycss_server = 'http://184.172.113.216:33033/'; $purifycss_server = 'http://169.54.167.189:33033/';
if (strpos($websitehost, 'chinarundreisen.com') !== false) {//德语站点使用自己的css处理服务器 if (strpos($websitehost, 'chinarundreisen.com') !== false) {//德语站点使用自己的css处理服务器
$purifycss_server = 'http://158.177.67.52:33033/'; $purifycss_server = 'http://158.177.67.52:33033/';
} }

@ -126,7 +126,7 @@ class Index_ah extends CI_Controller
} }
//把网页内容和css提交到purifycss处理 //把网页内容和css提交到purifycss处理
$purifycss_server = 'http://184.172.113.216:33033/'; $purifycss_server = 'http://169.54.167.189:33033/';
$optimize_css = GET_HTTP($purifycss_server, 'html_source=' . urlencode($this->htmlsource) . '&html_css=' . urlencode($css_content), 'POST'); $optimize_css = GET_HTTP($purifycss_server, 'html_source=' . urlencode($this->htmlsource) . '&html_css=' . urlencode($css_content), 'POST');
if (empty($optimize_css)) { if (empty($optimize_css)) {
$this->output->set_status_header(500); $this->output->set_status_header(500);
@ -357,7 +357,7 @@ class Index_ah extends CI_Controller
} }
//把网页内容和css提交到purifycss处理 //把网页内容和css提交到purifycss处理
$purifycss_server = 'http://158.177.67.52:33033/'; $purifycss_server = 'http://169.54.167.189:33033/';
$optimize_css = GET_HTTP($purifycss_server, 'html_source=' . urlencode($content_main) . '&html_css=' . urlencode($css_content), 'POST'); $optimize_css = GET_HTTP($purifycss_server, 'html_source=' . urlencode($content_main) . '&html_css=' . urlencode($css_content), 'POST');
if (empty($optimize_css)) { if (empty($optimize_css)) {
$this->output->set_status_header(500); $this->output->set_status_header(500);

@ -14,7 +14,7 @@ class infos_model extends CI_Model {
} }
function get_emptyamp_pages($sitecode){ function get_emptyamp_pages($sitecode){
$sql = "select ic_url from infoMetas left join infoContents on im_ic_id = ic_id where im_key = 'amp' and ic_sitecode = ? and im_value like '%<!--@CUSTOM-CONENT@-->%'"; $sql = "select ic_url from infoMetas left join infoContents on im_ic_id = ic_id where im_key = 'amp' and ic_sitecode = ? and im_value like '%<!--@CUSTOM-CONENT@-->%' and ic_type = 'none'";
$query = $this->HT->query($sql,array($sitecode)); $query = $this->HT->query($sql,array($sitecode));
return $query->result(); return $query->result();
} }

@ -0,0 +1,489 @@
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class getbokun extends CI_Controller
{
//var $webUrl = "http://localhost:105"; //本地调用地址
var $webUrl = "https://ct.mycht.cn/"; //网前调用地址
public function __construct()
{
parent::__construct();
$this->permission->is_admin();
$this->load->library("Bokun_lib");
$this->load->model("tpBokun_model");
}
public function index()
{
//echo "bokun数据导入页面";
$this->load->view('bootstrap3/header');
$this->load->view('getindex');
$this->load->view('bootstrap3/footer');
}
/*
"activity":{
"readme":"这个json数据用来记录从bokun接口中获取的数据项",
"id": 75363, //产品activity的ID
"published": false, //不确定是否需要用这个来判断发布
"title": "Mini Group: 2-Day Beijing Boutique Tour: Forbidden City, Mutianyu Great Wall, Summer Palace and Temple of Heaven",
"description": "",
"excerpt": "",
"requiredCustomerFields": [
"firstName",
"lastName",
"email",
"phoneNumber",
"nationality",
"passportId"
], //这个主要是判断passportId在预订表单是否需要录入
"keyPhoto": {
"id": 343309,
"originalUrl": "https://bokun.s3.amazonaws.com/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg",
"description": "Temple of Heaven",
"alternateText": "Temple of Heaven",
"height": null,
"width": null,
"flags": [],
"derived": [
{
"name": "large",
"url": "https://bokunprod.imgix.net/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg?w=660&h=660",
"cleanUrl": "https://bokunprod.imgix.net/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg?w=660&h=660"
},
{
"name": "preview",
"url": "https://bokunprod.imgix.net/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg?w=300&h=300",
"cleanUrl": "https://bokunprod.imgix.net/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg?w=300&h=300"
},
{
"name": "thumbnail",
"url": "https://bokunprod.imgix.net/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg?w=80&h=80&fit=crop",
"cleanUrl": "https://bokunprod.imgix.net/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg?w=80&h=80&fit=crop"
}
],
"fileName": "/ddaf9b4b-72b0-4062-9978-7a060bda32d4.jpg"
}, //产品主要图片
"photos": [
{
"id": 343297,
"originalUrl": "https://bokun.s3.amazonaws.com/8b40e352-6410-4e43-a150-21ad918188d3.jpg",
"description": "Bird view of Forbidden City from Jingshan Park",
"alternateText": "Bird view of Forbidden City from Jingshan Park",
"height": null,
"width": null,
"flags": [],
"derived": [
{
"name": "large",
"url": "https://bokunprod.imgix.net/8b40e352-6410-4e43-a150-21ad918188d3.jpg?w=660&h=660",
"cleanUrl": "https://bokunprod.imgix.net/8b40e352-6410-4e43-a150-21ad918188d3.jpg?w=660&h=660"
},
{
"name": "preview",
"url": "https://bokunprod.imgix.net/8b40e352-6410-4e43-a150-21ad918188d3.jpg?w=300&h=300",
"cleanUrl": "https://bokunprod.imgix.net/8b40e352-6410-4e43-a150-21ad918188d3.jpg?w=300&h=300"
},
{
"name": "thumbnail",
"url": "https://bokunprod.imgix.net/8b40e352-6410-4e43-a150-21ad918188d3.jpg?w=80&h=80&fit=crop",
"cleanUrl": "https://bokunprod.imgix.net/8b40e352-6410-4e43-a150-21ad918188d3.jpg?w=80&h=80&fit=crop"
}
],
"fileName": "/8b40e352-6410-4e43-a150-21ad918188d3.jpg"
}
], //产品其它图片
"included": "<ul><li></li></ul> ", //包含
"excluded": "<ul><li></li></ul> ",//不包含
"requirements": "<ul><li></li></ul> ", //需求
"attention": "<ul><li></li></ul> ", //景点条例与上面4个合并到
"country": "China",
"city": "Beijing",
"durationText": "2 days",
"agendaItems": [{
"title": "",
"excerpt": "",
"body": "",
"day": 1,
"keyPhoto":{}
"photos":[{}]
}
], //行程描述,合并后放信息平台的详细内容里面,其中行程图片和整个产品图片一样,放头部
}
}
*/
/**
* @description: 获取bokunapi的所有产品数据按城市,类别,产品一步步的循环录入
* @param string $city 城市名称
* @return:
*/
function getAll_Bokun($city = "")
{
//先进行对应城市的更新
// $this->checkAllCity();
//循环接口开始
$result = $this->bokun_lib->get_all_product_list();
//print_r($result);
$result = json_decode($result);
if (is_array($result) && count($result) > 0) {
//productlist是所有产品按城市分类然后child里面是类别分类
foreach ($result as $pItem) {
$cityName = str_replace("'", "", $pItem->title); //城市名称,用来判断信息平台是否有该城市
if (isset($cityName)) {
if ($city != "" && strtolower($city) != strtolower($cityName)) {
continue; //如果设置了指定抓取城市
} else {
$list_id = $pItem->id;
$pchild_Detail = $this->bokun_lib->get_product_list_detail($list_id);
$data_pchild_Detail = json_decode($pchild_Detail); //类别详细
foreach ($data_pchild_Detail->items as $pcdItem) { //循环类别
$activityData = $pcdItem->activity; //产品详细内容
$this->doActivity($activityData, $cityName);
}
}
}
}
echo ("抓取完成!\r\n");
} else {
echo "无接口数据!";
}
}
/**
* @description: 处理每个产品activity),分析及入库
* @param {type} $ActivityData: 产品的JSON数据
* @param string $CityName:因为activity里面的城市名称和总分类的名称可能不一样比如bagan,详细里面是old bagan。直接传递
* @param bool $OverWrive:是否覆盖已导入的产品
* @return:
* @Date Changed:
*/
function doActivity($ActivityData, $CityName = "", $OverWrive = false)
{
// print_r($ActivityData);
// die();
//解析后获取需要的参数
$activityId = $ActivityData->id; //产品的activityId可以获取对应的产品详细内容。
$PAGCode = "bk_" . $activityId;
//先判断是否是新产品
// $checkNewUrl = $this->webUrl . "/info.php/thirdparty/tpmanage/webgetbokun/checkActivityId/$activityId/";
// $checkNew = json_decode($this->tpBokun_model->getCrulData($checkNewUrl));
// if ($checkNew->return == "yes" && $OverWrive == false) {
// return;
// }
$checkNew = $this->tpBokun_model->checkExitHT($PAGCode);
if ($checkNew) {
return; //直接判断本地翰特,这样快很多
}
//提交网前接口
$checkCode = "cits"; //用来防止参数被破解
$PassParam["activityid"] = $activityId;
$PassParam["PAG_Code"] = $PAGCode;
$PassParam["CityName"] = $CityName;
$PassParam["checkCode"] = $checkCode;
$strPass = base64_encode(json_encode($PassParam));
$AddUrl = $this->webUrl . "/info.php/thirdparty/tpmanage/webgetbokun/addActivity/$strPass/";
$addInfo = json_decode($this->tpBokun_model->getCrulData($AddUrl));
//echo($addInfo);
if ($addInfo->status == "ok") {
//先判断是否是新产品
$checkNew = $this->tpBokun_model->checkExitHT($PAGCode);
if ($checkNew) {
continue;
}
//提交本地翰特保存
if ($CityName == "") {
$CityName = $ActivityData->googlePlace->city; //如果没有传递城市名称参数就获取activity数据中的
}
$PAG_CII_SN = $this->tpBokun_model->getCityIdByName($CityName);
if ($PAG_CII_SN != null) {
$this->tpBokun_model->PAG_CII_SN = $PAG_CII_SN->CII2_CII_SN;
}
$this->tpBokun_model->PAG_Code = $PAGCode;
$this->tpBokun_model->PAG_Title = $ActivityData->title;
$this->tpBokun_model->PAG_PPI_SN = $ActivityData->id;
$this->tpBokun_model->PAG2_Name = $ActivityData->title;
$this->tpBokun_model->PAG2_Title = $ActivityData->description;
$pagsn = $this->tpBokun_model->AddProductToHT();
}
echo ("产品:" . $PAGCode . "," . $pagsn . " 完成.");
}
/**
* @description: 提交到前端接口,执行更新所有城市的操作
* @param {type}
* @return:
* @Date Changed:
*/
function checkAllCity()
{
$url = "/info.php/thirdparty/tpmanage/webgetbokun/checkAllCity/";
$str = $this->tpBokun_model->getCrulData($url);
echo $str;
}
/**
* @description: 只更新翰特的产品信息
* @param {type}
* @return:
* @Date Changed:
*/
function onlyUpdateHT($city = "")
{
//循环接口开始
$result = $this->bokun_lib->get_all_product_list();
//print_r($result);
$result = json_decode($result);
if (is_array($result) && count($result) > 0) {
//productlist是所有产品按城市分类然后child里面是类别分类
foreach ($result as $pItem) {
$cityName = str_replace("'", "", $pItem->title); //城市名称,用来判断信息平台是否有该城市
if (isset($cityName)) {
if ($city != "" && strtolower($city) != strtolower($cityName)) {
continue; //如果设置了指定抓取城市
} else {
$list_id = $pItem->id;
$pchild_Detail = $this->bokun_lib->get_product_list_detail($list_id);
$data_pchild_Detail = json_decode($pchild_Detail); //类别详细
foreach ($data_pchild_Detail->items as $pcdItem) { //循环类别
$activityData = $pcdItem->activity; //产品详细内容
//提交本地翰特保存
if ($cityName == "") {
$cityName = $activityData->googlePlace->city; //如果没有传递城市名称参数就获取activity数据中的
}
$PAG_CII_SN = $this->tpBokun_model->getCityIdByName($cityName);
if ($PAG_CII_SN != null) {
$this->tpBokun_model->PAG_CII_SN = $PAG_CII_SN->CII2_CII_SN;
}
//解析后获取需要的参数
$activityId = $activityData->id; //产品的activityId可以获取对应的产品详细内容。
$PAGCode = "bk_" . $activityId;
//先判断是否是新产品
$checkNew = $this->tpBokun_model->checkExitHT($PAGCode);
if ($checkNew) {
//判断是否有价格,没有就导入
$pag_row = $this->tpBokun_model->getToursDetails($PAGCode);
if ($pag_row != null) {
$PAG_SN = $pag_row->PAG_SN;
if ($PAG_SN > 0) {
//有产品ID才能获取对应的价格
if ($this->tpBokun_model->checkPrice($PAG_SN) == false) {
//没价格开始导入
$this->doPrice($PAG_SN,$activityId);
}
}
}
//跳过不再保存主数据
continue;
}
$this->tpBokun_model->PAG_Code = $PAGCode;
$this->tpBokun_model->PAG_Title = $activityData->title;
$this->tpBokun_model->PAG_PPI_SN = $activityData->id;
$this->tpBokun_model->PAG2_Name = $activityData->title;
$this->tpBokun_model->PAG2_Title = $activityData->description;
$pagsn = $this->tpBokun_model->AddProductToHT();
echo ("添加:" . $PAGCode . "," . $pagsn . "\r\n");
//价格开始导入
$this->doPrice($pagsn,$activityId);
}
}
}
}
echo ("抓取完成 \r\n");
} else {
echo "无接口数据!";
}
}
/**
* @description: 导入价格列表
* @param {type}
* @return:
* @Date Changed:
*/
function doPrice($PAG_SN, $activityId)
{
if ($PAG_SN > 0) {
//价格接口数据
$result = $this->bokun_lib->get_activity_price($activityId);
$result = json_decode($result);
if (is_array($result->pricesByDateRange)) {
foreach ($result->pricesByDateRange as $PriceItem) {
//每个时间段的价格循环
//开始时间
if (isset($PriceItem->from)) {
$starDate = $PriceItem->from;
} else {
$starDate = date('Y-m-d');
}
//结束时间
if (isset($PriceItem->to)) {
$endDate = $PriceItem->to;
} else {
$endDate = date('Y-m-d', strtotime('+1 year',strtotime($starDate)));
}
if (isset($PriceItem->rates) && is_array($PriceItem->rates)) {
foreach ($PriceItem->rates as $PriceItem_rates) {
//rates层
if (isset($PriceItem_rates->passengers) && is_array($PriceItem_rates->passengers)) {
$arrAdultPrice = array(); //存放成人价格列表
$arrOhterPrice = array(); //存放儿童和婴儿价格列表
foreach ($PriceItem_rates->passengers as $PriceItem_rates_passengers) {
$AdultPriceClass = new stdClass;
$OtherPriceClass = new stdClass;
$ticketCategory = $PriceItem_rates_passengers->ticketCategory; //判断是大人,小孩
if ($ticketCategory == "ADULT" || $ticketCategory == "CHILD" || $ticketCategory == "INFANT") {
$priceType = $ticketCategory;
} else {
$priceType = "ADULT";
}
//passengers层
if (isset($PriceItem_rates_passengers->tieredPrices) && is_array($PriceItem_rates_passengers->tieredPrices)) {
//这个是有多个人等价格
foreach ($PriceItem_rates_passengers->tieredPrices as $tieredPricesItem) {
$AdultPriceClass = new stdClass;
$OtherPriceClass = new stdClass;
$minPassengersRequired = $tieredPricesItem->minPassengersRequired;
if (isset($tieredPricesItem->maxPassengersRequired)){
$maxPassengersRequired = $tieredPricesItem->maxPassengersRequired;
}else{
$maxPassengersRequired = $minPassengersRequired;
}
if (isset($tieredPricesItem->amount)){
$amount = $tieredPricesItem->amount;
}else{
$amount = 0;
}
if ($priceType == "ADULT") {
$AdultPriceClass->PersonStart = $maxPassengersRequired;
$AdultPriceClass->PersonStop = $maxPassengersRequired;
$AdultPriceClass->type = "ADULT";
$AdultPriceClass->price = $amount;
$arrAdultPrice[] = $AdultPriceClass;
} elseif ($priceType == "CHILD") {
$OtherPriceClass->PersonStart = $maxPassengersRequired;
$OtherPriceClass->PersonStop = $maxPassengersRequired;
$OtherPriceClass->type = "CHILD";
$OtherPriceClass->price = $amount;
$arrOhterPrice[] = $OtherPriceClass;
} elseif ($priceType == "INFANT") {
$OtherPriceClass->PersonStart = $maxPassengersRequired;
$OtherPriceClass->PersonStop = $maxPassengersRequired;
$OtherPriceClass->type = "INFANT";
$OtherPriceClass->price = $amount;
$arrOhterPrice[] = $OtherPriceClass;
}
}
} elseif (isset($PriceItem_rates_passengers->price)) {
//这个是无人等价格
if ($priceType == "ADULT") {
$AdultPriceClass->PersonStart = 1;
$AdultPriceClass->PersonStop = 100;
$AdultPriceClass->type = "ADULT";
$AdultPriceClass->price = $PriceItem_rates_passengers->price->amount;
$arrAdultPrice[] = $AdultPriceClass;
} elseif ($priceType == "CHILD") {
$OtherPriceClass->PersonStart = 1;
$OtherPriceClass->PersonStop = 100;
$OtherPriceClass->type = "CHILD";
$OtherPriceClass->price = $PriceItem_rates_passengers->price->amount;
$arrOhterPrice[] = $OtherPriceClass;
} elseif ($priceType == "INFANT") {
$OtherPriceClass->PersonStart = 1;
$OtherPriceClass->PersonStop = 100;
$OtherPriceClass->type = "INFANT";
$OtherPriceClass->price = $PriceItem_rates_passengers->price->amount;
$arrOhterPrice[] = $OtherPriceClass;
}
}
}
//分析生存的数组$arrAdultPrice与$arrOhterPrice ,构建可以入库的数据
$arrPackagePrice = array();
foreach ($arrAdultPrice as $aAPItem) {
$PackagePriceClass = new stdClass;
$PersonStart = $aAPItem->PersonStart;
$PersonStop = $aAPItem->PersonStop;
$AdultPrice = $aAPItem->price;
$ChildPrice = $AdultPrice;
$InfantPrice = 0;
foreach ($arrOhterPrice as $aOPItem) {
//循环查找对应的儿童及婴儿价
if ($aOPItem->PersonStart == $PersonStart && $aOPItem->PersonStop == $PersonStop) {
//人数限制范围相同时
if ($aOPItem->type == "CHILD") {
$ChildPrice = $aOPItem->price;
} elseif ($aOPItem->type == "INFANT") {
$InfantPrice = $aOPItem->price;
}
} elseif ($aOPItem->PersonStart == $PersonStart) {
//有时候限制范围不一样,只能去开始的人数来判断
if ($aOPItem->type == "CHILD") {
$ChildPrice = $aOPItem->price;
} elseif ($aOPItem->type == "INFANT") {
$InfantPrice = $aOPItem->price;
}
}
}
//组建人数限制成人价儿童价婴儿价的class
$PackagePriceClass->PKP_PersonStart = $PersonStart;
$PackagePriceClass->PKP_PersonStop = $PersonStop;
$PackagePriceClass->PKP_AdultPrice = $AdultPrice;
$PackagePriceClass->PKP_ChildPrice = $ChildPrice;
$PackagePriceClass->PKP_InfantPrice = $InfantPrice;
$arrPackagePrice[] = $PackagePriceClass;
}
//数据入库
if (count($arrPackagePrice) > 0) {
foreach ($arrPackagePrice as $aPPItem) {
//循环入库
$this->tpBokun_model->PKP_PAG_SN = $PAG_SN;
$this->tpBokun_model->PKP_AdultPrice = $aPPItem->PKP_AdultPrice;
$this->tpBokun_model->PKP_ChildPrice = $aPPItem->PKP_ChildPrice;
$this->tpBokun_model->PKP_InfantPrice = $aPPItem->PKP_InfantPrice;
$this->tpBokun_model->PKP_AdultNetPrice = $aPPItem->PKP_AdultPrice;
$this->tpBokun_model->PKP_ChildNetPrice = $aPPItem->PKP_ChildPrice;
$this->tpBokun_model->PKP_InfantNetPrice = $aPPItem->PKP_InfantPrice;
$this->tpBokun_model->PKP_PersonStart = $aPPItem->PKP_PersonStart;
$this->tpBokun_model->PKP_PersonStop = $aPPItem->PKP_PersonStop;
$this->tpBokun_model->PKP_ValidDate = $starDate;
$this->tpBokun_model->PKP_InvalidDate = $endDate;
$this->tpBokun_model->AddPriceToHT();
echo "添加价格:".$PAG_SN."(".$aPPItem->PKP_PersonStart." - ".$aPPItem->PKP_PersonStop.")". "\r\n";
}
}
}
}
}
}
}
}
}
}
/* End of file getbokun.php */

@ -0,0 +1,760 @@
<?php
/**
* 网前用的抓取程序,主要是单独处理抓取的单个产品
*/
defined('BASEPATH') or exit('No direct script access allowed');
class webgetbokun extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library("Bokun_lib");
$this->load->model("tpBokun_model");
$this->load->helper("text");
$this->load->model("InfoBokunData_model");
}
public function index()
{
}
/**
* @description: 检查是否是新的bokun产品根据infobokundata表的activityid记录
* @param {type}
* @return:
* @Date Changed:
*/
function checkActivityId($activityid)
{
$result = $this->tpBokun_model->checkActivityId($activityid);
// print_r($result);
echo $result;
return $result;
}
/**
* @description: 前端根据activityid抓取具体的产品信息并根据传递过来pag_code保存数据到信息平台
* @param string $PassParam 传递过来的参数base64
* @return:
* @Date Changed:
*/
function addActivity($PassParam)
{
$ParamData = json_decode(base64_decode($PassParam));
//print_r($ParamData);
$activityid = $ParamData->activityid;
$PAG_Code = $ParamData->PAG_Code;
$CityName = $ParamData->CityName;
$checkCode = $ParamData->checkCode;
if ($checkCode != "cits") {
return "Error"; //传递的验证code错误
} else {
//1.根据城市名称获取对应的is_id作为 父类ID
$is_id = $this->get_isid_byCity($CityName);
if ($is_id == 0) {
return;
}
//2.根据$activityid 抓取接口数据
$activityDeatil = json_decode($this->bokun_lib->get_activity_detail($activityid));
$title = $activityDeatil->title;
$title_url = str_replace("'", "", strtolower($title));
$title_url = str_replace(":", "", $title_url);
$title_url = str_replace("(", " ", $title_url);
$title_url = str_replace(")", " ", $title_url);
$title_url = str_replace("/", " ", $title_url);
$title_url = str_replace("\\", " ", $title_url);
$title_url = str_replace(" ", " ", $title_url);
$title_url = str_replace(' ', '-', $title_url);
$CityName_url = str_replace("'", "", str_replace(' ', '-', strtolower($CityName)));
//3.根据抓取数据进行信息表infocontent和infostructures表的添加
$this->tpBokun_model->ic_title = $title;
$this->tpBokun_model->ic_url_title = $title;
$guideUrl = "/$CityName_url-tours/$title_url/";
$this->tpBokun_model->ic_url = $guideUrl;
//抓取数据组合成详细内容。
$arrContent = $activityDeatil->agendaItems;
$strContent = "";
foreach ($arrContent as $ContentItem) {
$strTemp = "";
$strDay = "";
if ($ContentItem->day != 1) {
$strDay = "(day " . $ContentItem->day . ")";
}
if ($ContentItem->title != "") {
$strTemp .= "<h3><i class=\"fa fa-circle\" aria-hidden=\"true\"></i>" . $ContentItem->title . $strDay . "</h3>";
}
if ($ContentItem->body != "") {
$strTemp .= $ContentItem->body;
}
// if ($ContentItem->excerpt != "") {
// $strTemp .= "<p>" . $ContentItem->excerpt . "</p>";
// }
if ($strTemp != "") {
$strContent .= "<div class=\"details-list\">" . $strTemp . "</div>";
}
}
//简介
$temp_summary = $activityDeatil->description;
// if ($activityDeatil->excerpt != "") {
// $temp_summary .= "<p>" . $activityDeatil->excerpt . "</p>";
// }
//详细内容使用新的模板把简介及所有行程及对应FAQ信息全部集合
$tourstype='<div class="tours-type">
<ul>
<li><i class="fa fa-history" aria-hidden="true"></i>'.$activityDeatil->durationText.'</li>
<li><i class="fa fa-calendar" aria-hidden="true"></i>Every day</li>
<li><i class="fa fa-tags" aria-hidden="true"></i>City tour</li>
</ul>
<div class="clearfix"></div>
</div>';
//overview
$Description ='<div class="details-box active">
<h2>Description<i class="fa fa-angle-down" aria-hidden="true"></i></h2>
<div class="details-content">
<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>Overview</h3>'.$temp_summary.'
</div>
</div>
</div>';
//行程
$Itinerary ='<div class="details-box ">
<h2>Itinerary<i class="fa fa-angle-down" aria-hidden="true"></i></h2>
<div class="details-content">'.$strContent.'</div></div>';
//FAQ
$tempFaq = $strFaq = $strIncluded = $strExcluded = '';
if (isset($activityDeatil->included)){
if ($activityDeatil->included!="" && $activityDeatil->included!=null){
$strFaq = '<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>What\'s included?</h3>'.$activityDeatil->included.'</div>';
$strIncluded.=$strFaq;
}
}
if (isset($activityDeatil->excluded)){
if ($activityDeatil->excluded!="" && $activityDeatil->excluded!=null){
$strFaq = '<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>What\'s excluded</h3>'.$activityDeatil->excluded.'</div>';
$strExcluded.=$strFaq;
}
}
$tempFaq = '<div class="row"><div class="col-xs-24 col-sm-12">'.$strIncluded.'</div><div class="col-xs-24 col-sm-12">'.$strExcluded.'</div><div class="clearfix"></div></div>';
if (isset($activityDeatil->requirements)){
if ($activityDeatil->requirements!="" && $activityDeatil->requirements!=null){
$strFaq = '<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>What do I need to bring?</h3>'.$activityDeatil->requirements.'</div>';
$tempFaq.=$strFaq;
}
}
if (isset($activityDeatil->attention)){
if ($activityDeatil->attention!="" && $activityDeatil->attention!=null){
$strFaq = '<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>What need to note</h3>'.$activityDeatil->attention.'</div>';
$tempFaq.=$strFaq;
}
}
if (isset($activityDeatil->noPickupMsg)){
if ($activityDeatil->noPickupMsg!="" && $activityDeatil->noPickupMsg!=null){
$strFaq = '<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>What if my hotel is outside the pickup area</h3>'.$activityDeatil->noPickupMsg.'</div>';
$tempFaq.=$strFaq;
}
}
// if (isset($activityDeatil->ticketMsg)){
// if ($activityDeatil->ticketMsg!="" && $activityDeatil->ticketMsg!=null){
// $strFaq = '<div class="details-list">
// <h3><i class="fa fa-circle" aria-hidden="true"></i>ticketMsg</h3>'.$activityDeatil->ticketMsg.'</div>';
// $tempFaq.=$strFaq;
// }
// }
//退款信息
if (isset($activityDeatil->cancellationPolicy)){
if (isset($activityDeatil->cancellationPolicy->penaltyRules) && is_array($activityDeatil->cancellationPolicy->penaltyRules)){
$cancelPolicy = "";
foreach ($activityDeatil->cancellationPolicy->penaltyRules as $Item_cancel) {
if ($Item_cancel->chargeType == "PERCENTAGE"){
$cancelPolicy .= "<li>We will charge a cancellation fee of ".$Item_cancel->charge."% if booking is cancelled ".$Item_cancel->cutoffHours." hours or less before event</li>";
}
}
if ($cancelPolicy!=""){
$cancelPolicy = "<ul>".$cancelPolicy."</ul>";
}
$strFaq = '<div class="details-list">
<h3><i class="fa fa-circle" aria-hidden="true"></i>Cancellation policy</h3>'.$cancelPolicy.'</div>';
$tempFaq.=$strFaq;
}
}
$FAQ = '<div class="details-box">
<h2>Know before you book<i class="fa fa-angle-down" aria-hidden="true"></i></h2>
<div class="details-content">'.$tempFaq.'</div></div>';
$allContent = $tourstype.$Description.$Itinerary.$FAQ;
$this->tpBokun_model->ic_content = $allContent;
$this->tpBokun_model->ic_summary = $temp_summary;
//seo
$this->tpBokun_model->ic_seo_title = character_limiter($title, 100);
$this->tpBokun_model->ic_seo_description = $title; //iconv("GBK","UTF-8",character_limiter(strip_tags($activityDeatil->description), 200));
$tempKeywords = $activityDeatil->keywords;
if (is_array($tempKeywords) && count($tempKeywords) > 0) {
$this->tpBokun_model->ic_seo_keywords = implode(",", $tempKeywords);
}
$this->tpBokun_model->ic_status = 1;
$tempData = json_decode($this->tpBokun_model->addInfo($is_id));
if (is_array($tempData)) {
$ic_id = $tempData[0]->value->ic_id;
} else {
$result["status"] = "error";
echo json_encode($result);
}
//4.附加属性添加infometa表及新建的infoBokunData表
if ($ic_id > 0) {
//先旧的infometa表
$tempRequireFileds = $activityDeatil->requiredCustomerFields; //根据抓取的需求字段判断是否需要passport
if (is_array($tempRequireFileds)) {
if (in_array("passportId", $tempRequireFileds)) {
$this->tpBokun_model->addMeta($ic_id, "meta_trippest_type", "gg");
}
}
$this->tpBokun_model->addMeta($ic_id, "meta_product_code", $PAG_Code); //对应翰特编码
if (isset($activityDeatil->googlePlace->city)){
$this->tpBokun_model->addMeta($ic_id, "meta_facts_city", $activityDeatil->googlePlace->city); //保存一下具体城市
}
//然后保存新建的infobokunData表
$this->InfoBokunData_model->ibd_ic_id = $ic_id; //统一的
$this->InfoBokunData_model->ibd_ItemName = "ActivityID";
$this->InfoBokunData_model->ibd_Itemvalue = $activityid;
$ibd_id = $this->InfoBokunData_model->Add();
if ($this->InfoBokunData_model->ibd_ItemName == "ActivityID") {
$this->InfoBokunData_model->ibd_parentId = 0;
} else {
$this->InfoBokunData_model->ibd_parentId = $ibd_id; //设置剩余的属性都是这个activityid的子类避免每条记录都保存activityid
}
if (isset($activityDeatil->keyPhoto)) {
$this->InfoBokunData_model->ibd_ItemName = "keyPhoto"; //主要图片
$this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->keyPhoto->originalUrl;
$this->InfoBokunData_model->ibd_ItemType = "originalUrl";
$this->InfoBokunData_model->Add();
$arrKeyPhoto = $activityDeatil->keyPhoto->derived; //主要图片派生图,大中小类型
if (is_array($arrKeyPhoto)) {
foreach ($arrKeyPhoto as $kPhotoItem) {
$this->InfoBokunData_model->ibd_Itemvalue = $kPhotoItem->url;
$this->InfoBokunData_model->ibd_ItemType = $kPhotoItem->name;
$this->InfoBokunData_model->Add();
}
}
}
$arrProductPhoto = $activityDeatil->photos; //产品主要图片
if (is_array($arrProductPhoto)) {
foreach ($arrProductPhoto as $pPhotoItem) {
$this->InfoBokunData_model->ibd_ItemName = "ProductPhoto";
$this->InfoBokunData_model->ibd_Itemvalue = $pPhotoItem->originalUrl;
$this->InfoBokunData_model->ibd_ItemType = "originalUrl";
$this->InfoBokunData_model->Add();
$arrProductPhotoDerived = $pPhotoItem->derived; //产品主要图片的派生图,大中小类型
if (is_array($arrProductPhotoDerived)) {
foreach ($arrProductPhotoDerived as $pPhotoDerivedItem) {
$this->InfoBokunData_model->ibd_Itemvalue = $pPhotoDerivedItem->url;
$this->InfoBokunData_model->ibd_ItemType = $pPhotoDerivedItem->name;
$this->InfoBokunData_model->Add();
}
}
}
}
//一些FAQ类的属性如includedrequirements,这些内容已经合并到详细内容里面
// $this->InfoBokunData_model->ibd_ItemName = "included"; //
// $this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->included;
// $this->InfoBokunData_model->ibd_ItemType = "";
// $this->InfoBokunData_model->Add();
// $this->InfoBokunData_model->ibd_ItemName = "excluded"; //
// $this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->excluded;
// $this->InfoBokunData_model->ibd_ItemType = "";
// $this->InfoBokunData_model->Add();
// $this->InfoBokunData_model->ibd_ItemName = "requirements"; //
// $this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->requirements;
// $this->InfoBokunData_model->ibd_ItemType = "";
// $this->InfoBokunData_model->Add();
// $this->InfoBokunData_model->ibd_ItemName = "attention"; //
// $this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->attention;
// $this->InfoBokunData_model->ibd_ItemType = "";
// $this->InfoBokunData_model->Add();
// if ($activityDeatil->noPickupMsg != null && $activityDeatil->noPickupMsg != "") {
// $this->InfoBokunData_model->ibd_ItemName = "noPickupMsg"; //
// $this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->noPickupMsg;
// $this->InfoBokunData_model->ibd_ItemType = "";
// $this->InfoBokunData_model->Add();
// }
// if ($activityDeatil->ticketMsg != null && $activityDeatil->ticketMsg != "") {
// $this->InfoBokunData_model->ibd_ItemName = "ticketMsg"; //
// $this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->ticketMsg;
// $this->InfoBokunData_model->ibd_ItemType = "";
// $this->InfoBokunData_model->Add();
// }
//成人,儿童,婴儿信息
$pricingCategories = $activityDeatil->pricingCategories;
if (is_array($pricingCategories)){
foreach ($pricingCategories as $priceCg){
$ItemName_priceCg = "";
$ticketCategory = $priceCg->ticketCategory;
if ( strtoupper($ticketCategory)=="ADULT"){
$ItemName_priceCg = "AdultMsg";
}elseif (strtoupper($ticketCategory)=="CHILD") {
$ItemName_priceCg = "ChildMsg";
}elseif (strtoupper($ticketCategory)=="INFANT") {
$ItemName_priceCg = "InfantMsg";
}else{
$ItemName_priceCg = "Other_Msg";
}
$ItemValue_priceCg = "age ".$priceCg->minAge.'-'.$priceCg->maxAge;
$this->InfoBokunData_model->ibd_ItemName = $ItemName_priceCg; //
$this->InfoBokunData_model->ibd_Itemvalue = $ItemValue_priceCg;
$this->InfoBokunData_model->ibd_ItemType = "";
$this->InfoBokunData_model->Add();
}
}
if (isset($activityDeatil->googlePlace)){
if (isset($activityDeatil->googlePlace->country)){
$this->InfoBokunData_model->ibd_ItemName = "country"; //
$this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->googlePlace->country;
$this->InfoBokunData_model->ibd_ItemType = "";
$this->InfoBokunData_model->Add();
}
if (isset($activityDeatil->googlePlace->city)){
$this->InfoBokunData_model->ibd_ItemName = "city"; //
$this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->googlePlace->city;
$this->InfoBokunData_model->ibd_ItemType = "";
$this->InfoBokunData_model->Add();
}
}
$this->InfoBokunData_model->ibd_ItemName = "durationText"; //
$this->InfoBokunData_model->ibd_Itemvalue = $activityDeatil->durationText;
$this->InfoBokunData_model->ibd_ItemType = "";
$this->InfoBokunData_model->Add();
$arrAgendaItems = $activityDeatil->agendaItems; //保存产品行程里面的派生图片
if (is_array($arrAgendaItems)) {
foreach ($arrAgendaItems as $agendaItem) {
if (isset($agendaItem->keyPhoto)) {
if ($agendaItem->keyPhoto != null && $agendaItem->keyPhoto != "") {
$this->InfoBokunData_model->ibd_ItemName = "AgendaPhoto";
$this->InfoBokunData_model->ibd_Itemvalue = $agendaItem->keyPhoto->originalUrl;
if (isset($agendaItem->keyPhoto->description)) {
$this->InfoBokunData_model->ibd_ItemDescription = $agendaItem->keyPhoto->description;
}
$this->InfoBokunData_model->ibd_ItemType = "originalUrl";
$this->InfoBokunData_model->Add();
}
}
$arrAgendaItemPhotos = $agendaItem->photos;
if (is_array($arrAgendaItemPhotos)) {
foreach ($arrAgendaItemPhotos as $agendaPhotoItem) {
$this->InfoBokunData_model->ibd_ItemName = "AgendaPhoto";
$this->InfoBokunData_model->ibd_Itemvalue = $agendaPhotoItem->originalUrl;
$this->InfoBokunData_model->ibd_ItemType = "originalUrl";
if (isset($agendaPhotoItem->description)) {
$this->InfoBokunData_model->ibd_ItemDescription = $agendaPhotoItem->description;
}
$this->InfoBokunData_model->Add();
}
}
}
}
} else {
$result["status"] = "error";
echo json_encode($result);
}
//5. 返回成功信息
$result["status"] = "ok";
$result["ic_id"] = $ic_id;
echo json_encode($result);
}
}
/**
* @description: 根据城市名称获取对应的is_id判断产品放到信息平台的位置
* @param {type}
* @return: int is_id :城市所在信息平台的Id
* @Date Changed:
*/
function get_isid_byCity($CityName)
{
$cityUrl = "/" . str_replace("'", "", str_replace(' ', '-', strtolower($CityName))) . "-" . "tours/";
$row = $this->tpBokun_model->getInfomationAll($cityUrl);
if (isset($row)) {
$result = $row->is_id;
} else {
$result = 0; //$this->tpBokun_model->is_topId;
}
return $result;
}
/**
* @description: 为了方便,首先循环添加所有的城市目录
* @param {type}
* @return:
* @Date Changed:
*/
function checkAllCity()
{
$str_return = "";
$result = $this->bokun_lib->get_all_product_list();
//print_r($result);
$result = json_decode($result);
if (is_array($result) && count($result) > 0) {
//productlist是所有产品按城市分类然后child里面是类别分类
foreach ($result as $pItem) {
$cityName = $pItem->title; //城市名称,用来判断信息平台是否有该城市
if (isset($cityName)) {
$infoCity = json_decode($this->doInfoCity($cityName)); //获取导入的城市名称为父类,下面的产品在信息平台里面放在这个的下面
if ($infoCity->type == "new") {
$str_return .= $infoCity->cityname . ",";
}
}
}
}
if ($str_return != "") {
echo "新城市添加:" . $str_return . "\r\n";
} else {
echo "没有新的城市" . "\r\n";
}
}
/**
* @description: 判断信息平台是否有该城市的记录,没有则添加。/beijing-tours/
* @param {type}
* @return: 返回info的is_id ,作为父类ID
* @Date Changed:
*/
function doInfoCity($CityName)
{
$cityUrl = "/" . str_replace("'", "", str_replace(' ', '-', strtolower($CityName))) . "-" . "tours/";
$infoDetail = $this->tpBokun_model->getInfomationAll($cityUrl);
if (isset($infoDetail)) {
//如果存在
$result["Id"] = $infoDetail->is_id;
$result["cityname"] = $infoDetail->ic_title;
$result["type"] = "old";
} else {
//如果不存在就录入
$this->tpBokun_model->ic_title = ucwords($CityName) . " Tours";
$this->tpBokun_model->ic_url_title = ucwords($CityName) . " Tours";
$this->tpBokun_model->ic_url = $cityUrl;
$tempData = json_decode($this->tpBokun_model->addInfo($this->tpBokun_model->is_topId));
if (is_array($tempData)) {
$result["Id"] = $tempData[0]->value->is_id;
$result["cityname"] = $CityName;
$result["type"] = "new";
} else {
$result["Id"] = 0;
$result["cityname"] = "";
$result["type"] = "error";
}
}
return json_encode($result);
}
/**
* @description: 网前只抓取信息平台的信息。由于产品的翰特编码都是yong bk_activityid的规则组成所以分开更新是可能的。这样可以保证不需要理会本地和网前的处理速度
* @param sring $city : 城市名称 。用来单独更新某个城市
* @return:
* @Date Changed:
*/
function onlyUpdateInfo($city = "")
{
//先进行对应城市的更新
$this->checkAllCity();
//循环接口开始
$result = $this->bokun_lib->get_all_product_list();
//print_r($result);
$result = json_decode($result);
if (is_array($result) && count($result) > 0) {
//productlist是所有产品按城市分类然后child里面是类别分类
foreach ($result as $pItem) {
$cityName = str_replace("'", "", $pItem->title); //城市名称,用来判断信息平台是否有该城市
if (isset($cityName)) {
if ($city != "" && strtolower($city) != strtolower($cityName)) {
continue; //如果设置了指定抓取城市
} else {
$list_id = $pItem->id;
$pchild_Detail = $this->bokun_lib->get_product_list_detail($list_id);
$data_pchild_Detail = json_decode($pchild_Detail); //类别详细
foreach ($data_pchild_Detail->items as $pcdItem) { //循环类别
$activityData = $pcdItem->activity; //产品详细内容
//解析后获取需要的参数
$activityId = $activityData->id; //产品的activityId可以获取对应的产品详细内容。
//先判断是否是新产品
$checkNew = json_decode($this->tpBokun_model->checkActivityId($activityId));
if ($checkNew->return == "yes") {
continue;
}
//提交网前接口
$PAGCode = "bk_" . $activityId;
$checkCode = "cits"; //用来防止参数被破解
$PassParam["activityid"] = $activityId;
$PassParam["PAG_Code"] = $PAGCode;
$PassParam["CityName"] = $cityName;
$PassParam["checkCode"] = $checkCode;
$strPass = base64_encode(json_encode($PassParam));
$this->addActivity($strPass);
echo "\r\n";
}
}
}
}
echo ("抓取完成!\r\n");
} else {
echo "无接口数据!\r\n";
}
}
/** 读取旧网站的XML信息存入信息平台 */
/**
* @description:读取XML信息存入信息平台
* @param {type} $category:如果设置了类别,那么只保存该类别的信息。
* @return:
* @Date Changed:
*/
function getOldXML($category=""){
// $xmlParent = "278001169" ; //父类ID 本地
$xmlParent = "278013201" ; //父类 网前
//读取XML类型
$appPath = $_SERVER['DOCUMENT_ROOT'];
$XmlPath = $appPath."/application/third_party/tpmanage/post0702.xml";
$xml = simplexml_load_file($XmlPath);
// print_r($xml);
$Items = $xml->channel->item;
$i=0;
//循环保存
foreach ($Items as $xmlItem) {
// if ($i==0){
// $content = $xmlItem->children("content",true);
// $content2 = (string)($content->encoded);
// print_r($content2);
// return;
// }
$title = $xmlItem->title;
$link = str_replace("https://www.trippest.com","",$xmlItem->link);
$content = (string)$xmlItem->children("content",true)->encoded;
$content = str_replace("https://www.trippest.com/wp-content/uploads/","/images/uploads/",$content); //替换图片显示地址
//入信息平台
$title = str_replace("—","-",$title);
$this->tpBokun_model->ic_title = $title;
$this->tpBokun_model->ic_url_title = $title;
$this->tpBokun_model->ic_seo_title = $title;
$this->tpBokun_model->ic_url = $link;
$this->tpBokun_model->ic_content = $content;
$tempData = json_decode($this->tpBokun_model->addInfo($xmlParent));
$i=$i+1;
// print $i.":".$content ."\r\n";
}
echo "导入完成" ;
//保存
}
/** 这里是在cht的信息平台运行的接口 */
/**
* @description: CH那边的产品生成接口数据
* @param {type}
* @return:
* @Date Changed:
*/
function getChtTours($strcity = "")
{
if ($strcity == "") {
$strcity = "beijing,guilin,chengdu,shanghai,xian,zhangjiajie,huangshan,yunnan";
}
$result = array();
//城市解析
$arrCity = explode(",", $strcity);
$strParam = "";
foreach ($arrCity as $city) {
$strParam .= "'/day-tours/" . strtolower(str_replace(" ", "-", $city)) . "/',";
}
$strParam = trim($strParam, ",");
//$strParam = "'/beijing/','/shanghai/'"; //本地测试
//传递
$list = $this->tpBokun_model->getChtTours($strParam);
if ($list) {
foreach ($list as $Item) {
$data["city"] = $Item->city;
$data["ic_id"] = $Item->ic_id;
$data["ic_url"] = $Item->ic_url;
$data["ic_title"] = $Item->ic_title;
$data["ic_url_title"] = $Item->ic_url_title;
$data["ic_content"] = $Item->ic_content;
$data["ic_summary"] = $Item->ic_summary;
$data["ic_seo_title"] = $Item->ic_seo_title;
$data["ic_seo_description"] = $Item->ic_seo_description;
$data["ic_seo_keywords"] = $Item->ic_seo_keywords;
$data["ic_photo"] = $Item->ic_photo;
//meta属性
$listmeta = $this->tpBokun_model->getChtToursMeta($Item->ic_id);
if ($listmeta) {
$arrmeta = array();
foreach ($listmeta as $meta) {
$MetaData["im_key"] = $meta->im_key;
$MetaData["im_value"] = $meta->im_value;
$arrmeta[] = $MetaData;
}
if ($arrmeta) {
$data["meta"] = $arrmeta;
}
}
$result[] = $data;
}
}
if ($result) {
echo json_encode($result);
} else {
echo json_encode(array("status" => "none", "param" => $strParam));
}
}
function CurlCHTTours($city = "")
{
$url = "https://cht.mycht.cn/info.php/thirdparty/tpmanage/webgetbokun/getChtTours/";
if ($city != "") {
$url = $url . strtolower(str_replace(" ", "-", $city)) . "/";
}
$str = $this->tpBokun_model->getCrulData($url); //抓取cht的数据
$chtData = json_decode($str);
if (is_array($chtData) && count($chtData) > 0) {
//导入开始
foreach ($chtData as $chtItem) {
// echo ($chtItem->city.",".$chtItem->ic_title."\n\r");
//判断重复
if ($this->tpBokun_model->checkChtTours($chtItem->ic_url_title)) {
echo "已存在:" .$chtItem->ic_url_title. "\r\n";
continue;
}
//开始导入
//1.根据城市名称获取对应的is_id作为 父类ID
$chtCity = str_replace("'", "", str_replace(' ', '-', strtolower($chtItem->city)));
$is_id = $this->get_isid_byCity($chtCity);
if ($is_id == 0) {
continue; //找不到对应城市跳过
}
$ic_url = $chtItem->ic_url; //根据原来的URL替换成新的URL
$ic_url = str_replace("/day-tours/" . $chtCity . "/", "/" . $chtCity . "-tours/", $ic_url);
$ic_url = str_replace(".htm", "/", $ic_url);
$this->tpBokun_model->ic_url = $ic_url;
$this->tpBokun_model->ic_url_title = $chtItem->ic_url_title;
$this->tpBokun_model->ic_title = $chtItem->ic_title;
$this->tpBokun_model->ic_content = $chtItem->ic_content;
$this->tpBokun_model->ic_summary = $chtItem->ic_summary;
$this->tpBokun_model->ic_seo_title = $chtItem->ic_seo_title;
$this->tpBokun_model->ic_seo_description = $chtItem->ic_seo_description;
$this->tpBokun_model->ic_seo_keywords = $chtItem->ic_seo_keywords;
$this->tpBokun_model->ic_photo = $chtItem->ic_photo;
$this->tpBokun_model->ic_status = 1;
//保存信息表
$tempData = json_decode($this->tpBokun_model->addInfo($is_id));
if (is_array($tempData)) {
$ic_id = $tempData[0]->value->ic_id;
} else {
$result["status"] = "error";
echo json_encode($result);
continue;
}
//保存meta表
if ($ic_id > 0) {
$metalist = $chtItem->meta;
if ($metalist) {
foreach ($metalist as $metaItem) {
$this->tpBokun_model->addMeta($ic_id, $metaItem->im_key, $metaItem->im_value); //循环导入原来的meta
}
}
}
$result["status"] = "ok";
$result["ic_id"] = $ic_id;
echo json_encode($result);
echo "\r\n";
}
echo "数据导入完成 \r\n";
} else {
echo "接口数据读取错误!";
}
//print_r(json_decode($str));
// echo $str;
}
}
/* End of file webgetbokun.php */

@ -0,0 +1,168 @@
<?php
class IContent_model extends CI_Model
{
var $insert_id = -1;
function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
function Add($ic_url, $ic_url_title, $ic_type, $ic_title, $ic_content, $ic_summary, $ic_seo_title, $ic_seo_description, $ic_seo_keywords,
$ic_show_bread_crumbs, $ic_status, $ic_template, $ic_photo, $ic_photo_width, $ic_photo_height, $ic_recommend_tours, $ic_recommend_packages,
$ic_ht_area_id, $ic_ht_area_type, $ic_ht_product_id, $ic_ht_product_type,$ic_author)
{
$ic_content=str_replace('http:'.$this->config->item('site_image_url'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_remote2'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_org'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url2'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_remote'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url3'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_org2'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace('#textarea#', 'textarea',$ic_content);
$sql = "INSERT INTO infoContents \n"
. " ( \n"
. " ic_url, ic_url_title, ic_type, ic_title, ic_content, ic_summary, ic_seo_title, \n"
. " ic_seo_description, ic_seo_keywords, ic_show_bread_crumbs, ic_status, \n"
. " ic_template, ic_photo,ic_photo_width,ic_photo_height, ic_sitecode, ic_recommend_tours, ic_recommend_packages, \n"
. " ic_ht_area_id, ic_ht_area_type,ic_ht_product_id,ic_ht_product_type,ic_author, ic_datetime \n"
. " ) \n"
. "VALUES \n"
. " ( N?,N?,?,N?,N?,N?,N?,N?,N?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,getdate() )";
$query = $this->HT->query($sql,
array($ic_url, $ic_url_title, $ic_type, $ic_title, str_replace($this->config->item('media_image_url'), $this->config->item('site_image_url'),
$ic_content),
$ic_summary, $ic_seo_title, $ic_seo_description, $ic_seo_keywords, $ic_show_bread_crumbs, $ic_status,
$ic_template, $ic_photo, $ic_photo_width, $ic_photo_height, "trippest", $ic_recommend_tours, $ic_recommend_packages,
$ic_ht_area_id, $ic_ht_area_type, $ic_ht_product_id, $ic_ht_product_type,$ic_author));
$this->insert_id = $this->HT->last_id('infoContents');
return $query;
}
function Update($ic_id, $ic_url, $ic_url_title, $ic_type, $ic_title, $ic_content, $ic_summary, $ic_seo_title, $ic_seo_description, $ic_seo_keywords,
$ic_show_bread_crumbs, $ic_status, $ic_template, $ic_photo, $ic_photo_width, $ic_photo_height, $ic_recommend_tours, $ic_recommend_packages,
$ic_ht_area_id, $ic_ht_area_type, $ic_ht_product_id, $ic_ht_product_type,$ic_author)
{
$ic_content=str_replace('http:'.$this->config->item('site_image_url'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url2'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_org'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_remote'), $this->config->item('site_image_url'),$ic_content);
$ic_content=str_replace($this->config->item('media_image_url_remote2'), $this->config->item('site_image_url'),$ic_content);
$sql = "UPDATE infoContents \n"
. "SET ic_url = N?, \n"
. " ic_url_title = N?, \n"
. " ic_type = ?, \n"
. " ic_title = N?, \n"
. " ic_content = N?, \n"
. " ic_summary = N?, \n"
. " ic_seo_title = N?, \n"
. " ic_seo_description = N?, \n"
. " ic_seo_keywords = N?, \n"
. " ic_show_bread_crumbs = ?, \n"
. " ic_status = ?, \n"
. " ic_template = ?, \n"
. " ic_photo = ?, \n"
. " ic_photo_width = ?, \n"
. " ic_photo_height = ?, \n"
. " ic_recommend_tours = ?, \n"
. " ic_recommend_packages = ?, \n"
. " ic_datetime = GETDATE() , \n"
. " ic_ht_area_id = ?, \n"
. " ic_ht_area_type = ?, \n"
. " ic_ht_product_id = ?, \n"
. " ic_ht_product_type = ?, \n"
. " ic_author = ? \n"
. "WHERE ic_id = ? \n"
. "AND ic_sitecode = ? ";
$query = $this->HT->query($sql,
array($ic_url, $ic_url_title, $ic_type, $ic_title, $ic_content, $ic_summary,
$ic_seo_title, $ic_seo_description, $ic_seo_keywords, $ic_show_bread_crumbs, $ic_status, $ic_template, $ic_photo, $ic_photo_width, $ic_photo_height,
$ic_recommend_tours, $ic_recommend_packages, $ic_ht_area_id,
$ic_ht_area_type, $ic_ht_product_id, $ic_ht_product_type,$ic_author, $ic_id,"trippest"));
return $query;
}
//删除信息
function force_update($ic_id, $ic_content)
{
$sql = "UPDATE infoContents SET ic_content = N? WHERE ic_id = ?";
$query = $this->HT->query($sql, array($ic_content, $ic_id));
return $query;
}
//删除信息
function Delete($ic_id)
{
$sql = "DELETE \n"
. "FROM infoContents \n"
. "WHERE ic_id = ?";
$query = $this->HT->query($sql, array($ic_id));
return $query;
}
//递增浏览量
function inc_views($sitecode,$page_url)
{
//查询信息需要过滤url上的域名
if($page_url && $sitecode)
{
$page_url=substr($page_url,strpos($page_url,'/',8));//过滤掉url前面的http://
$sql = "UPDATE infoContents \n"
. "SET ic_view = ISNULL(ic_view,0) + 1 \n"
. "WHERE ic_sitecode = ? AND ic_url = N?";
return $this->HT->query($sql,array($sitecode,$page_url));
}
}
public function get_ic_contents($ic_id)
{
$sql="SELECT top 1 ic_id from infoContents where ic_id=?";
$query=$this->HT->query($sql,array($ic_id));
if ($query->result())
{
$row = $query->row();
return $row;
}
else
{
return FALSE;
}
}
public function get_ic_contents2($ic_id)
{
$sql="SELECT top 1 ic_id, ic_content, ic_title, ic_url, ic_photo, ic_sitecode, ic_seo_description from infoContents where ic_id=?";
$query=$this->HT->query($sql,array($ic_id));
if ($query->result())
{
$row = $query->row();
return $row;
}
else
{
return FALSE;
}
}
public function get_ic_contents_by_list($ic_id_list)
{
$ic_id_list=trim($ic_id_list);
$ic_id_list.=0;
$sql="SELECT * from infoContents where ic_id in ($ic_id_list) order by charindex(','+ltrim(ic_id)+',', ',$ic_id_list,')";
$query=$this->HT->query($sql);
if ($query->result())
{
$row = $query->result();
return $row;
}
else
{
return FALSE;
}
}
}

@ -0,0 +1,219 @@
<?php
class IStructures_model extends CI_Model
{
var $insert_id = -1;
function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
function Detail($is_id)
{
$sql = "SELECT TOP 1 is1.is_id, \n"
. " is1.is_parent_id, \n"
. " is1.is_path, \n"
. " is1.is_level, \n"
. " is1.is_sort, \n"
. " is1.is_sitecode, \n"
. " is1.is_datetime, \n"
. " is1.is_ic_id \n"
. "FROM infoStructures is1 \n"
. "WHERE is1.is_id = ?";
$query = $this->HT->query($sql, array($is_id));
//print_r($this->HT->queries);
if ($query->result())
{
$row = $query->row();
return $row;
}
else
{
return FALSE;
}
}
function Add($is_parent_id, $is_ic_id=-1)
{
if ($is_parent_id == 0)
{
$is_path = '';
$is_level = 1;
$is_sort = 999;
}
else
{
$infoStructure = $this->Detail($is_parent_id);
if ($infoStructure)
{
$is_path = $infoStructure->is_path;
$is_level = $infoStructure->is_level + 1;
$is_sort = 999;
}
else
{
return false;
}
}
$sql = "INSERT INTO infoStructures \n"
. " ( \n"
. " is_parent_id, is_path, is_level, is_sort, is_sitecode, is_datetime, is_ic_id \n"
. " ) \n"
. "VALUES \n"
. " ( \n"
. " ?, ?, ?, ?, ?, getdate(), ? \n"
. " )";
$query = $this->HT->query($sql, array($is_parent_id, $is_path, $is_level, $is_sort, "trippest", $is_ic_id));
$this->insert_id = $this->HT->last_id('infoStructures');
//把自己的ID加到path上
$set_sql = "UPDATE infoStructures \n"
. "SET is_path = is_path + CONVERT(VARCHAR(200), is_id) + ',' \n"
. "WHERE is_id = ?";
$query = $this->HT->query($set_sql, array($this->insert_id));
return $this->insert_id;
}
function GetParent($is_path, $level=1)
{
if ($is_path == '')
{
return false;
}
$sql = "SELECT TOP 1 is1.is_id, \n"
. " is1.is_parent_id, \n"
. " is1.is_path, \n"
. " is1.is_level, \n"
. " is1.is_sort, \n"
. " is1.is_sitecode, \n"
. " is1.is_datetime, \n"
. " is1.is_ic_id \n"
. "FROM infoStructures is1 \n"
. "WHERE is1.is_level = ? \n"
. " AND is1.is_id IN ($is_path 0) \n"
. "ORDER BY \n"
. " is1.is_id ASC";
$query = $this->HT->query($sql, array($level));
// print_r($this->HT->queries);
if ($query->result())
{
$row = $query->row();
return $row;
}
else
{
return FALSE;
}
}
//查询节点的根节点
function get_root($is_id)
{
$detail = $this->Detail($is_id);
$root = $this->GetParent($detail->is_path, 1);
if ($root)
{
return $root;
}
else
{ //没有根节点则返回本节点
return $detail;
}
}
//判断是否有子节点
function HasChild($is_id)
{
$sql = "SELECT TOP 1 is1.is_id \n"
. "FROM infoStructures is1 \n"
. "WHERE is1.is_parent_id = ?";
$query = $this->HT->query($sql, array($is_id));
if ($query->result())
{
return true;
}
else
{
return FALSE;
}
}
//删除节点
function Delete($is_id)
{
$sql = "DELETE \n"
. "FROM infoStructures \n"
. "WHERE is_id = ?";
$query = $this->HT->query($sql, array($is_id));
return $query;
}
//设置排序
function set_sort($is_id, $sort)
{
$sql = "UPDATE infoStructures \n"
. "SET is_datetime = GETDATE(), \n"
. " is_sort = ? \n"
. "WHERE is_id = ?";
$query = $this->HT->query($sql, array($sort, $is_id));
//print_r($this->HT->queries);
return $query;
}
//设置路径
function set_path($parent_id, $is_id)
{
$structure = $this->Detail($is_id);
//如果父级相同则不需要重新设置path
if ($parent_id == $structure->is_parent_id)
{
return true;
}
$parent = $this->Detail($parent_id);
//设置当前节点
$set_parent_id = $parent->is_id;
$set_level = $parent->is_level + 1;
$set_path = $parent->is_path . $is_id . ',';
$set_sql = "UPDATE infoStructures \n"
. "SET is_parent_id = ?, \n"
. " is_level = ?, \n"
. " is_path = ? \n"
. "WHERE is_id = ?";
$this->HT->query($set_sql, array($set_parent_id, $set_level, $set_path, $is_id));
$structure = $this->Detail($is_id);
//查询当前节点的所有子节点
$sql = "SELECT is1.is_id, \n"
. " is1.is_parent_id, \n"
. " is1.is_path, \n"
. " is1.is_level, \n"
. " is1.is_sort \n"
. "FROM infoStructures is1 \n"
. "WHERE ',' + is1.is_path LIKE '%,$structure->is_id,%' \n"
. "ORDER BY \n"
. " is1.is_level ASC ";
$query = $this->HT->query($sql);
foreach ($query->result() as $item)
{
if ($item->is_parent_id != $structure->is_id)
{
$structure = $this->Detail($item->is_parent_id);
}
$set_parent_id = $structure->is_id;
$set_level = $structure->is_level + 1;
$set_path = $structure->is_path . $item->is_id . ',';
$set_sql = "UPDATE infoStructures \n"
. "SET is_parent_id = ?, \n"
. " is_level = ?, \n"
. " is_path = ? \n"
. "WHERE is_id = ?";
$this->HT->query($set_sql, array($set_parent_id, $set_level, $set_path, $item->is_id));
}
}
}

@ -0,0 +1,503 @@
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class TpBokun_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
$this->HT229Write = $this->load->database('HT229Write',TRUE); //本地,包含144本地执行。
// $this->HT229Write = $this->load->database('HT', TRUE); //网前主要是提交到CH服务器导致没有HT229Write的链接错误。网前也不执行这个页面的操作。
$this->load->model("IContent_model");
$this->load->model("IStructures_model");
$CI = &get_instance();
}
/**
* 获取信息平台的内容,所有信息,包含发布和没发布的
*/
function getInfomationAll($guideurl)
{
// $sql = "select top 1 * from infoContents a inner join infoStructures b on a.ic_id=b.is_ic_id where ic_URL='".$guideurl."' and ic_status=1 and is_siteCode='ct'";
$sql = "select top 1 * from infoContents a inner join infoStructures b on a.ic_id=b.is_ic_id where ic_URL='" . $guideurl . "' and is_siteCode='trippest'";
$query = $this->HT->query($sql);
if ($query->num_rows() > 0) {
return $query->row();
} else {
return null;
}
}
/**
* @description: 检查是否是新的bokun产品根据infobokundata表的activityid记录
* @param {type}
* @return:
* @Date Changed:
*/
function checkActivityId($activityid)
{
$sql = "select top 1 * from infobokundata where ibd_itemname='ActivityID' and CONVERT(varchar(100),ibd_itemvalue)=?";
$query = $this->HT->query($sql, array($activityid));
if ($query->num_rows() > 0) {
$result["return"] = "yes";
} else {
$result["return"] = "no";
}
return json_encode($result);
}
/**
* @description: 通过链接标题判断CHT的产品是否已经导入
* @param {type}
* @return:
* @Date Changed:
*/
function checkChtTours($ic_url_title)
{
$sql = "select top 1 * from infoContents where ic_url_title = ?";
$query = $this->HT->query($sql, array($ic_url_title));
if ($query->num_rows() > 0) {
return true;
} else {
return false;
}
}
/**
* @description: 根据城市名称获取城市ID
* @param string $cityname:城市名称
* @return:
* @Date Changed:
*/
function getCityIdByName($cityname)
{
$sql = "select top 1 CII2_CII_SN from CItyInfo2 where CII2_Name = '" . $cityname . "' and CII2_LGC=1";
$query = $this->HT->query($sql);
if ($query->num_rows() > 0) {
return $query->row();
} else {
return null;
}
}
/**-------------------抓取程序------------------------- */
//var $is_topId = "278000665"; //本地产品的最高级父类
var $is_topId = "278012793"; //网前产品的最高父类
//ic_content表的字段
var $ic_url = "";
var $ic_url_title = "New Information";
var $ic_type = "";
var $ic_title = "";
var $ic_content = "";
var $ic_summary = "";
var $ic_seo_title = "";
var $ic_seo_description = "";
var $ic_seo_keywords = "";
var $ic_show_bread_crumbs = 0;
var $ic_status = 0;
var $ic_template = "";
var $ic_photo = "";
var $ic_photo_width = 0;
var $ic_photo_height = 0;
var $ic_recommend_tours = "";
var $ic_recommend_packages = "";
var $ic_ht_area_id = 0;
var $ic_ht_area_type = "";
var $ic_ht_product_id = 0;
var $ic_ht_product_type = "";
var $ic_author = "";
/**
* @description: 添加一条信息平台信息
* @param string $PAG_Code 翰特产品的编码
* @return:
* @Date Changed:
*/
public function addInfo($is_parent_id, $PAG_Code = "")
{
if ($is_parent_id == $this->is_topId) {
//这个是城市级别的数据添加
} else {
//产品添加
}
//添加.
$this->IContent_model->Add(
$this->ic_url,
$this->ic_url_title,
$this->ic_type,
$this->ic_title,
$this->ic_content,
$this->ic_summary,
$this->ic_seo_title,
$this->ic_seo_description,
$this->ic_seo_keywords,
$this->ic_show_bread_crumbs,
$this->ic_status,
$this->ic_template,
$this->ic_photo,
$this->ic_photo_width,
$this->ic_photo_height,
$this->ic_recommend_tours,
$this->ic_recommend_packages,
$this->ic_ht_area_id,
$this->ic_ht_area_type,
$this->ic_ht_product_id,
$this->ic_ht_product_type,
$this->ic_author
);
$infocontent = $this->IContent_model->get_ic_contents($this->IContent_model->insert_id);
if (!empty($infocontent) && $this->IStructures_model->Add($is_parent_id, $this->IContent_model->insert_id)) {
$is_id = $this->IStructures_model->insert_id;
$InfoStructures = $this->IStructures_model->Detail($is_id);
$InfoStructures->is_id = $is_id;
$InfoStructures->ic_id = $infocontent->ic_id;
$data[] = array('name' => 'ok', 'value' => $InfoStructures);
} else {
$data[] = array('name' => 'no', 'value' => 'form_info_error');
}
return json_encode($data);
}
/**---------Meta表的操作----------- */
function addMeta($im_ic_id, $im_key, $im_value)
{
$sql = "INSERT INTO infoMetas \n"
. " ( \n"
. " im_ic_id, im_key, im_value \n"
. " ) \n"
. "VALUES \n"
. " ( \n"
. " ?, ?, N? \n"
. " )";
return $this->HT->query($sql, array($im_ic_id, $im_key, (string) $im_value));
}
/**----------翰特入库--------------- */
var $pag_sn;
var $PAG_CII_SN = 0;
var $PAG_Code = "";
var $PAG_Type = "35004";
var $PAG_Scheme = "1,2,3,4,5,6,7";
var $PAG_Title = "";
var $PAG_DEI_SN = "34";
var $PAG_PPI_SN = 0; //存放activityid
var $PAG2_LGC = 1;
var $PAG2_Name = "";
var $PAG2_Title = "";
/**
* @description: 添加产品信息到翰特
* @param {type}
* @return:
* @Date Changed:
*/
function AddProductToHT()
{
$sql = "
INSERT INTO [BIZ_PackageInfo]
([PAG_CII_SN]
,[PAG_Code]
,[PAG_Type]
,[PAG_Scheme]
,[CreatTime]
,[PAG_Title]
,[PAG_DEI_SN]
,[PAG_PPI_SN]
)
VALUES
( ?,?,?,GETDATE(),?,?,?)
";
$query = $this->HT229Write->query($sql, array(
$this->PAG_CII_SN,
$this->PAG_Code,
$this->PAG_Type,
$this->PAG_Scheme,
$this->PAG_Title,
$this->PAG_DEI_SN,
$this->PAG_PPI_SN
));
$this->pag_sn = $this->HT229Write->query("select max(pag_sn) as pag_sn from BIZ_PackageInfo")->row("pag_sn");
//插入语种表
$sql2 = "
INSERT INTO [BIZ_PackageInfo2]
([PAG2_PAG_SN]
,[PAG2_LGC]
,[PAG2_Name]
,[PAG2_Title]
)
VALUES
(?,?,?,?)
";
//录入中,英两个语种
for ($i = 1; $i < 3; $i++) {
$this->HT229Write->query($sql2, array(
$this->pag_sn,
$i,
$this->PAG2_Name,
$this->PAG2_Title
));
}
return $this->pag_sn;
}
/**
* @description: 导入价格到翰特
* @param {type}
* @return:
* @Date Changed:
*/
function AddPriceToHT()
{
$sql = "INSERT INTO [BIZ_PackagePrice]
([PKP_PAG_SN]
,[PKP_VEI_SN]
,[PKP_ARI_SN]
,[PKP_AdultPrice]
,[PKP_ChildPrice]
,[PKP_InfantPrice]
,[PKP_AdultNetPrice]
,[PKP_ChildNetPrice]
,[PKP_InfantNetPrice]
,[PKP_AdultSpecialPrice]
,[PKP_ChildSpecialPrice]
,[PKP_InfantSpecialPrice]
,[PKP_PriceGrade]
,[PKP_PersonStart]
,[PKP_PersonStop]
,[PKP_ValidDate]
,[PKP_InvalidDate]
,[LastEditTime]
,[LastEditor]
,[Checked]
,[CheckOperator]
,[CheckDate]
,[PKP_CustomPrice]
,[Caclrenshu]
,[CaclAssignDate]
,[PKP_AdultCost]
,[PKP_ChildCost]
,[PKP_BabyCost]
,[PKP_PriceType]
,[PKP_ChildRate]
,[PKP_BabyRate]
,[PKP_Currency]
,[PKP_RoomDif]
,[PKP_PAGS_SN])
VALUES
(
'{$this->PKP_PAG_SN}'
,1343
,1
,'{$this->PKP_AdultPrice}'
,'{$this->PKP_ChildPrice}'
,'{$this->PKP_InfantPrice}'
,'{$this->PKP_AdultNetPrice}'
,'{$this->PKP_ChildNetPrice}'
,'{$this->PKP_InfantNetPrice}'
,0
,0
,0
,1
,'{$this->PKP_PersonStart}'
,'{$this->PKP_PersonStop}'
,'{$this->PKP_ValidDate}'
,'{$this->PKP_InvalidDate}'
,getdate()
,0
,2
,0
,getdate()
,2
,1
,getdate()
,0
,0
,0
,0
,1.000
,1.000
,'USD'
,0
,0)";
return $this->HT229Write->query($sql);
}
/**
* @description: 判断翰特是否已经存在
* @param {type}
* @return:
* @Date Changed:
*/
function checkExitHT($PAG_Code)
{
$sql = "select top 1 * from BIZ_PackageInfo where PAG_Code = ? and isnull(DeleteFlag,0)<>1 ";
$query = $this->HT229Write->query($sql, array($PAG_Code));
if ($query->num_rows() > 0) {
$result = true;
} else {
$result = false;
}
return $result;
}
/**
* @description: 根据编号,获取线路的详细信息
* @param {type}
* @return:
* @Date Changed:
*/
function getToursDetails($PAG_Code)
{
$sql = " SELECT top 1 P1.PAG_ExtendType, P1.PAG_NeedTime,p2.PAG2_Name,P1.PAG_SN,p2.PAG2_Attraction,
P1.PAG_Code,P1.PAG_Title, CItyInfo2.CII2_Name
,P1.PAG_Type
,PAG_Scheme
,PAG_GuideLan
,PAG2_TimeDetail
,p1.PAG_SourceType
FROM dbo.BIZ_PackageInfo P1 INNER JOIN
dbo.BIZ_PackageInfo2 p2 ON P1.PAG_SN = p2.PAG2_PAG_SN INNER JOIN
dbo.CItyInfo2 ON P1.PAG_CII_SN = dbo.CItyInfo2.CII2_CII_SN AND
dbo.CItyInfo2.CII2_LGC=1
WHERE (p1.pag_dei_sn=34) AND
(p2.PAG2_LGC = 1)
AND (isnull(P1.DeleteFlag,0)<>1)
AND (p1.PAG_Code = ?) ";
// AND (p2.PAG2_Check = 2)
// AND (isnull(P1.DeleteFlag,0) <>1) ";
$query = $this->HT229Write->query($sql, array($PAG_Code));
if ($query->num_rows() > 0) {
return $query->row();
} else {
return null;
}
}
/**
* @description: 判断是否有价格
* @param {type}
* @return:
* @Date Changed:
*/
function checkPrice($PagSn){
$sql = "select * from BIZ_PackagePrice
where PKP_PAG_SN = ? ";
$qurey = $this->HT229Write->query($sql,array($PagSn));
if ($qurey->num_rows()>0){
return true;
}else{
return false;
}
}
/** CHT 那边的操作 */
function getChtTours($strcity)
{
$sql = "select (select ic_url_title from infoContents inner join infoStructures on is_ic_id=ic_id where is_id = tbs.is_parent_id) as city
,* from infoContents tbc
inner join infoStructures tbs on tbs.is_ic_id=tbc.ic_id
where ic_status = 1
and is_parent_id in (
select is_id from infoStructures
inner join infoContents on is_ic_id=ic_id
where 1=1
and ic_url in (" . $strcity . ")
and is_sitecode='cht'
)
";
$query = $this->HT->query($sql);
return $query->result();
}
/**
* @description: 对应信息的meta
* @param {type}
* @return:
* @Date Changed:
*/
function getChtToursMeta($ic_id)
{
$sql = "select * from infoMetas
where im_ic_id=? and im_key<>'AMP' and im_key<>'AMP_STATUS' and im_key<>'meta_construction_code' and im_key<>'meta_news_createdate'";
$qurey = $this->HT->query($sql, array($ic_id));
return $qurey->result();
}
/**------其它一些公用函数--- */
/**
* @description: 抓取页面程序
* @param string $url 抓取地址
* @param string $data 传递的参数
* @return:
* @Date Changed:
*/
function getCrulData($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, 40); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_TIMEOUT_MS, 40000); // 设置超时限制防止死循环
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; //返回数据
}
/**
* @description: 过滤掉特殊字符
* @param {type}
* @return:
* @Date Changed:
*/
function match_chinese($chars, $encoding = 'utf8')
{
$pattern = ($encoding == 'utf8') ? '/[\x{4e00}-\x{9fa5}a-zA-Z0-9]/u' : '/[\x80-\xFF]/';
preg_match_all($pattern, $chars, $result);
return join('', $result[0]);
}
}
/* End of file TpBokun_model.php */

File diff suppressed because one or more lines are too long

@ -0,0 +1,60 @@
<div class="col-sm-5 well">
</div>
<div class="col-sm-18">
<div class="panel panel-default">
<div class="panel-heading">抓取Bokun数据</div>
<div class="panel-body">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="table table-striped">
<tr>
<td width="120">&nbsp;</td>
<td width="300">
<div class="progress">
<div id="pros" class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
</div>
</div>
<div class="form_submit">
<button type="button" class="btn btn-success" id="trigger_ajax">test</button>
</div>
</td>
<td>&nbsp;
<P>由于涉及HT所以更新主程序需要运行在本地http://202.103.68.144:65008/info.php/thirdparty/tpmanage/getbokun/,网前信息平台的有另外单独的更新程序。</P>
<p>第一步,可以先单独抓取更新所有的城市信息,这样可以先保证城市信息的完整。</p>
<p><a href="https://ct.mycht.cn/info.php/thirdparty/tpmanage/webgetbokun/checkAllCity/">点击更新所有城市信息</a></p>
<p>第二步导入网前信息平台的bokun数据</p>
<P><a href="https://ct.mycht.cn/info.php/thirdparty/tpmanage/webgetbokun/onlyUpdateInfo/">点击导入网前信息平台数据</a></P>
<p>第三步导入本地翰特bokun数据</p>
<P><a href="/info.php/thirdparty/tpmanage/getbokun/onlyUpdateHT/">点击导入翰特数据</a></P>
<p>第四步导入原CH网站产品到信息平台</p>
<p><a href="https://ct.mycht.cn/info.php/thirdparty/tpmanage/webgetbokun/CurlCHTTours/">点击导入网前信息平台数据</a></p>
<p style="display: none;"></p>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td id="msg_1">请等待:当前进度:<span>0%</span></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3" id="msg_1a"></td>
</tr>
</table>
</div>
</div>
</div>
<script type="text/javascript">
var trigger = document.getElementById("trigger_ajax");
trigger.onclick = function(){
var xhr = new XMLHttpRequest();
xhr.onprogress = function(event){
if(event.lengthComputable){
var loaded = parseInt(event.loaded/event.total*100)+"%";
$('#pros').width(loaded);
$('#pros').text(loaded);
}
}
xhr.open("post", "/info.php/thirdparty/updatetrain/updatestation/test/", true);
xhr.send(null);
}
</script>

@ -367,7 +367,6 @@ class search extends CI_Controller{
$rule_arr = $this->BIZ_intel_train_model->get_train_rules($item->station_id); $rule_arr = $this->BIZ_intel_train_model->get_train_rules($item->station_id);
if(!empty($rule_arr)){ if(!empty($rule_arr)){
$return_json['TrainList'][$i]['FromStation'] = $item->s_ename; $return_json['TrainList'][$i]['FromStation'] = $item->s_ename;
$return_json['TrainList'][$i]['FromCountry'] = $item->s_country; $return_json['TrainList'][$i]['FromCountry'] = $item->s_country;
$return_json['TrainList'][$i]['ToStations'] = array(); $return_json['TrainList'][$i]['ToStations'] = array();

@ -698,4 +698,19 @@ class BIZ_train_model extends CI_Model {
$query = $this->HT->query($sql); $query = $this->HT->query($sql);
} }
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();
}
} }

@ -8,9 +8,17 @@
define("TUNIU_URL","https://open.tuniu.cn"); define("TUNIU_URL","https://open.tuniu.cn");
define("TUNIU_KEY","AILvoDj8El7KCSMe25"); define("TUNIU_KEY","AILvoDj8El7KCSMe25");
//携程订单接口
define("ORDERUSER","guilintravel"); define("ORDERUSER","guilintravel");
define("ORDERKEY","07f811fe29f04008a8fcc86e81c012b9"); define("ORDERKEY","07f811fe29f04008a8fcc86e81c012b9");
//携程数据接口
define("DATAUSER","guilintravel");
define("DATAKEY","0dbf1652763c2289533e27437a971854");
//携程接口地址
define("JSONRETURN","http://m.ctrip.com/restapi/soa2/12976/json/");
//聚合火车订票API key //聚合火车订票API key
define("JUHE_TRAIN_API_KEY","79f03107b921ef31310bd40a1415c1cb"); define("JUHE_TRAIN_API_KEY","79f03107b921ef31310bd40a1415c1cb");

@ -69,7 +69,7 @@ class addorders extends CI_Controller{
$auto_flag = 1; $auto_flag = 1;
$people_arr = $this->BIZ_train_model->biz_people($cold_sn); $people_arr = $this->BIZ_train_model->biz_people($cold_sn);
$train_info = $this->BIZ_train_model->get_biz_foi($cold_sn); $train_info = $this->BIZ_train_model->biz_order_detail($cold_sn);
if($item->COLD_SPFS > 1){ if($item->COLD_SPFS > 1){
//寄送票 //寄送票
@ -101,35 +101,35 @@ class addorders extends CI_Controller{
//不是国内支付宝的付款方式的订单需要受到1000元单价限制 //不是国内支付宝的付款方式的订单需要受到1000元单价限制
if($item->GAI_Type != '15015' && $item->COLI_State != '8'){ if($item->GAI_Type != '15015' && $item->COLI_State != '8'){
if($train_info[0]->adultcost > 1000){ if($train_info->adultcost > 1000){
$auto_flag = 0; $auto_flag = 0;
$back_message .= '-单价大于1000不自动出票'; $back_message .= '-单价大于1000不自动出票';
} }
} }
//如果为国际火车票就不出票 //如果为国际火车票就不出票
if(in_array($train_info[0]->FlightsNo, $nation_train)){ if(in_array($train_info->FlightsNo, $nation_train)){
$auto_flag = 0; $auto_flag = 0;
$back_message .= '-国际火车票不自动出票'; $back_message .= '-国际火车票不自动出票';
} }
//无座的订单不做出票 //无座的订单不做出票
if($train_info[0]->Aircraft == 'WZ'){ if($train_info->Aircraft == 'WZ'){
$auto_flag = 0; $auto_flag = 0;
$back_message .= '-无座不自动出票'; $back_message .= '-无座不自动出票';
} }
//香港火车不自动出票 //香港火车不自动出票
if($train_info[0]->DepartAirport == 'XJA'){ if($train_info->DepartAirport == 'XJA'){
$auto_flag = 0; $auto_flag = 0;
$back_message .= '-香港火车不自动出票'; $back_message .= '-香港火车不自动出票';
} }
$DepartureDate = strtotime($train_info[0]->DepartureDate); $DepartureDate = strtotime($train_info->DepartureDate);
$time = time(); $time = time();
$depart_diff = ($DepartureDate - $time) / 86400; $depart_diff = ($DepartureDate - $time) / 86400;
if($train_info[0]->ArrivalAirport == 'XJA' && $train_info[0]->adultcost > 500 && $depart_diff > 5){ if($train_info->ArrivalAirport == 'XJA' && $train_info->adultcost > 500 && $depart_diff > 5){
$auto_flag = 0; $auto_flag = 0;
$back_message .= '-内地香港火车金额大于500超过五天不自动出票'; $back_message .= '-内地香港火车金额大于500超过五天不自动出票';
} }
@ -138,7 +138,7 @@ class addorders extends CI_Controller{
//如果刚好是第三十天的订单 //如果刚好是第三十天的订单
if(($item->COLI_State == '8' || $item->COLI_State == '63')){ if(($item->COLI_State == '8' || $item->COLI_State == '63')){
$this->isauto = 3; $this->isauto = 3;
$time_obj = $this->BIZ_train_model->get_saletime($train_info['0']->DepartAirport_cn); $time_obj = $this->BIZ_train_model->get_saletime($train_info->DepartAirport_cn);
//print_r($time_obj); //print_r($time_obj);
if(!empty($time_obj)){ if(!empty($time_obj)){
$saletime = strtotime($time_obj->TST_saletime); $saletime = strtotime($time_obj->TST_saletime);
@ -318,9 +318,11 @@ class addorders extends CI_Controller{
} }
if($passporttypeseid == 'G'){ if($passporttypeseid == 'G'){
$passengers .= ',{"passengerid":' . (++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"'.$data["train"]->adultcost.'","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","gatValidDateEnd":"'.$item->BPE_PassExpdate.'","gatBornDate":"'.$item->BPE_BirthDate.'","sexCode":"'.$sex.'","email":"'.$data['email'].'"}'; $passengers .= ',{"passengerid":' . (++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"'.$data["train"]->adultcost.'","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","gatValidDateEnd":"'.$item->BPE_PassExpdate.'","gatBornDate":"'.$item->BPE_BirthDate.'","sexCode":"'.$sex.'","email":"'.$data['email'].'","phoneNum":"13097735982"}';
}elseif($passporttypeseid == 'B'){
$passengers .= ',{"passengerid":' . ( ++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"'.$data["train"]->adultcost.'","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","countryCode":"US","email":"'.$data['email'].'","phoneNum":"13097735982"}';
}else{ }else{
$passengers .= ',{"passengerid":' . ( ++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"'.$data["train"]->adultcost.'","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","countryCode":"US","email":"'.$data['email'].'"}'; $passengers .= ',{"passengerid":' . ( ++$key) . ',"passengersename":"' . $passengersename . '","piaotype":"' . $piaotype . '","piaotypename":"' . $piaotypename . '","passporttypeseid":"' . $passporttypeseid . '","passporttypeseidname":"' . $passporttypeseidname . '","passportseno":"' . $passportseno . '","price":"'.$data["train"]->adultcost.'","zwcode":"' . $zwcode . '","zwname":"' . $zwname . '","phoneNum":"13097735982","email":"'.$data['email'].'"}';
} }
} }
@ -737,7 +739,7 @@ class addorders extends CI_Controller{
$PostData['TrainOrderService']->OrderNumber = $CtripOrder; $PostData['TrainOrderService']->OrderNumber = $CtripOrder;
$PostData['TrainOrderService']->PayedPrice = $Price; $PostData['TrainOrderService']->PayedPrice = $Price;
$PostData['TrainOrderService']->PayTime = $time; $PostData['TrainOrderService']->PayTime = $time;
//$PostData['TrainOrderService']->TradeNumber = $time; $PostData['TrainOrderService']->TradeNumber = $CtripOrder;
$Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerPayOrder'; $Url = 'http://apiproxy.ctrip.com/apiproxy/soa2/13680/PartnerPayOrder';

@ -33,9 +33,9 @@ class api extends CI_Controller{
continue; continue;
}else{ }else{
$data = new stdCLass(); $data = new stdCLass();
$htOrderInfo = $this->BIZ_train_model->get_biz_foi($coldSn); $htOrderInfo = $this->BIZ_train_model->biz_order_detail($coldSn);
$data->coldSn = $coldSn; $data->coldSn = $coldSn;
$data->htDepartureTime = date('Y-m-d H:i:s',strtotime($htOrderInfo['0']->DepartureTime)); $data->htDepartureTime = date('Y-m-d H:i:s',strtotime($htOrderInfo->DepartureTime));
if($trainOrderInfo->ts_channel == 'juhe'){ if($trainOrderInfo->ts_channel == 'juhe'){
$post_data=array( $post_data=array(
"key"=>"79f03107b921ef31310bd40a1415c1cb", "key"=>"79f03107b921ef31310bd40a1415c1cb",
@ -58,31 +58,98 @@ class api extends CI_Controller{
//获取订单出票状态 //获取订单出票状态
public function isbooktickets(){ public function isbooktickets(){
$cold_sn = $this->input->get('cold_sn'); $orderIdListStr = $this->input->get('orderIdListStr');
if($orderIdListStr == ''){
exit('数据为空!');
}
$orderData = explode(',',$orderIdListStr);
//$orderData = ['2005075526','2004125562','2005055512','2003305598'];
$tickets_info = $this->train_system_model->get_tickets_info($cold_sn); $returnData = new stdCLass();
//print_r($tickets_info); $returnData->pending = array();
if(!empty($tickets_info)){ $returnData->processing = array();
$return_data = array(); $returnData->confirmed = array();
$i = 0;
foreach($tickets_info as $items){ if(!empty($orderData)){
$return_data[$i] = new stdClass(); foreach($orderData as $itemId){
$return_data[$i]->cold_sn = (int) $items->ts_cold_sn; $orderInfo = new stdCLass();
$return_data[$i]->ordernumber = $items->ts_ordernumber; $doTicketsNum = 0;
$return_data[$i]->status = $items->tst_status; $orderInfo->coliId = $itemId;
$return_data[$i]->passengersename = $items->tst_realname; $priceInfo = $this->BIZ_train_model->get_paypal($itemId);
$return_data[$i]->passportseno = $items->tst_numberid; $orderInfo->totalPrice = (int) $priceInfo->COLI_Price;
$i++;
$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($return_data)); print_r(json_encode($returnData));
}else{
return null;
} }
} }
//用于自动发送确认信 //用于自动发送确认信
public function send_confirmmail(){ public function send_confirmmail(){
die();
//log_message('error','auto sendmail'); //log_message('error','auto sendmail');
$mailarr = $this->BIZ_train_model->auto_sendmail(); $mailarr = $this->BIZ_train_model->auto_sendmail();
foreach($mailarr as $obj){ foreach($mailarr as $obj){
@ -112,8 +179,8 @@ class api extends CI_Controller{
$data['price']->GAI_SQJECurrency == 'RMB'; $data['price']->GAI_SQJECurrency == 'RMB';
} }
$data['allpeople'] = $this->BIZ_train_model->biz_people($info->COLD_SN); $data['allpeople'] = $this->BIZ_train_model->biz_people($info->COLD_SN);
$data['train_info'] = $this->BIZ_train_model->get_biz_foi($info->COLD_SN); $data['train_info'] = $this->BIZ_train_model->biz_order_detail($info->COLD_SN);
$differtime = (strtotime($data['train_info'][0]->DepartureTime) - time()) / 3600; $differtime = (strtotime($data['train_info']->DepartureTime) - time()) / 3600;
$obj = $this->BIZ_train_model->get_biz_jol_info($info->COLD_SN,$jh_order); $obj = $this->BIZ_train_model->get_biz_jol_info($info->COLD_SN,$jh_order);
$data['elecnumber'] = $obj->ts_elecnumber; $data['elecnumber'] = $obj->ts_elecnumber;
$status = $obj->ts_status; $status = $obj->ts_status;
@ -143,16 +210,74 @@ class api extends CI_Controller{
} }
//发邮件给外联 //发邮件给外联
function send_mail_to_wl($subject,$body,$coli_id){ 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"; $fromName = "cyc";
$fromEmail = "cyc@hainatravel.com"; $fromEmail = "cyc@hainatravel.com";
//获取该订单的操作员的邮箱以及姓名 if(empty($coli_id)){
$info = $this->BIZ_train_model->get_operatorInfo($coli_id); $toName = 'Sharon';
$toName = $info[0]->OPI_Name; $toEmail = 'sharon@chinahighlights.com';
$toEmail = $info[0]->OPI_Email; $fromEmail = $this->input->get_post('concatEmail');
$this->Sendmail_model->SendMailToTable($fromName,$fromEmail,$toName,$toEmail,$subject,$body); $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 //导出账单api
public function export_excel(){ public function export_excel(){
set_time_limit(0); set_time_limit(0);

@ -0,0 +1,644 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class innerTrainSearch extends CI_Controller{
public function __construct(){
parent::__construct();
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');
$this->load->helper('train');
$this->start_time = microtime(true);
//$this->load->model("BIZ_intel_train_model");//国际火车模型
}
public function index(){
exit('你走错了!');
}
//查询选择
public function search(){
//接收参数
$date = $this->input->get_post('date');
$from = $this->input->get_post('from');
$to = $this->input->get_post('to');
if(!$date || !$from || !$to){
header("HTTP/1.1 404 Not Found");
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
}else{
//根据选择的接口供应商调用对应的接口,默认使用携程的接口
$supplier = $this->input->get_post('supplier');
switch ($supplier){
case 'juhe':
$this->juheApi($date,$from,$to);
break;
case 'ctrip':
$this->ctripApi($date,$from,$to);
break;
default :
$this->ctripApi($date,$from,$to);
break;
}
}
}
//聚合数据接口
public function juheApi($train_date=null,$fromStation=null,$toStation=null){
//定义一些变量
$flag = true;
$juheTrainInfo = '';
set_time_limit(0);
//判断数据是否合法
if(!$train_date || !$fromStation || !$toStation){
exit('传参不能为空!');
}else{
if(strlen($fromStation) != 3){
exit('fromStation:参数错误!');
}
if(strlen($toStation) != 3){
exit('toStation:参数错误!');
}
$api_start_time = microtime(true);
//调用查询模块
$search_return = $this->Searchtrain($train_date,$fromStation,$toStation);
$api_end_time = microtime(true);
//调用拼接处理模块
$trainjson = $this->createTrainJson($search_return);
$end_time = microtime(true);
//聚合接口相应时间
$api_responsive_time = $api_end_time - $api_start_time;
//我们的接口相应时间
$responsive_time = $end_time - $this->start_time;
log_message('error','TRAINSPEED|请求url:'.$this->url.'|聚合相应时间:'.$api_responsive_time.'s|接口运行时间:'.$responsive_time.'s|+7天:'.$this->seveth);
print_r($trainjson);
}
}
//搜索模块
function Searchtrain($train_date,$fromStation,$toStation){
$this->train_date = $train_date;
$now_time = time();
$this->differ_time = (strtotime($train_date) - $now_time) / 86400;
$this->seveth = false;
//屏蔽掉超过预售期的搜索,提高速度
if($this->differ_time > 29){
$train_date = date('Y-m-d',strtotime('+7day'));
$this->seveth = true;
}
$this->url = JUHE_TRAIN_CX_API.'?key='.JUHE_TRAIN_API_KEY.'&train_date='.$train_date.'&from_station='.$fromStation.'&to_station='.$toStation;
$train_info = GetPost_http($this->url);
return $train_info;
}
//字符串拼接模块
function createTrainJson($returnjson){
$return_data = new stdClass();
$return_data->data = new stdClass();
$return_data->data->httpstatus = 200;
$return_data->data->seveth = $this->seveth;
$return_data->data->supplier = 'juhe';
$return_data->data->result = array();
$return_data->data->map = new stdClass();
$obj = array();
$i = 0;
$pricestr = '';
if(!empty($returnjson)){
if(!empty(json_decode($returnjson)->result->list)){
foreach (json_decode($returnjson)->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.'",';
}
}
if(isset($value->dw_price)){
if($value->dw_price > 0){
$seat_type .= '"F":"¥'.$value->dw_price.'",';
}
}
$pricestr = $seat_type.'"train_no":'.'"'.$value->train_no.'"';
//余票字符串
$this->can_buy_now = $value->can_buy_now;
$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.'||'.$this->train_date.'||||||||'.ticket_exchange($value->gjrw_price,$value->gjrw_num,$this->seveth).'|'.ticket_exchange($value->qtxb_price,$value->qtxb_num,$this->seveth).'|'.ticket_exchange($value->rw_price,$value->rw_num,$this->seveth).'|'.ticket_exchange($value->rz_price,$value->rz_num,$this->seveth).'|'.ticket_exchange($value->tdz_price,$value->tdz_num,$this->seveth).'|'.ticket_exchange($value->wz_price,$value->wz_num,$this->seveth).'||'.ticket_exchange($value->yw_price,$value->yw_num,$this->seveth).'|'.ticket_exchange($value->yz_price,$value->yz_num,$this->seveth).'|'.ticket_exchange($value->edz_price,$value->edz_num,$this->seveth).'|'.ticket_exchange($value->ydz_price,$value->ydz_num,$this->seveth).'|'.ticket_exchange($value->swz_price,$value->swz_num,$this->seveth).'|'.ticket_exchange($value->dw_price,$value->dw_num,$this->seveth).'||';
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$pricestr.'},"messages":[],"validateMessages":{}}';
$return_data->data->price[$i] = $data;
$i++;
}
}
}
$return_data->data->map = (object)$obj;
return json_encode($return_data);
}
//携程数据接口
public function ctripApi($date=null,$from=null,$to=null,$return=false){
if(!$date || !$from || !$to){
header("HTTP/1.1 404 Not Found");
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
}else{
$isCache = false;
$iseven = false;
$cachedata = false;
$now_time = time();
$differ = (strtotime($date) - $now_time) / 86400;
if($differ > 29){
$date = date('Y-m-d',strtotime('+7day'));
$iseven = true;
}
//转换三字码为中文
$this->load->model("ctrip_model");
$FromName = $this->ctrip_model->ReplaceCodeToName($from);
$ToName = $this->ctrip_model->ReplaceCodeToName($to);
if(!$FromName || !$ToName){
header("HTTP/1.1 404 Not Found");
exit('{"httpstatus":404,"data":{"seven":false,"cache":false,"result":[],"map":{}}}');
}else{
$FromName = $FromName->station_name;
$ToName = $ToName->station_name;
}
//生成请求链接
$TimeStamp = time();
$Sign = md5($TimeStamp.DATAKEY);
$url = JSONRETURN.'SearchS2S/?From='.urlencode($FromName).'&To='.urlencode($ToName).'&DepartDate='.$date.'&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign;
$api_start_time = microtime(true);
//获取数据
$ResponseJson = GetPost_http($url,'','GET');
$api_end_time = microtime(true);
$ResponseData = json_decode($ResponseJson);
$api_responsive_time = $api_end_time - $api_start_time;
if(empty($ResponseData->Trains)){
log_message('error','ctrip_trian|status:trains is empty |相应时间:'.$api_responsive_time);
}else{
log_message('error','ctrip_trian|status:'.$ResponseData->ResponseStatus->Ack.'|相应时间:'.$api_responsive_time);
}
//定义返回的json
$ReturnData = new stdClass();
$ReturnData->httpstatus = 200;
$ReturnData->data = new stdClass();
$ReturnData->data->seven = $iseven;
$ReturnData->data->cache = $isCache;
$ReturnData->data->supplier = 'ctrip';
$ReturnData->data->result = array();
$ReturnData->data->map = new stdClass();
$obj = array();
$i = 0;
$PriceStr = '';
//数据解析
if(!empty($ResponseData->Trains)){
foreach ($ResponseData->Trains as $TrainInfo){
$obj[$TrainInfo->FromTelcode] = $TrainInfo->FromStationName;
$obj[$TrainInfo->ToTelcode] = $TrainInfo->ToStationName;
$SeaType = '';
//余数初始化为空
$gjrwNum = $rwNum = $rzNum = $tdzNum = $wzNum = $yzNum = $edzNum = $ydzNum = $swzNum = $ywNum = $dwNum = $ydwNum = $edzNum = null;
foreach($TrainInfo->Seats as $Seats){
//从香港出发的 D/G 火车加价3%
if($from == 'XJA'){
if(stripos($TrainInfo->TrainNo, "G") !== false || stripos($TrainInfo->TrainNo, "D") !== false){
$Seats->Price = $Seats->Price * 1.03;
}
}
if($Seats->SeatName == '高级软卧上'){
$gjrwXiaPrice = $Seats->Price * 10;
$SeaType .= '"6":"'.$gjrwXiaPrice.'","A6":"¥'.$Seats->Price.'",';
$gjrwNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '软卧上'){
$rwPrice = $Seats->Price * 10;
$SeaType .= '"4":"'.$rwPrice.'","A4":"¥'.$Seats->Price.'",';
$rwNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '一等双软上'){
$SeaType .= '"YDW":"¥'.$Seats->Price.'",';
$ydwNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '软座'){
$rzPrice = $Seats->Price * 10;
$SeaType .= '"2":"'.$rzPrice.'","A2":"¥'.$Seats->Price.'",';
$rzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '特等座'){
$SeaType .= '"P":"¥'.$Seats->Price.'",';
$tdzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '无座'){
$SeaType .= '"WZ":"¥'.$Seats->Price.'",';
$wzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '硬座'){
$yzPrice = $Seats->Price * 10;
$SeaType .= '"1":"'.$yzPrice.'","A1":"¥'.$Seats->Price.'",';
$yzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '二等座'){
$SeaType .= '"O":"¥'.$Seats->Price.'",';
$edzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '一等座'){
$SeaType .= '"M":"¥'.$Seats->Price.'",';
$ydzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '商务座'){
$swzPrice = $Seats->Price * 10;
$SeaType .= '"9":"'.$swzPrice.'","A9":"¥'.$Seats->Price.'",';
$swzNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '硬卧上'){
$ywPrice = $Seats->Price * 10;
$SeaType .= '"3":"'.$ywPrice.'","A3":"¥'.$Seats->Price.'",';
$ywNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '二等双软上'){
$SeaType .= '"EDW":"¥'.$Seats->Price.'",';
$erwNum = $Seats->TicketLeft;
}
if($Seats->SeatName == '动卧上'){
$SeaType .= '"F":"¥'.$Seats->Price.'",';
$dwNum = $Seats->TicketLeft;
}
$PriceStr = $SeaType.'"train_no":'.'"'.$TrainInfo->TrainNo.'"';
}
//对返回的数据进行容错处理
$gjrwNum = isset($gjrwNum) ? ticket_exchange($Seats->Price,$gjrwNum,$iseven) : '';
$rwNum = isset($rwNum) ? ticket_exchange($Seats->Price,$rwNum,$iseven) : '';
$rzNum = isset($rzNum) ? ticket_exchange($Seats->Price,$rzNum,$iseven) : '';
$tdzNum = isset($tdzNum) ? ticket_exchange($Seats->Price,$tdzNum,$iseven) : '';
$wzNum = isset($wzNum) ? ticket_exchange($Seats->Price,$wzNum,$iseven) : '';
$ywNum = isset($ywNum) ? ticket_exchange($Seats->Price,$ywNum,$iseven) : '';
$yzNum = isset($yzNum) ? ticket_exchange($Seats->Price,$yzNum,$iseven) : '';
$edzNum = isset($edzNum) ? ticket_exchange($Seats->Price,$edzNum,$iseven) : '';
$ydzNum = isset($ydzNum) ? ticket_exchange($Seats->Price,$ydzNum,$iseven) : '';
$swzNum = isset($swzNum) ? ticket_exchange($Seats->Price,$swzNum,$iseven) : '';
$dwNum = isset($dwNum) ? ticket_exchange($Seats->Price,$dwNum,$iseven) : '';
$ydwNum = isset($ydwNum) ? ticket_exchange($Seats->Price,$ydwNum,$iseven) : '';
$erwNum = isset($erwNum) ? ticket_exchange($Seats->Price,$erwNum,$iseven) : '';
$runMin = $TrainInfo->DurationMinutes % 60;
$runHour = ($TrainInfo->DurationMinutes - $runMin) / 60;
$ReturnData->data->result[$i] = '|预定|'.$TrainInfo->Train12306No.'|'.$TrainInfo->TrainNo.'|'.$TrainInfo->FromStationName.'|'.$TrainInfo->ToStationName.'|'.$TrainInfo->FromTelcode.'|'.$TrainInfo->ToTelcode.'|'.$TrainInfo->StartTime.'|'.$TrainInfo->ArriveTime.'|'.$runHour.':'.$runMin.'|'.$TrainInfo->CanWebBuy.'||'.date('Ymd',strtotime($date)).'||||||||'.$gjrwNum.'||'.$rwNum.'|'.$rzNum.'|'.$tdzNum.'|'.$wzNum.'||'.$ywNum.'|'.$yzNum.'|'.$edzNum.'|'.$ydzNum.'|'.$swzNum.'|'.$dwNum.'|||'.$ydwNum.'|'.$erwNum;
$data = '{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{'.$PriceStr.'},"messages":[],"validateMessages":{}}';
$ReturnData->data->price[$i] = $data;
$i++;
}
}
//print_r($ResponseData);die();
$ReturnData->data->map = (object)$obj;
if($return){
return json_encode($ReturnData);
}else{
echo json_encode($ReturnData);
}
}
}
//查询经停站(基于携程api)
public function getstopstation(){
//接收参数
$DepartDate = $this->input->get_post('DepartDate');
$TrainNo = $this->input->get_post('TrainNo');
if(!$DepartDate || !$TrainNo){
exit('传参错误!');
}else{
//生成请求链接
$TimeStamp = time();
$Sign = md5($TimeStamp.DATAKEY);
$url = JSONRETURN.'GetStopStations/?DepartDate='.$DepartDate.'&TrainNo='.$TrainNo.'&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign;
$ResponseJson = GetPost_http($url,'','GET');
$ResponseData = json_decode($ResponseJson);
//构造12306格式
$ReturnData = array();
$ReturnData['validateMessagesShowId'] = '_validatorMessage';
$ReturnData['status'] = true;
$ReturnData['httpstatus'] = 200;
$ReturnData['data'] = array();
$i = 0;
$Last_num = count($ResponseData->StopStations);
foreach($ResponseData->StopStations as $items){
if($i == 0){
$ReturnData['data']['data'][$i]['start_station_name'] = $items->StationName;
$ReturnData['data']['data'][$i]['station_train_code'] = $TrainNo;
$ReturnData['data']['data'][$i]['end_station_name'] = $ResponseData->StopStations[$Last_num-1]->StationName;
}
$ReturnData['data']['data'][$i]['arrive_time'] = $items->ArrivalTime;
$ReturnData['data']['data'][$i]['station_name'] = $items->StationName;
$ReturnData['data']['data'][$i]['start_time'] = $items->StartTime;
$ReturnData['data']['data'][$i]['stopover_time'] = $items->StopMinutes;
$ReturnData['data']['data'][$i]['station_no'] = $items->StationNo;
$ReturnData['data']['data'][$i]['isEnabled'] = true;
$i++;
}
$ReturnData['messages'] = array();
$ReturnData['validateMessages'] = new stdClass();
print_r(json_encode($ReturnData));
}
}
//获取所有站点信息(基于携程api)
public function getallstation(){
//生成请求参数
$TimeStamp = time();
$Sign = md5($TimeStamp.DATAKEY);
$url = JSONRETURN.'/GetAllStations/?&User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign;
$ResponseJson = GetPost_http($url,'','GET');
$ResponseData = json_decode($ResponseJson);
$data = array();
foreach ($ResponseData->Stations as $items){
$data['StationName'] = isset($items->StationName) ? checkNull($items->StationName) : '';
$data['PinYin'] = isset($items->PinYin) ? checkNull($items->PinYin) : '';
$data['Telecode'] = isset($items->Telecode) ? checkNull($items->Telecode) : '';
$data['Address'] = isset($items->Address) ? checkNull($items->Address) : '';
$data['Geography'] = isset($items->Geography) ? checkNull($items->Geography) : '';
$this->load->model("ctrip_model");
$this->ctrip_model->AddOrUpdate($data);
}
}
//查询中转方案(基于携程api)
public function gettraintrainsfer(){
$FromCode = $this->input->get_post('FromCode');
$ToCode = $this->input->get_post('ToCode');
$DepartDate = $this->input->get_post('DepartDate');
if(!$FromCode || !$ToCode || !$DepartDate){
exit('传参错误!');
}else{
$TimeStamp = time();
$Sign = md5($TimeStamp.DATAKEY);
$this->load->model("ctrip_model");
$FromName = $this->ctrip_model->ReplaceCodeToName($FromCode);
$ToName = $this->ctrip_model->ReplaceCodeToName($ToCode);
$From = $FromName->station_name;
$To = $ToName->station_name;
$url = JSONRETURN.'GetTrainTransfer?User='.DATAUSER.'&TimeStamp='.$TimeStamp.'&Sign='.$Sign.'&From='.urlencode($From).'&To='.urlencode($To).'&DepartDate='.$DepartDate;
$ResponseJson = GetPost_http($url,'','GET');
$ResponseData = json_decode($ResponseJson);
$priceAddSeats = ['软卧','硬卧'];
foreach ($ResponseData->TransferLines as $methodsItems){
foreach($methodsItems->Trains as $trainsItems){
foreach ($trainsItems->Seats as $seatsItems){
if(in_array($seatsItems->SeatName,$priceAddSeats)){
$seatsItems->Price = ceil($seatsItems->Price * 1.2);
}
}
}
}
print_r(json_encode($ResponseData));
}
}
//火车移动端数据接口
public function get_train(){
$train_date = $this->input->get('date');
$fromStation = $this->input->get('from');
$toStation = $this->input->get('to');
if(!$train_date || !$fromStation || !$toStation){
exit('传参错误!');
}
$back_json = $this->ctripApi($train_date,$fromStation,$toStation,true);
$train_info = new stdClass();
$train_info = json_decode($back_json);
$return_data = new stdClass();
$return_data->status = 200;
$return_data->search = new stdClass();
$return_data->search->FromStationCode = $fromStation;
$return_data->search->ToStationCode = $toStation;
$return_data->search->StartDate = $train_date;
$return_data->CardFee = 3;
//MainlandChina:大陆内地寄送费用
//HMT:港澳台寄送费用
//寄送费按订单收,无论多少张票,没有取票费
//$return_data->MainlandChina = 6;
//$return_data->HMT = 15;
$this->load->library('Currency');
define("CONST_SITE_CURRENCY","USD");
$return_data->ExRate = $this->currency->get_site_currencyrate();
$return_data->result = array();
$i = 0;
foreach ($train_info->data->result as $value){
$return_data->result[$i] = new StdClass();
$data = explode('|', $value);
$return_data->result[$i]->TrainNo = $data[2];
$return_data->result[$i]->TrainCode = $data[3];
$return_data->result[$i]->TrainType = substr(ucwords($data[3]), 0, 1);
$return_data->result[$i]->StartStationCode = $data[4];
$return_data->result[$i]->EndStationCode = $data[5];
$return_data->result[$i]->DepartStation = '';
$return_data->result[$i]->DepartStationCode = $data[6];
$return_data->result[$i]->DepartStationNo = '';
$return_data->result[$i]->ArriveStation = '';
$return_data->result[$i]->ArriveStationCode = $data[7];
$return_data->result[$i]->ArriveStationNo = '';
$return_data->result[$i]->DepartTime = $data[8];
$return_data->result[$i]->ArriveTime = $data[9];
$return_data->result[$i]->RunTime = $data[10];
$return_data->result[$i]->IsBookable = true;
//$return_data->result[$i]->SeatType = '123456789OMPA';
$return_data->result[$i]->cached = 1;
//$return_data->result[$i]->CheapSeat = new stdClass();
$price = json_decode($train_info->data->price[$i]);
$return_data->result[$i]->CheapSeat = null;
$return_data->result[$i]->SeatList = array();
//做一个数据存储所有的座位类型的余票
$seat_yp_map = array(
'A' => $data[21], //高级软卧
'A6' => $data[21], //高级软卧
'H' => $data[22], //其他
'A4' => $data[23], //软卧
'A2' => $data[24], //软座
'P' => $data[25], //特等座
'WZ' => $data[26],//无座
'X' => $data[26], //无座
'A3' => $data[28], //硬卧
'A1' => $data[29], //硬座
'O' => $data[30], //二等座
'A8' => $data[30], //二等座
'A7' => $data[31], //一等座
'M' => $data[31], //一等座
'A9' => $data[32], //商务座
'F' => $data[33], //动卧
'YDW' => $data[36], //一等卧
'EDW' => $data[37], //二等卧
);
$j=0;
$soldoutnums = 0;
foreach($price->data as $key=>$value){
if($key != 'train_no'){
if(!is_numeric($key)){
$return_data->result[$i]->SeatList[$j] = new StdClass();
$return_data->result[$i]->SeatList[$j]->SeatCode = $key;
$return_data->result[$i]->SeatList[$j]->SeatName = get_name($key);
$value = str_replace('¥','',$value);
if(in_array($key, array('A3', 'A4', 'A5', 'A6', '3', '4', '5', '6', 'A', 'F', 'S','YDW','EDW'))){
if (stripos($return_data->result[$i]->TrainNo, "D") !== false || stripos($return_data->result[$i]->TrainNo, "G") !== false) {
$value = $value * 1.2;
$return_data->result[$i]->SeatList[$j]->ChildDiscut = 1;
}else{
$value = $value * 1.15;
$return_data->result[$i]->SeatList[$j]->ChildDiscut = 0.75;
}
}else{
$return_data->result[$i]->SeatList[$j]->ChildDiscut = 0.5;
}
/*
if (stripos($value, ".")) {//判断是否是整数,避免类似ecil(9.9*10)=100
$value = ceil($value);
}*/
$return_data->result[$i]->SeatList[$j]->SeatPrice = $this->currency->GetSiteMoney($value);
$return_data->result[$i]->SeatList[$j]->SeatPriceRMB = $value;
if($fromStation == 'LSO' || $toStation == 'LSO'){
$return_data->result[$i]->SeatList[$j]->ServiceCharge = 33;
}else{
$return_data->result[$i]->SeatList[$j]->ServiceCharge = 6;
}
if($fromStation == 'XJA' && stripos($return_data->result[$i]->TrainNo, "G") && $value > 500){
$return_data->result[$i]->SeatList[$j]->ServiceCharge = 10;
}
$return_data->result[$i]->SeatList[$j]->ServiceChargeRMB = $return_data->result[$i]->SeatList[$j]->ServiceCharge * $return_data->ExRate;
$return_data->result[$i]->SeatList[$j]->SeatInventory = $seat_yp_map[$key];
if($return_data->result[$i]->SeatList[$j]->SeatInventory == '有'){
$return_data->result[$i]->SeatList[$j]->SeatInventory = 99;
}elseif($return_data->result[$i]->SeatList[$j]->SeatInventory == '无'){
$return_data->result[$i]->SeatList[$j]->SeatInventory = 0;
$soldoutnums++;
}
$j++;
}
}
}
if($soldoutnums >= $j){
$return_data->result[$i]->soldout = true;
}else{
$return_data->result[$i]->soldout = false;
}
$i++;
}
print_r(json_encode($return_data));
}
}

@ -0,0 +1,365 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class intelTrainSearch extends CI_Controller{
public function __construct(){
parent::__construct();
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');
$this->load->helper('train');
$this->start_time = microtime(true);
$this->load->model("BIZ_intel_train_model");//国际火车模型
}
//国际火车获取
public function search_international_train(){
$trainFrom = $this->input->get_post('trainFrom');
$trainTo = $this->input->get_post('trainTo');
$trainDate = $this->input->get_post('trainDate');
if(empty($trainFrom) || empty($trainTo)){
header("HTTP/1.1 404 Not Found");
exit('{"status":"201","reason":"车站查询失败","data":""}');
}
//根据传过来的城市名称获取城市代码
$trainFromCode = $this->BIZ_intel_train_model->get_code_by_name($trainFrom);
$trainToCode = $this->BIZ_intel_train_model->get_code_by_name($trainTo);
if(empty($trainFromCode) || empty($trainToCode)){
header("HTTP/1.1 404 Not Found");
exit('{"status":"202","reason":"站点名转换失败","data":""}');
}
//获取车次信息
$obj = $this->BIZ_intel_train_model->get_train_info($trainFromCode->s_code,$trainToCode->s_code);
//如果结果为空则直接返回为空的结果
if(empty($obj)){
header("HTTP/1.1 404 Not Found");
exit('{"status":"203","reason":"无车次信息!","data":""}');
}
//处理返回的字符串
$return_json = new StdClass();
$return_json->status = '200';
$return_json->reason = '成功的返回';
$return_json->rate = $this->GetCurrencyRate();
$return_json->mainland_deliver = 9;
$return_json->others_deliver = 12;
$return_json->data = array();
$return_json->endata = array();
//如果有结果则进行字符串处理
foreach($obj as $key=>$item){
//发车规则处理
$item->trainrule = array();
$item->trainrule['include'] = array();
$item->trainrule['exclusive'] = array();
foreach(json_decode($item->DateRule)->DateRule as $key_rule=>$rules){
if(!empty($rules)){
if($key_rule == 'include'){
$item->trainrule['include'] = $rules;
}else if($key_rule == 'exclusive'){
$item->trainrule['exclusive'] = $rules;
}
}
}
//价格处理
$item->adult_seat = array();
$item->child_seat = array();
$price_arr = json_decode($item->seatPriceInfo2);
$audlt = $price_arr->price;
$child = $price_arr->cprice;
if(!empty($audlt)){
$i=0;
foreach($audlt as $key_adult=>$value){
$seat_name = $this->BIZ_intel_train_model->get_seatname($key_adult)->Seat_EName1;
$item->adult_seat[$i]['name'] = $seat_name;
$item->adult_seat[$i]['code'] = $key_adult;
$item->adult_seat[$i]['price'] = $value;
$item->adult_seat[$i]['pic'] = $this->BIZ_intel_train_model->get_seatname($key_adult)->Seat_Pic;
$i++;
}
}
if(!empty($child)){
$j=0;
foreach($child as $key_child=>$value){
$seat_name = $this->BIZ_intel_train_model->get_seatname($key_child)->Seat_EName1;
$item->child_seat[$j]['name'] = $seat_name;
$item->child_seat[$j]['code'] = $key_child;
$item->child_seat[$j]['price'] = $value;
$j++;
}
}
//最后进行当前日期判断,对数据进行分组
$flag = $this->checkDateRule($trainDate,$item->DateRule);
if(!$flag){
//将不符合发车日期的列车放入到另外一个数组中存储起来
array_push($return_json->endata,$obj[$key]);
}else{
array_push($return_json->data,$obj[$key]);
}
}
print_r(json_encode($return_json));
}
//获取所有的列车信息
public function get_all_inteltrain(){
$obj = $this->BIZ_intel_train_model->get_allinteltrain();
print_r(json_encode($obj));
}
//查询某一趟列车的途径站
public function search_train_station($train_no){
if(!$train_no){
header("HTTP/1.1 404 Not Found");
exit('{"status":"404","reason":"列车编号为空"}');
}
$arr = $this->BIZ_intel_train_model->get_train_station($train_no);
if(!empty($arr)){
echo json_encode($arr);
}else{
header("HTTP/1.1 404 Not Found");
exit('{"status":"404","reason":"途径站为空"}');
}
}
//获取国际火车出发规则
public function get_station_rules(){
//获取所有站点的列表
$return_json = array();
$return_json['TrainList'] = array();
$all_stations = $this->BIZ_intel_train_model->get_allstations();
$i = 0;
foreach($all_stations as $item){
$rule_arr = $this->BIZ_intel_train_model->get_train_rules($item->station_id);
if(!empty($rule_arr)){
$return_json['TrainList'][$i]['FromStation'] = $item->s_ename;
$return_json['TrainList'][$i]['FromCountry'] = $item->s_country;
$return_json['TrainList'][$i]['ToStations'] = array();
$j = 0;
foreach($rule_arr as $rule_info){
$return_json['TrainList'][$i]['ToStations'][$j]['Message'] = $rule_info->tsi_Message;
$return_json['TrainList'][$i]['ToStations'][$j]['Station'] = $rule_info->S_ename;
$return_json['TrainList'][$i]['ToStations'][$j]['StationCountry'] = $rule_info->s_country;
$j++;
}
$i++;
}
}
//print_r($return_json);
header('Content-type: application/json');
print_r(json_encode($return_json));
}
//获取国际火车出发规则
public function ch_station_rules(){
//获取所有站点的列表
$return_json = array();
$return_json['TrainList'] = array();
$all_stations = $this->BIZ_intel_train_model->ch_allstations();
$i = 0;
//print_r($all_stations);
$data = array();
foreach($all_stations as $item){
$todata = new stdClass();
if($item->fromStationName == 'Beijing West'){
$item->fromStationName = 'Beijing';
}
if(isset($data[$item->fromStationName])){
$todata->Message = $item->tsi_Message;
$todata->Station = $item->toStationName;
$todata->StationCountry = $item->toStationCountry;
array_push($data[$item->fromStationName]->ToStations,$todata);
}else{
$data[$item->fromStationName] = new stdClass();
$data[$item->fromStationName]->FromCountry = $item->fromStationCountry;
$data[$item->fromStationName]->FromStation = $item->fromStationName;
$data[$item->fromStationName]->ToStations = array();
$todata->Message = $item->tsi_Message;
$todata->Station = $item->toStationName;
$todata->StationCountry = $item->toStationCountry;
array_push($data[$item->fromStationName]->ToStations,$todata);
}
}
foreach ($data as $rules){
array_push($return_json['TrainList'],$rules);
}
header('Content-type: application/json');
print_r(json_encode($return_json));
}
function checkDateRule($strDate, $jsonDate){
if (!strtotime($strDate)) {
return false;
}
$strDate_t = strtotime($strDate);
$strDate = date("Y-m-d", $strDate_t);
$dYear = date("Y", $strDate_t);
$dMonth = date("m", $strDate_t);
$dDay = date("d", $strDate_t);
$dWeek = date("w", $strDate_t); //星期的第几天数组0-6
//单双日
if ($dDay % 2 == 0) {
$dSingle = 2;
} else {
$dSingle = 1;
}
$jObject = json_decode($jsonDate);
$result = false;
//先判断排除规则有一条符合就返回false
if (isset($jObject->DateRule->exclusive) ) {
$jObject_exclusive = $jObject->DateRule->exclusive;
foreach ($jObject_exclusive as $key => $val) {
if ($val->dateType=="EveryDay" ) { //每天,这个基本不会出现,设置每天排除和关闭没区别
return false;
} elseif ($val->dateType=="WeekDay" ) { //按星期
//先判断是否在日期范围内,再判断星期是否对应
$bw_CheckRange = false; //是否需要判断星期几
if ($val->dateRange == "*") { //每天
$bw_CheckRange = true;
} else {
$dateRange = explode("|", $val->dateRange); //日期范围
if (count($dateRange) == 2) {
if ($strDate_t >= strtotime($dateRange[0]) and $strDate_t <= strtotime($dateRange[1])) {
$bw_CheckRange = true; //在范围内
}
}
}
if ($bw_CheckRange) {
if ($dWeek==0) {
$dWeek=7; //星期0为星期天我们保存的星期天是7
}
$weekArr = explode(",", $val->dateData); //星期数据1,2,3,4,5,6,7这种
foreach ($weekArr as $week) {
if ($week == $dWeek) {
return false;
}
}
}
} elseif ($val->dateType == "SelectDay") { //固定日期
if ($val->dateRange=="*") {
$SelectDayArr = explode(",", $val->dateData);
foreach ($SelectDayArr as $sDay) {
if (strtotime($sDay) == $strDate_t) {
return false;
}
}
}
} elseif ($val->dateType == "RangeDay") { //连续日期
if ($val->dateRange == "*") {
$RangeDateArr = explode("|", $val->dateData);
if (count($RangeDateArr)==2) {
if ($strDate_t >= strtotime($RangeDateArr[0]) and $strDate_t <= strtotime($RangeDateArr[1])) {
return false ; //在范围内
}
}
}
}
}
}
//再判断包含规则有一条符合就为true
if (isset($jObject->DateRule->include)) {
$jObject_include = $jObject->DateRule->include;
foreach ($jObject_include as $key => $val) {
if ($val->dateType == "EveryDay") { //每天
return true;
} elseif ($val->dateType == "WeekDay") { //按星期
//先判断是否在日期范围内,再判断星期是否对应
$bw_CheckRange = false; //是否需要判断星期几
if ($val->dateRange == "*") { //每天
$bw_CheckRange = true;
} else {
$dateRange = explode("|", $val->dateRange); //日期范围
if (count($dateRange) == 2) {
if ($strDate_t >= strtotime($dateRange[0]) and $strDate_t <= strtotime($dateRange[1])) {
$bw_CheckRange = true; //在范围内
}
}
}
if ($bw_CheckRange) {
if ($dWeek == 0) {
$dWeek = 7; //星期0为星期天我们保存的星期天是7
}
$weekArr = explode(",", $val->dateData); //星期数据1,2,3,4,5,6,7这种
foreach ($weekArr as $week) {
if ($week == $dWeek) {
return true;
}
}
}
} elseif ($val->dateType=="MonthDay") { //每月单双
if ($val->dateRange=="*") {
$MonthDayArr = explode(",", rtrim($val->dateData, ',')); //月单双数据m3:2,m4:1
foreach ($MonthDayArr as $MonthKey) {
$MonthArr = explode(":", $MonthKey);
$Month = str_pad(str_replace("m", "", $MonthArr[0]), 2, "0", STR_PAD_LEFT); //存储的月份补0好比较
if ($dMonth == $Month) { //月份相同比较
if ($dSingle == $MonthArr[1]) {
return true;
}
}
}
}
} elseif ($val->dateType == "SelectDay") { //固定日期
if ($val->dateRange=="*") {
$SelectDayArr = explode(",", $val->dateData);
foreach ($SelectDayArr as $sDay) {
if (strtotime($sDay) == $strDate_t) {
return true;
}
}
}
} elseif ($val->dateType == "RangeDay") { //连续日期
if ($val->dateRange == "*") {
$RangeDateArr = explode("|", $val->dateData);
if (count($RangeDateArr)==2) {
if ($strDate_t >= strtotime($RangeDateArr[0]) and $strDate_t <= strtotime($RangeDateArr[1])) {
return true ; //在范围内
}
}
}
}
}
}
return $result;
}
}

@ -34,7 +34,7 @@ class pages extends CI_Controller{
foreach ($cold_sn as $v) { foreach ($cold_sn as $v) {
$list->info[$i] = new StdClass; $list->info[$i] = new StdClass;
$list->info[$i]->people = $this->BIZ_train_model->biz_people($v->COLD_SN); $list->info[$i]->people = $this->BIZ_train_model->biz_people($v->COLD_SN);
$list->info[$i]->train = $this->BIZ_train_model->get_biz_foi($v->COLD_SN); $list->info[$i]->train = $this->BIZ_train_model->biz_order_detail($v->COLD_SN);
$list->info[$i]->status = $this->BIZ_train_model->get_biz_jol($v->COLD_SN); $list->info[$i]->status = $this->BIZ_train_model->get_biz_jol($v->COLD_SN);
$i++; $i++;
} }

@ -79,4 +79,240 @@ function get_microtime (){
return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000); return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
} }
//余票转换
function ticket_exchange($price,$num,$iseven){
if($iseven){
if(isset($price) && is_numeric($num)){
if($price > 0){
return '有';
}else{
return '';
}
}
return '';
}else{
if(is_numeric($num)){
if($num == 0){
return '无';
}elseif($num >= 99){
return '有';
}else{
return $num;
}
}else{
if($num == '--'){
return '';
}
}
}
}
function checkNull($info){
if(empty($info)){
return '';
}else{
return $info;
}
}
function checkDateRule($strDate, $jsonDate){
if (!strtotime($strDate)) {
return false;
}
$strDate_t = strtotime($strDate);
$strDate = date("Y-m-d", $strDate_t);
$dYear = date("Y", $strDate_t);
$dMonth = date("m", $strDate_t);
$dDay = date("d", $strDate_t);
$dWeek = date("w", $strDate_t); //星期的第几天数组0-6
//单双日
if ($dDay % 2 == 0) {
$dSingle = 2;
} else {
$dSingle = 1;
}
$jObject = json_decode($jsonDate);
$result = false;
//先判断排除规则有一条符合就返回false
if (isset($jObject->DateRule->exclusive) ) {
$jObject_exclusive = $jObject->DateRule->exclusive;
foreach ($jObject_exclusive as $key => $val) {
if ($val->dateType=="EveryDay" ) { //每天,这个基本不会出现,设置每天排除和关闭没区别
return false;
} elseif ($val->dateType=="WeekDay" ) { //按星期
//先判断是否在日期范围内,再判断星期是否对应
$bw_CheckRange = false; //是否需要判断星期几
if ($val->dateRange == "*") { //每天
$bw_CheckRange = true;
} else {
$dateRange = explode("|", $val->dateRange); //日期范围
if (count($dateRange) == 2) {
if ($strDate_t >= strtotime($dateRange[0]) and $strDate_t <= strtotime($dateRange[1])) {
$bw_CheckRange = true; //在范围内
}
}
}
if ($bw_CheckRange) {
if ($dWeek==0) {
$dWeek=7; //星期0为星期天我们保存的星期天是7
}
$weekArr = explode(",", $val->dateData); //星期数据1,2,3,4,5,6,7这种
foreach ($weekArr as $week) {
if ($week == $dWeek) {
return false;
}
}
}
} elseif ($val->dateType == "SelectDay") { //固定日期
if ($val->dateRange=="*") {
$SelectDayArr = explode(",", $val->dateData);
foreach ($SelectDayArr as $sDay) {
if (strtotime($sDay) == $strDate_t) {
return false;
}
}
}
} elseif ($val->dateType == "RangeDay") { //连续日期
if ($val->dateRange == "*") {
$RangeDateArr = explode("|", $val->dateData);
if (count($RangeDateArr)==2) {
if ($strDate_t >= strtotime($RangeDateArr[0]) and $strDate_t <= strtotime($RangeDateArr[1])) {
return false ; //在范围内
}
}
}
}
}
}
//再判断包含规则有一条符合就为true
if (isset($jObject->DateRule->include)) {
$jObject_include = $jObject->DateRule->include;
foreach ($jObject_include as $key => $val) {
if ($val->dateType == "EveryDay") { //每天
return true;
} elseif ($val->dateType == "WeekDay") { //按星期
//先判断是否在日期范围内,再判断星期是否对应
$bw_CheckRange = false; //是否需要判断星期几
if ($val->dateRange == "*") { //每天
$bw_CheckRange = true;
} else {
$dateRange = explode("|", $val->dateRange); //日期范围
if (count($dateRange) == 2) {
if ($strDate_t >= strtotime($dateRange[0]) and $strDate_t <= strtotime($dateRange[1])) {
$bw_CheckRange = true; //在范围内
}
}
}
if ($bw_CheckRange) {
if ($dWeek == 0) {
$dWeek = 7; //星期0为星期天我们保存的星期天是7
}
$weekArr = explode(",", $val->dateData); //星期数据1,2,3,4,5,6,7这种
foreach ($weekArr as $week) {
if ($week == $dWeek) {
return true;
}
}
}
} elseif ($val->dateType=="MonthDay") { //每月单双
if ($val->dateRange=="*") {
$MonthDayArr = explode(",", rtrim($val->dateData, ',')); //月单双数据m3:2,m4:1
foreach ($MonthDayArr as $MonthKey) {
$MonthArr = explode(":", $MonthKey);
$Month = str_pad(str_replace("m", "", $MonthArr[0]), 2, "0", STR_PAD_LEFT); //存储的月份补0好比较
if ($dMonth == $Month) { //月份相同比较
if ($dSingle == $MonthArr[1]) {
return true;
}
}
}
}
} elseif ($val->dateType == "SelectDay") { //固定日期
if ($val->dateRange=="*") {
$SelectDayArr = explode(",", $val->dateData);
foreach ($SelectDayArr as $sDay) {
if (strtotime($sDay) == $strDate_t) {
return true;
}
}
}
} elseif ($val->dateType == "RangeDay") { //连续日期
if ($val->dateRange == "*") {
$RangeDateArr = explode("|", $val->dateData);
if (count($RangeDateArr)==2) {
if ($strDate_t >= strtotime($RangeDateArr[0]) and $strDate_t <= strtotime($RangeDateArr[1])) {
return true ; //在范围内
}
}
}
}
}
}
return $result;
}
function get_name($seat_code){
if($seat_code){
switch($seat_code){
case 'O' :
return 'Second Class Seat';
case 'A8' :
return 'Second Class Seat';
case 'A9' :
return 'Business Class Seat';
case 'P' :
return 'Superior';
case 'M' :
return 'First Class Seat';
case 'A7' :
return 'First Class Seat';
case 'A6' :
return 'Superior Soft Sleeper';
case 'A' :
return 'Superior Soft Sleeper';
case '5' :
return 'Hard Sleeper';
case 'S' :
return 'Soft Sleeper';
case 'A4' :
return 'Soft Sleeper';
case 'F' :
return 'New Soft Sleeper';
case 'A3' :
return 'Hard Sleeper';
case 'A2' :
return 'Soft Seat';
case 'A1' :
return 'Hard Seat';
case 'Q' :
return 'Tour Seat';
case 'H' :
return 'Other';
case 'WZ' :
return 'Standing-room Only';
case '13' :
return 'Standing-room Only';
case 'YDW' :
return 'Soft Sleeper';
case 'EDW' :
return 'Hard Sleeper';
}
}
}
?> ?>

@ -0,0 +1,187 @@
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/*
* 自动加载语种标签
*/
class Currency {
var $USD_Rate; //人民币兑美元汇率
var $EUR_Rate; //人民币兑欧元汇率
var $RUB_Rate; //人民币兑卢布汇率
public function __construct() {
$this->CI = & get_instance();
log_message('debug', "Language Tags Class Initialized");
$this->GetCurrencyRate();
}
function GetCurrencyRate() {
$this->HT = $this->CI->load->database('HT', TRUE);
$sql = "SELECT CRI_BuyIn / 100.00 AS tmpExRate, \n"
. " CRI_Code \n"
. "FROM tourmanager.dbo.CurrencyRateInfo \n"
. "WHERE CRI_Code IN ('USD', 'EUR', 'RUB') \n"
. " AND GETDATE() BETWEEN CRI_Start AND CRI_Stop";
$query = $this->HT->query($sql);
foreach ($query->result() as $item) {
switch ($item->CRI_Code) {
case 'USD':
$this->USD_Rate = $item->tmpExRate;
break;
case 'EUR':
$this->EUR_Rate = $item->tmpExRate;
break;
case 'RUB':
$this->RUB_Rate = $item->tmpExRate;
break;
}
}
// echo $this->USD_Rate . '<br/>';
// echo $this->EUR_Rate . '<br/>';
// echo $this->RUB_Rate . '<br/>';
return $query->result();
}
//根据人民币转换成站点对应的货币
public function GetSiteMoney($RMB) {
if (!is_numeric($RMB))
{
return $RMB;
}
$result = $RMB;
if (is_numeric($RMB)) {
switch (CONST_SITE_CURRENCY) {
case 'USD':
$result = $RMB / $this->USD_Rate;
break;
case 'EUR':
$result = $RMB / $this->EUR_Rate;
break;
case 'RUB':
$result = $RMB / $this->RUB_Rate;
break;
}
}
return ceil($result);
}
//把美金转换为人民币
public function get_USD_RMB_SUM($USD) {
if (!is_numeric($USD))return $USD;
$result = $USD;
$result = $USD * $this->USD_Rate;
return ceil($result);
}
/**
* 返回站点的汇率。
*
* @author lmr
*/
public function get_site_currencyrate() {
switch (CONST_SITE_CURRENCY) {
case 'USD':
return $this->USD_Rate;
case 'EUR':
return $this->EUR_Rate;
case 'RUB':
return $this->RUB_Rate;
default:
return 1;
}
}
/**
* 返回带money_char的价格。
*
* @param $money Int 价格.
* @return String 带货币符号的价格。
*/
public function get_money_char($money='') {
switch (CONST_SITE_CODE) {
case 'JP':
return $money.'元';
case 'GM':
return '€'.$money;
case 'VC':
return $money.'€';
case 'VAC':
return '$'.$money;
case 'RU':
return '$'.$money;
case 'IT':
return '€'.$money;
case 'SHT':
return '$'.$money;
default:
return '$'.$money;
}
}
/**
* 返回带money_char的价格。
*
* @param $money Int 价格.
* @return String 带货币符号的价格。
*/
public function get_site_money_with_char($money='') {
return $this->get_money_char($this->GetSiteMoney($money));
}
/**
* RMB换算成指定货币。
* @param int money RMB
* @param string char 货币代号usdeur
* @return int 换算价格
*/
public function convert_moneny_by_char($money,$char='')
{
switch (strtolower($char))
{
case 'usd':
return ceil($money/$this->USD_Rate);
case 'eur':
return ceil($money/$this->EUR_Rate);
}
return $money;
}
/**
* 尾数取"9"的定价规则
* 在正负误差值小于或等于16的前提下
* 保证展示价格的个位数和十位数统一取"99"
* 当展示价格的个位数和十位数取"99"的正负误差大于16时
* 通过四舍五入加价实现个位数取"9"
* 详细规则见GitLab issue #12 统一网前展示价格的标准
*/
public function calc_show_price($value=0) {
if (empty($value)) return 0;
if (!is_numeric($value)) return $value;
$val_len = strlen($value);
if ($val_len == 1) return 9;
$discount = 16;
$val_pow = pow(10, $val_len - 1);
$min_val = $val_pow - 1;
$max_val = $min_val + $val_pow;
$max_diff = abs($value - $max_val);
$min_diff = abs($value - $min_val);
if (min($max_diff, $min_diff) > $discount) {
$calc_val = floor($value / 10) * 10 + 9;
} else {
$calc_val = $max_diff > $min_diff ? $min_val : $max_val;
}
return $calc_val;
}
}

@ -0,0 +1,196 @@
<?php
class BIZ_intel_train_model extends CI_Model {
function __construct() {
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
//查询火车列表信息
public function get_train_info($trainFromCode,$trainToCode){
if($trainFromCode == 'CHBJ'){
$add = "OR tl.trainFromCode = 'CHPW'";
}else{
$add = "";
}
$sql = "
SELECT
tl.trainNo,
tl.trainFrom,
tl.trainFromCode,
(select s_country from TrainStation_intel where s_code = tl.trainFromCode) as from_country,
tl.trainTo,
tl.trainToCode,
(select s_country from TrainStation_intel where s_code = tl.trainToCode) as to_country,
tl.trainType,
tl.train_no,
tl.trainUse,
tl.RunTime,
tl.departTime,
(select top 1 trainArrive from trainlistDetail where train_no = tl.train_no order by trainOrder desc) as arriveTime,
tl.UseDay,
tl.DateRule,
tl.TrainMessage,
tp.seatPriceInfo2
FROM
trainlist tl
left join
trainPrice tp
on
tl.train_no = tp.train_no
WHERE
tl.isGlobal = 1
AND
(tl.trainFromCode = '{$trainFromCode}' {$add})
AND
tl.trainToCode = '{$trainToCode}'
AND
tl.DateRule != ''
AND
tp.seatPriceInfo2 IS NOT NULL
order by departTime asc
";
$query = $this->HT->query($sql);
return $query->result();
}
public function get_code_by_name($name){
$sql = "select s_code from TrainStation_intel where s_ename = '{$name}'";
$query = $this->HT->query($sql);
return $query->row();
}
public function get_seatname($seat_code){
$sql = "select Seat_EName1,Seat_Pic from TrainSeat_Intel where Seat_code = '{$seat_code}'";
$query = $this->HT->query($sql);
return $query->row();
}
//获取一列指定火车数据
public function get_one_train($train_no){
$sql = "
SELECT
*,
(select s_country from TrainStation_intel where trainFromCode = s_code ) as From_country,
(select s_country from TrainStation_intel where trainToCode = s_code ) as To_country,
(select top 1 trainArrive from trainlistDetail where train_no = tl.train_no order by trainOrder desc) as localarriveTime
FROM
trainlist tl
LEFT JOIN
trainPrice tp
ON
tl.train_no = tp.train_no
WHERE
tl.train_no = '{$train_no}'
AND
isGlobal = 1
";
$query = $this->HT->query($sql);
return $query->row();
}
public function get_allinteltrain(){
$sql = "
SELECT
*
FROM
TrainStation_intel
LEFT JOIN
trainlist
ON
s_code = trainFromCode
WHERE
trainFrom != 'NULL'
";
$query = $this->HT->query($sql);
return $query->result();
}
public function get_seat_info($seat_code){
$sql = "SELECT Seat_CName,Seat_EName1 FROM TrainSeat_Intel WHERE Seat_Code = '{$seat_code}'";
$query = $this->HT->query($sql);
return $query->row();
}
public function get_train_station($train_no){
$sql = "SELECT * FROM trainlistDetail WHERE train_no = '{$train_no}' order by trainOrder asc";
$query = $this->HT->query($sql);
return $query->result();
}
public function get_allstations(){
$sql = "SELECT * FROM TrainStation_intel where station_id != 1";
$query = $this->HT->query($sql);
return $query->result();
}
public function ch_allstations(){
$sql = "select
tsi1.s_ename as fromStationName,
tsi1.s_country as fromStationCountry,
tsi2.s_ename as toStationName,
tsi2.s_country as toStationCountry,
tsi_Message
from TrainSearch_intel
left join
TrainStation_intel tsi1
ON
tsi1.station_id = tsi_FromStation
left join
TrainStation_intel tsi2
ON
tsi2.station_id = tsi_ToStation
where tsi1.s_country = 'china' or tsi2.s_country = 'china'
";
$query = $this->HT->query($sql);
return $query->result();
}
public function get_train_rules($station_id){
if($station_id == 11){
$station = "or tsi_FromStation = 10";
}elseif($station_id == 2){
$station = "or tsi_FromStation = 9";
}else{
$station = "";
}
$sql = "SELECT
S_ename,s_country,tsi_Message
FROM
TrainSearch_intel
LEFT JOIN
TrainStation_intel
ON
tsi_ToStation = station_id
where
tsi_FromStation = '{$station_id}'";
$sql .= $station;
$query = $this->HT->query($sql);
return $query->result();
}
public function ch_train_rules($station_id){
if($station_id == 11){
$station = "or tsi_FromStation = 10";
}elseif($station_id == 2){
$station = "or tsi_FromStation = 9";
}else{
$station = "";
}
$sql = "SELECT
S_ename,s_country,tsi_Message
FROM
TrainSearch_intel
LEFT JOIN
TrainStation_intel
ON
tsi_ToStation = station_id
where
(tsi_FromStation = ?)
";
$sql .= $station;
$query = $this->HT->query($sql,array($station_id));
return $query->result();
}
}

@ -8,45 +8,6 @@ class BIZ_train_model extends CI_Model {
$this->INFO = $this->load->database('INFO', TRUE); $this->INFO = $this->load->database('INFO', TRUE);
} }
//获取订单信息
function biz_order_detail($cold_sn) {
$sql = "
SELECT TOP 1 bfoi.FOI_SN
,bfoi.FOI_COLD_SN
,bfoi.DepartAirport
,bfoi.ArrivalAirport
,bfoi.FlightsNo
,bfoi.Aircraft
,bfoi.DepartureDate
,bfoi.FOI_SelectedSeat
,(
SELECT TOP 1 TRS_StationCN
FROM TrainStation
WHERE TRS_Code = DepartAirport
and ISNULL(TRS_StationCN,'')<>''
) AS DepartAirport_cn
,(
SELECT TOP 1 TRS_StationCN
FROM TrainStation
WHERE TRS_Code = ArrivalAirport
and ISNULL(TRS_StationCN,'')<>''
) AS ArrivalAirport_cn,
FOI_TrainNetOrderNo,
bfoi.adultcost,
bfoi.childcost,
ArrivalTime,
DepartureTime
FROM BIZ_FlightsOrderInfo bfoi
WHERE bfoi.FOI_COLD_SN = ?
";
$query = $this->HT->query($sql, $cold_sn);
if ($query->num_rows() > 0) {
return $query->row();
} else {
return false;
}
}
//传入一组BPE_SN获取乘客信息 //传入一组BPE_SN获取乘客信息
function in_bpesn_people_info($bpe_sn){ function in_bpesn_people_info($bpe_sn){
$sql = " $sql = "
@ -100,39 +61,49 @@ class BIZ_train_model extends CI_Model {
return $query->result(); return $query->result();
} }
//传入COLD_SN获取火车车次等信息 //获取订单信息
function get_biz_foi($cold_sn) { function biz_order_detail($cold_sn) {
$sql = " $sql = "
SELECT FOI_COLD_SN, SELECT TOP 1 bfoi.FOI_SN
FlightsNo, ,bfoi.DepartureCity
Cabin, ,bfoi.ArrivalCity
Aircraft, ,bfoi.FOI_COLD_SN
DepartureCity, ,bfoi.DepartAirport
DepartAirport, ,bfoi.ArrivalAirport
ArrivalAirport, ,bfoi.FlightsNo
ArrivalCity, ,bfoi.Aircraft
DepartureDate, ,bfoi.Cabin
DepartureTime, ,bfoi.DepartureDate
ArrivalTime, ,bfoi.FOI_SelectedSeat
adultcost, ,(
FOI_SelectedSeat,
FOI_TrainNetOrderNo,
FOI_SaleDate,
(
SELECT TOP 1 TRS_StationCN SELECT TOP 1 TRS_StationCN
FROM TrainStation FROM TrainStation
WHERE TRS_Code = DepartAirport WHERE TRS_Code = DepartAirport
and ISNULL(TRS_StationCN,'')<>''
) AS DepartAirport_cn ) AS DepartAirport_cn
,( ,(
SELECT TOP 1 TRS_StationCN SELECT TOP 1 TRS_StationCN
FROM TrainStation FROM TrainStation
WHERE TRS_Code = ArrivalAirport WHERE TRS_Code = ArrivalAirport
) AS ArrivalAirport_cn and ISNULL(TRS_StationCN,'')<>''
FROM BIZ_FlightsOrderInfo ) AS ArrivalAirport_cn,
WHERE FOI_COLD_SN = ? FOI_TrainNetOrderNo,
"; bfoi.adultcost,
bfoi.childcost,
bfoi.adultprice,
bfoi.childprice,
bfoi.ArrivalTime,
bfoi.DepartureTime,
bfoi.FOI_SaleDate
FROM BIZ_FlightsOrderInfo bfoi
WHERE bfoi.FOI_COLD_SN = ?
";
$query = $this->HT->query($sql, $cold_sn); $query = $this->HT->query($sql, $cold_sn);
return $query->result(); if ($query->num_rows() > 0) {
return $query->row();
} else {
return false;
}
} }
//传入COLD_SN获取BIZ_JuheOrderList是否存在此子订单用来判断是否提交过给聚合 //传入COLD_SN获取BIZ_JuheOrderList是否存在此子订单用来判断是否提交过给聚合
@ -366,8 +337,8 @@ class BIZ_train_model extends CI_Model {
//获取paypal付款记录 //获取paypal付款记录
function get_paypal($coli_id){ function get_paypal($coli_id){
$sql = "select top 1 GAI_SQJE,GAI_SQJECurrency from BIZ_GroupAccountInfo where GAI_COLI_ID = ?"; $sql = " select GAI_SQJE,GAI_SQJECurrency,COLI_Price from BIZ_ConfirmLineInfo left join BIZ_GroupAccountInfo on COLI_ID = GAI_COLI_ID where COLI_ID = ?";
$query = $query = $this->HT->query($sql, $coli_id); $query = $query = $this->HT->query($sql, $coli_id);
if ($query->num_rows() > 0) { if ($query->num_rows() > 0) {
return $query->row(); return $query->row();
} else { } else {
@ -487,9 +458,9 @@ class BIZ_train_model extends CI_Model {
//根据订单号获取所有子订单号 //根据订单号获取所有子订单号
public function getAllColdSn($coliId){ public function getAllColdSn($coliId){
$sql = "select cold_sn from BIZ_ConfirmLineInfo left join BIZ_ConfirmLineDetail on coli_sn = cold_coli_sn where coli_id = ? and COLI_servicetype = '2'"; $sql = "select cold_sn,COLI_ApplyDate from BIZ_ConfirmLineInfo left join BIZ_ConfirmLineDetail on coli_sn = cold_coli_sn where coli_id = ? and COLI_servicetype = '2'";
$query = $this->HT->query($sql, array($coliId)); $query = $this->HT->query($sql, array($coliId));
return $query->result(); return $query->result();
} }
//通过COLI_ID获取团名 即 GroupInfo的GRI_No //通过COLI_ID获取团名 即 GroupInfo的GRI_No

@ -0,0 +1,68 @@
<?php
class ctrip_model extends CI_Model {
function __construct() {
parent::__construct();
$this->INFO = $this->load->database('INFO', TRUE);
}
//新增或更新缓存
public function AddOrUpdate($data){
$sql = "IF NOT EXISTS(
SELECT 1
FROM train_stations
WHERE
station_telecode = '{$data['Telecode']}'
) BEGIN
INSERT INTO train_stations
(
station_name,
station_telecode,
station_geography,
station_pinyin,
station_address
)
VALUES
(
'{$data['StationName']}','{$data['Telecode']}','{$data['Geography']}','{$data['PinYin']}','{$data['Address']}'
)
END
ELSE
BEGIN
UPDATE train_stations
SET station_name = '{$data['StationName']}',
station_geography = '{$data['Geography']}',
station_pinyin = '{$data['PinYin']}',
station_address = '{$data['Address']}'
WHERE
station_telecode = '{$data['Telecode']}'
END
";
$query = $this->INFO->query($sql);
return $query;
}
//获取缓存的火车信息
//如果读取到缓存是7天以前的数据就不返回任何数据并且将其删除。
public function get_train_cache($tpc_from_station,$tpc_to_station){
$sql = "SELECT
*
FROM
TrainPriceCache
WHERE
tpc_from_station = '$tpc_from_station'
AND
tpc_to_station = '$tpc_to_station'";
$query = $this->INFO->query($sql);
return $query->row();
}
//根据三字码获取车站中文名
public function ReplaceCodeToName($code){
$sql = "SELECT station_name from train_stations where station_telecode = '{$code}'";
$query = $this->INFO->query($sql);
return $query->row();
}
}
?>

@ -232,11 +232,9 @@ class train_system_model extends CI_Model {
//获取订单出票状态 //获取订单出票状态
public function get_tickets_info($cold_sn){ public function get_tickets_info($cold_sn){
$sql = "select ts_cold_sn,ts_ordernumber,tst_realname,tst_numberid,tst_status from trainsystem left join trainsystem_tickets on ts_ordernumber = tst_ordernumber where ts_cold_sn = ? and ts_status = '4'"; $sql = "select top 1 ts_status,ts_ordernumber,ts_elecnumber,ts_seatsinfo from trainsystem where ts_cold_sn = ? and ts_status in ('4','7') order by ts_subtime desc";
$query = $this->INFO->query($sql,array($cold_sn)); $query = $this->INFO->query($sql,array($cold_sn));
//$sql = "select * from BIZ_JuheOrderList where JOL_COLD_SN = ? and jol_status = '4'"; return $query->row();
//$query = $this->HT->query($sql,array($cold_sn));
return $query->result();
} }
//获取所有订单 //获取所有订单

@ -114,16 +114,16 @@ function selseat(seat){
<tr> <tr>
<td><?php echo $num++;?></td> <td><?php echo $num++;?></td>
<td><?php echo $v->train[0]->FlightsNo;?></td> <td><?php echo $v->train->FlightsNo;?></td>
<td><?php echo $v->train[0]->Cabin;?></td> <td><?php echo $v->train->Cabin;?></td>
<td><?php echo $v->train[0]->DepartureCity;?></td> <td><?php echo $v->train->DepartureCity;?></td>
<td><?php echo $v->train[0]->ArrivalCity;?></td> <td><?php echo $v->train->ArrivalCity;?></td>
<td><?php echo $v->train[0]->DepartureDate;?></td> <td><?php echo $v->train->DepartureDate;?></td>
<td><?php echo $v->train[0]->DepartureTime;?></td> <td><?php echo $v->train->DepartureTime;?></td>
<td><?php echo $v->train[0]->ArrivalTime;?></td> <td><?php echo $v->train->ArrivalTime;?></td>
<td><?php echo $v->train[0]->adultcost;?></td> <td><?php echo $v->train->adultcost;?></td>
<td><?php echo !empty($v->status)?"否":"<span style='color:green;'>是</span>";?></td> <td><?php echo !empty($v->status)?"否":"<span style='color:green;'>是</span>";?></td>
<td><input type="checkbox" name="istanding_<?php echo $v->train[0]->FOI_COLD_SN;?>"/></td> <td><input type="checkbox" name="istanding_<?php echo $v->train->FOI_COLD_SN;?>"/></td>
</tr> </tr>
<tr> <tr>
<td colspan="11"> <td colspan="11">
@ -154,12 +154,12 @@ function selseat(seat){
<tr style="text-align:;"> <tr style="text-align:;">
<td colspan="11" class="selectticket"> <td colspan="11" class="selectticket">
<?php <?php
$traintype = substr($v->train[0]->FlightsNo,0,1); $traintype = substr($v->train->FlightsNo,0,1);
$arr = array('C','D','G'); $arr = array('C','D','G');
$sel_count = 0; $sel_count = 0;
if(in_array($traintype,$arr)){ if(in_array($traintype,$arr)){
$selectseat = ''; $selectseat = '';
$train_select = $v->train[0]->FOI_SelectedSeat; $train_select = $v->train->FOI_SelectedSeat;
$a1=$b1=$c1=$d1=$f1=$a2=$b2=$c2=$d2=$f2=false; $a1=$b1=$c1=$d1=$f1=$a2=$b2=$c2=$d2=$f2=false;
if($train_select){ if($train_select){
$obj = explode(',',$train_select); $obj = explode(',',$train_select);
@ -209,7 +209,7 @@ function selseat(seat){
} }
} }
$html = ''; $html = '';
$html .= '<div class="train-summary">'.$v->train[0]->Cabin.' for '.$v->train[0]->FlightsNo.' <span>(<span class="selected_People">'.$sel_count.'</span> of <span class="seat_TotalPeople">'.count($v->people).'</span> Seats)</span></div>'; $html .= '<div class="train-summary">'.$v->train->Cabin.' for '.$v->train->FlightsNo.' <span>(<span class="selected_People">'.$sel_count.'</span> of <span class="seat_TotalPeople">'.count($v->people).'</span> Seats)</span></div>';
$html .= '<div class="seatPick">'; $html .= '<div class="seatPick">';
if($a1){ if($a1){
$html .= '<a class="seat-a selected_seat-a selected" type="seat-a" href="javascript:void(0);" data="1A" onclick ="selseat(this)";></a>'; $html .= '<a class="seat-a selected_seat-a selected" type="seat-a" href="javascript:void(0);" data="1A" onclick ="selseat(this)";></a>';
@ -217,7 +217,7 @@ function selseat(seat){
$html .= '<a class="seat-a" type="seat-a" href="javascript:void(0);" data="1A" onclick ="selseat(this)";></a>'; $html .= '<a class="seat-a" type="seat-a" href="javascript:void(0);" data="1A" onclick ="selseat(this)";></a>';
} }
if($v->train[0]->Aircraft == 'O' || $v->train[0]->Aircraft == '8'){ if($v->train->Aircraft == 'O' || $v->train->Aircraft == '8'){
if($b1){ if($b1){
$html .= '<a class="seat-b selected_seat-b selected" type="seat-b" href="javascript:void(0);" data="1B" onclick ="selseat(this);"></a>'; $html .= '<a class="seat-b selected_seat-b selected" type="seat-b" href="javascript:void(0);" data="1B" onclick ="selseat(this);"></a>';
}else{ }else{
@ -231,7 +231,7 @@ function selseat(seat){
$html .= '<a class="seat-c" type="seat-c" href="javascript:void(0);" data="1C" onclick ="selseat(this);"></a>'; $html .= '<a class="seat-c" type="seat-c" href="javascript:void(0);" data="1C" onclick ="selseat(this);"></a>';
} }
if($v->train[0]->Aircraft != '9'){ if($v->train->Aircraft != '9'){
if($d1){ if($d1){
$html .= '<a class="seat-d selected_seat-d selected" type="seat-d" href="javascript:void(0);" data="1D" onclick ="selseat(this);"></a>'; $html .= '<a class="seat-d selected_seat-d selected" type="seat-d" href="javascript:void(0);" data="1D" onclick ="selseat(this);"></a>';
}else{ }else{
@ -253,7 +253,7 @@ function selseat(seat){
$html .= '<a class="seat-a" type="seat-a" href="javascript:void(0);" data="2A" onclick ="selseat(this)";></a>'; $html .= '<a class="seat-a" type="seat-a" href="javascript:void(0);" data="2A" onclick ="selseat(this)";></a>';
} }
if($v->train[0]->Aircraft == 'O' || $v->train[0]->Aircraft == '8'){ if($v->train->Aircraft == 'O' || $v->train->Aircraft == '8'){
if($b2){ if($b2){
$html .= '<a class="seat-b selected_seat-b selected" type="seat-b" href="javascript:void(0);" data="2B" onclick ="selseat(this);"></a>'; $html .= '<a class="seat-b selected_seat-b selected" type="seat-b" href="javascript:void(0);" data="2B" onclick ="selseat(this);"></a>';
}else{ }else{
@ -267,7 +267,7 @@ function selseat(seat){
$html .= '<a class="seat-c" type="seat-c" href="javascript:void(0);" data="2C" onclick ="selseat(this);"></a>'; $html .= '<a class="seat-c" type="seat-c" href="javascript:void(0);" data="2C" onclick ="selseat(this);"></a>';
} }
if($v->train[0]->Aircraft != '9'){ if($v->train->Aircraft != '9'){
if($d2){ if($d2){
$html .= '<a class="seat-d selected_seat-d selected" type="seat-d" href="javascript:void(0);" data="2D" onclick ="selseat(this);"></a>'; $html .= '<a class="seat-d selected_seat-d selected" type="seat-d" href="javascript:void(0);" data="2D" onclick ="selseat(this);"></a>';
}else{ }else{
@ -283,7 +283,7 @@ function selseat(seat){
$html .= '<div class="clear"></div></div>'; $html .= '<div class="clear"></div></div>';
if($v->train[0]->Aircraft != 'F'){ if($v->train->Aircraft != 'F'){
echo $html; echo $html;
} }
} }
@ -292,21 +292,21 @@ function selseat(seat){
</tr> </tr>
<tr style="text-align:;"> <tr style="text-align:;">
<td> <td>
<button type="button" class="btn btn-success checked_pay" data-order="<?php echo $v->train[0]->FOI_COLD_SN;?>">聚合订票</button> <button type="button" class="btn btn-success checked_pay" data-order="<?php echo $v->train->FOI_COLD_SN;?>">聚合订票</button>
</td> </td>
<td colspan="4" class="biaoqian"><span class="back_mes" style="color:red;line-height: 30px;"></span> <td colspan="4" class="biaoqian"><span class="back_mes" style="color:red;line-height: 30px;"></span>
</td> </td>
</tr> </tr>
<tr style="text-align:;"> <tr style="text-align:;">
<td> <td>
<button type="button" class="btn btn-success ctrip_pay" data-order="<?php echo $v->train[0]->FOI_COLD_SN;?>">携程订票</button> <button type="button" class="btn btn-success ctrip_pay" data-order="<?php echo $v->train->FOI_COLD_SN;?>">携程订票</button>
</td> </td>
<td colspan="4" class="biaoqian"><span class="ctrip_back_mes" style="color:red;line-height: 30px;"></span> <td colspan="4" class="biaoqian"><span class="ctrip_back_mes" style="color:red;line-height: 30px;"></span>
</td> </td>
</tr> </tr>
<tr style="text-align:;"> <tr style="text-align:;">
<td> <td>
<button type="button" class="btn btn-success grab_ticket" data-order="<?php echo $v->train[0]->FOI_COLD_SN;?>">抢票</button> <button type="button" class="btn btn-success grab_ticket" data-order="<?php echo $v->train->FOI_COLD_SN;?>">抢票</button>
</td> </td>
<td colspan="4"> <td colspan="4">
<span class="grab_config"><a style="text-decoration:none;cursor:pointer;">点击打开配置清单</a></span> <span class="grab_config"><a style="text-decoration:none;cursor:pointer;">点击打开配置清单</a></span>
@ -323,7 +323,7 @@ function selseat(seat){
</td> </td>
</tr> </tr>
<tr id="back_<?php echo $v->train[0]->FOI_COLD_SN;?>" style="display:none;"> <tr id="back_<?php echo $v->train->FOI_COLD_SN;?>" style="display:none;">
<td colspan="5"> <td colspan="5">
快捷订票处理结果:<span style="color:red;"></span> 快捷订票处理结果:<span style="color:red;"></span>
</td> </td>

@ -268,30 +268,64 @@ class Index extends CI_Controller {
} }
} }
public function get_destination_reviews($destination = null,$pagenum = null){ //获取目的地
public function get_destination_reviews(){
set_time_limit(0); set_time_limit(0);
$ta_website = $this->config->item('tripadvisor_website'); $ta_website = $this->config->item('tripadvisor_website');
$destination = $this->input->get_post('destination');
$pagenum = $this->input->get_post('pagenum');
$product_links = $this->input->get_post('product_links');
//根据传入的目的地简码获取TA的相应评论列表 if($product_links != ''){
if(isset($ta_website[$destination])){
$url = $ta_website[$destination];
if($pagenum != ''){ if($pagenum != ''){
$url = str_replace('{PAGENUM}','-or'.$pagenum,$url); $product_links = str_replace('{PAGENUM}','-or'.$pagenum,$product_links);
}else{ }else{
$url = str_replace('{PAGENUM}','',$url); $product_links = str_replace('{PAGENUM}','',$product_links);
} }
//根据url获取页面内容 $content = GET_HTTP($product_links);
$html_object = str_get_html($content);
$urlList = $html_object->find('._1T1U92WJ ._2cigFICy a');
$data = new stdClass();
$data->urls = array();
foreach ($urlList as $key=>$url){
$data->urls[$key] = 'https://www.tripadvisor.com'.$url->href;
}
print_r(json_encode($data));
}else{
return ;
}
}
//获取产品内评论URL
public function get_reviews_url(){
set_time_limit(0);
$url = $this->input->get_post('url');
$url = 'https://www.tripadvisor.com/AttractionProductReview-g294212-d11463418-Mini_Group_2_Day_Beijing_Highlights_and_Great_Wall_Tour-Beijing.html';
if($url != ''){
$content = GET_HTTP($url); $content = GET_HTTP($url);
//进行页面解析
$html_object = str_get_html($content); $html_object = str_get_html($content);
$return = new stdClass();
$return->urls = array(); $urlList = $html_object->find('._1T1U92WJ ._2cigFICy a');
//获取每个页面上的url
foreach ($html_object->find('.reviewSelector .quote a') as $reviews_url){ $data = new stdClass();
array_push($return->urls,'https://www.tripadvisor.com'.$reviews_url->href); $data->urls = array();
foreach ($urlList as $key=>$url){
$data->urls[$key] = 'https://www.tripadvisor.com'.$url->href;
} }
print_r(json_encode($return));
print_r(json_encode($data));
}else{
return ;
} }
} }
@ -312,6 +346,7 @@ class Index extends CI_Controller {
$html_num = $this->input->get_post('html_num'); $html_num = $this->input->get_post('html_num');
$group_name = $this->input->get_post('group_name'); $group_name = $this->input->get_post('group_name');
$guidename = $this->input->get_post('guidename'); $guidename = $this->input->get_post('guidename');
$product_code = $this->input->get_post('product_code');
//$url = 'https://www.tripadvisor.com/ShowUserReviews-g308272-d6222868-r599123490-Shanghai_Trippest_Mini_Group_Tours-Shanghai.html'; //$url = 'https://www.tripadvisor.com/ShowUserReviews-g308272-d6222868-r599123490-Shanghai_Trippest_Mini_Group_Tours-Shanghai.html';
//$destination = 'tp_Beijing'; //$destination = 'tp_Beijing';
@ -326,6 +361,7 @@ class Index extends CI_Controller {
$detail_data->group_name = $group_name; $detail_data->group_name = $group_name;
$detail_data->links = $url; $detail_data->links = $url;
$detail_data->guidename = $guidename; $detail_data->guidename = $guidename;
$detail_data->product_code = $product_code;
//提取局部,不做整个页面的寻找元素,提升效率 //提取局部,不做整个页面的寻找元素,提升效率
$meta_inner = $html_object->find('.meta_inner'); $meta_inner = $html_object->find('.meta_inner');
@ -398,19 +434,64 @@ class Index extends CI_Controller {
header("HTTP/1.1 404 Not Found"); header("HTTP/1.1 404 Not Found");
exit('{"status":"404","reason":"请输入站点代码!"}'); exit('{"status":"404","reason":"请输入站点代码!"}');
}else{ }else{
$return_data = array(); $product_code = $this->input->get_post('productCode');
$ta_website = $this->config->item('tripadvisor_website'); $num = $this->input->get_post("num");
if(empty($ta_website[$destination])){ if ($num==false || !is_numeric($num)){
header("HTTP/1.1 404 Not Found"); $num=5;
exit('{"status":"404","reason":"请输入正确的站点代码!"}');
} }
$return_data['list_url'] = str_replace('{PAGENUM}','',$ta_website[$destination]); if(empty($product_code)){
$return_data = array();
$ta_website = $this->config->item('tripadvisor_website');
if(empty($ta_website[$destination])){
header("HTTP/1.1 404 Not Found");
exit('{"status":"404","reason":"请输入正确的站点代码!"}');
}
$return_data['list_url'] = str_replace('{PAGENUM}','',$ta_website[$destination]);
}
//根据站点获取评论 //根据站点获取评论
$list_reviews = $this->Tripadvisor_Review_model->get_fivelatestreviews($destination); $list_reviews = $this->Tripadvisor_Review_model->get_fivelatestreviews($destination,$product_code,$num);
$return_data['list_reviews'] = $list_reviews; $return_data['list_reviews'] = $list_reviews;
print_r(json_encode($return_data)); print_r(json_encode($return_data));
} }
} }
public function get_production_code(){
$destination = $this->input->get_post('destination');
if($destination != ''){
$productions_info = $this->Tripadvisor_Review_model->get_productions_info($destination);
print_r(json_encode($productions_info));
}
}
public function add_production(){
$config_destination = $this->input->get_post('config_destination');
$production_code = $this->input->get_post('production_code');
$production_link = $this->input->get_post('production_link');
if($production_link != ''){
//添加换页参数
$arr = explode('-',$production_link);
$arr['2'] = $arr['2'].'{PAGENUM}';
$production_link = implode('-',$arr);
if($config_destination && $production_code && $production_link){
$flag = $this->Tripadvisor_Review_model->add_config_production($config_destination,$production_code,$production_link);
exit('{"status":"200","reason":"添加成功"}');
}
}else{
exit('请输入参数');
}
}
public function deleteconfig(){
$configId = $this->input->get_post('config_id');
if(!empty($configId)){
$this->Tripadvisor_Review_model->delete_config($configId);
}
}
} }

@ -182,12 +182,13 @@ class Tripadvisor_Review_model extends CI_Model {
tr_gri_no, tr_gri_no,
tr_links, tr_links,
tr_guidename, tr_guidename,
tr_product_code,
tr_datetime tr_datetime
)values( )values(
?,?,?,?,?,?,?,?,?,?,?,?,?,GETDATE() ?,?,?,?,?,?,?,?,?,?,?,?,?,?,GETDATE()
) )
"; ";
$query = $this->INFO->query($sql, array($detail_data->review_id,$detail_data->destination,$detail_data->review_id,$detail_data->title,$detail_data->content,$detail_data->review_name,$detail_data->user_loc,$detail_data->star_nums,$detail_data->rating_date,$detail_data->experience_date,json_encode($detail_data->pic),$detail_data->group_name,$detail_data->links,$detail_data->guidename)); $query = $this->INFO->query($sql, array($detail_data->review_id,$detail_data->destination,$detail_data->review_id,$detail_data->title,$detail_data->content,$detail_data->review_name,$detail_data->user_loc,$detail_data->star_nums,$detail_data->rating_date,$detail_data->experience_date,json_encode($detail_data->pic),$detail_data->group_name,$detail_data->links,$detail_data->guidename,$detail_data->product_code));
//$result = $query->result(); //$result = $query->result();
} }
@ -197,20 +198,34 @@ class Tripadvisor_Review_model extends CI_Model {
return $query->result(); return $query->result();
} }
public function get_fivelatestreviews($destination){ public function get_fivelatestreviews($destination,$product_code=null,$num=5){
$sql = "select top 5 if(!empty($product_code)){
tr_review_title, $where = "and tr_product_code = '{$product_code}'";
tr_content, }else{
tr_member_name, $where = '';
tr_member_loc, }
tr_member_starts, $sql = "select top ".$num."
tr_review_date, *
tr_visited_date, from Ta_Reviews where tr_destination = ? {$where} and tr_member_starts = '5' order by tr_review_date desc";
tr_review_pics,
tr_datetime
from Ta_Reviews where tr_destination = ? and tr_member_starts = '5' order by tr_review_date desc";
$query = $this->INFO->query($sql,array($destination)); $query = $this->INFO->query($sql,array($destination));
return $query->result(); return $query->result();
} }
public function add_config_production($config_destination,$production_code,$production_link){
$sql = 'IF NOT EXISTS(
select trc_code from Ta_Reviews_Config where trc_code = ?
)insert into Ta_Reviews_Config (trc_destination,trc_code,trc_links) values (?,?,?)';
$query = $this->INFO->query($sql,array($production_code,$config_destination,$production_code,$production_link));
}
public function get_productions_info($destination){
$sql = 'select * from Ta_Reviews_Config where trc_destination = ?';
$query = $this->INFO->query($sql,array($destination));
return $query->result();
}
public function delete_config($id){
$sql = "delete from Ta_Reviews_Config where trc_id = ?";
$query = $this->INFO->query($sql,array($id));
}
} }

@ -7,7 +7,7 @@
<div class="panel-body"> <div class="panel-body">
<div class="method_select"> <div class="method_select">
<ul class="nav nav-tabs" role="tablist"> <ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"> <li role="presentation">
<a href="#handinput" aria-controls="handinput" role="tab" data-toggle="tab">手动录入</a> <a href="#handinput" aria-controls="handinput" role="tab" data-toggle="tab">手动录入</a>
</li> </li>
<li role="presentation"> <li role="presentation">
@ -19,9 +19,12 @@
<li role="presentation"> <li role="presentation">
<a href="#list_view" aria-controls="list_view" role="tab" data-toggle="tab">数据预览</a> <a href="#list_view" aria-controls="list_view" role="tab" data-toggle="tab">数据预览</a>
</li> </li>
<li role="presentation" class="active">
<a href="#config_view" aria-controls="list_view" role="tab" data-toggle="tab">配置中心</a>
</li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="handinput"> <div role="tabpanel" class="tab-pane" id="handinput">
<div class="row" style="margin-top:10px;"> <div class="row" style="margin-top:10px;">
<div class="col-md-18"> <div class="col-md-18">
<input class="form-control" id="ta_url" type="text" autocomplete="off" /> <input class="form-control" id="ta_url" type="text" autocomplete="off" />
@ -70,26 +73,38 @@
<div role="tabpanel" class="tab-pane" id="listinput"> <div role="tabpanel" class="tab-pane" id="listinput">
<div class="row" style="margin-top:10px;"> <div class="row" style="margin-top:10px;">
<div class="col-md-9"> <div class="col-md-7">
<select name="destination" class="form-control" id="destination"> <select name="destination" class="form-control" id="destination">
<option value="">选择站点</option> <option value="">选择站点</option>
<option value="tp_Beijing">tp_Beijing</option> <option value="tp_Beijing">tp_Beijing</option>
<option value="tp_Shanghai">tp_Shanghai</option> <option value="tp_Shanghai">tp_Shanghai</option>
<option value="tp_Guilin">tp_Guilin</option> <option value="tp_Guilin">tp_Guilin</option>
<option value="tp_Xian">tp_Xian</option>
<option value="tp_Zhangjiajie">tp_Zhangjiajie</option>
<option value="tp_Hangzhou">tp_Hangzhou</option>
<option value="tp_Hangzhou">tp_Chengdu</option>
<option value="train">train</option> <option value="train">train</option>
</select> </select>
</div> </div>
<div class="col-md-9"> <div class="col-md-7">
<select name="production" class="form-control" id="production">
<option value="">选择产品</option>
</select>
</div>
<div class="col-md-7">
<select name="nums" class="form-control" id="pagenums"> <select name="nums" class="form-control" id="pagenums">
<option value="">选择抓取条数</option> <option value="">选择抓取条数</option>
<option value="">1~10</option> <option value="">1~5</option>
<option value="10">11~20</option> <option value="5">6~10</option>
<option value="20">21~30</option> <option value="10">11~15</option>
</select> </select>
</div> </div>
<div class="col-md-6"> <div class="col-md-3">
<a href="#" id="batchcontents" class="btn btn-info">批量抓取</a> <a href="#" id="batchcontents" class="btn btn-info">批量抓取</a>
</div> </div>
<div class="col-md-24" style="margin-top:30px" id="console">
</div>
</div> </div>
</div> </div>
@ -101,6 +116,10 @@
<option value="tp_Beijing">tp_Beijing</option> <option value="tp_Beijing">tp_Beijing</option>
<option value="tp_Shanghai">tp_Shanghai</option> <option value="tp_Shanghai">tp_Shanghai</option>
<option value="tp_Guilin">tp_Guilin</option> <option value="tp_Guilin">tp_Guilin</option>
<option value="tp_Xian">tp_Xian</option>
<option value="tp_Zhangjiajie">tp_Zhangjiajie</option>
<option value="tp_Hangzhou">tp_Hangzhou</option>
<option value="tp_Hangzhou">tp_Chengdu</option>
<option value="train">train</option> <option value="train">train</option>
</select> </select>
</div> </div>
@ -113,6 +132,51 @@
</div> </div>
</div> </div>
<div role="tabpanel" class="tab-pane active" id="config_view">
<div class="row" style="margin-top:10px;">
<div class="col-md-5">
<select name="confg_destination" class="form-control" id="confg_destination">
<option value="">选择站点</option>
<option value="tp_Beijing">tp_Beijing</option>
<option value="tp_Shanghai">tp_Shanghai</option>
<option value="tp_Guilin">tp_Guilin</option>
<option value="train">train</option>
</select>
</div>
<div class="col-md-5">
<input name="production_code" type="text" class="form-control" placeholder="请输入产品代号" />
</div>
<div class="col-md-11">
<input name="production_link" type="text" class="form-control" placeholder="请输入产品链接" />
</div>
<div class="col-md-3">
<a href="#" id="addproduction" class="btn btn-info">添加产品</a>
</div>
</div>
<hr>
<h3 style="text-align:center">配置查询</h3>
<div class="row">
<div class="col-md-5">
<select name="search_confg_destination" class="form-control" id="search_confg_destination">
<option value="">选择站点</option>
<option value="tp_Beijing">tp_Beijing</option>
<option value="tp_Shanghai">tp_Shanghai</option>
<option value="tp_Guilin">tp_Guilin</option>
<option value="tp_Xian">tp_Xian</option>
<option value="tp_Zhangjiajie">tp_Zhangjiajie</option>
<option value="tp_Hangzhou">tp_Hangzhou</option>
<option value="tp_Hangzhou">tp_Chengdu</option>
</select>
</div>
<div class="col-md-3">
<a href="###" id="searchconfig" class="btn btn-info">查询配置</a>
</div>
</div>
<hr>
<div id="config_result">
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -133,6 +197,7 @@ $(function(){
$.ajax({ $.ajax({
url:'/info.php/apps/tripadvisor_spider/index/get_reviews_detail', url:'/info.php/apps/tripadvisor_spider/index/get_reviews_detail',
data:{url:ta_url}, data:{url:ta_url},
type:'POST',
success:function(json,status){ success:function(json,status){
var data = $.parseJSON(json); var data = $.parseJSON(json);
console.log(data); console.log(data);
@ -161,26 +226,104 @@ $(function(){
$('#batchcontents').click(function(){ $('#batchcontents').click(function(){
var destination = $('#destination').val(); var destination = $('#destination').val();
var pagenums = $('#pagenums').val(); var pagenums = $('#pagenums').val();
var product_links = $('#production').val();
var product_code = $('#production option:selected').text();
$(this).addClass('disabled');
$('#console').html('');
if(destination != ''){ if(destination != ''){
$.ajax({ $.ajax({
url:'/info.php/apps/tripadvisor_spider/index/get_destination_reviews/'+destination+'/'+pagenums, url:'/info.php/apps/tripadvisor_spider/index/get_destination_reviews/',
data : {
destination : destination,
pagenum : pagenums,
product_links : product_links
},
type:'POST',
success:function(json,status){ success:function(json,status){
var data = $.parseJSON(json); var data = $.parseJSON(json);
var html = ''; $('#batchcontents').removeClass('disabled');
$('#console').html('<p>5条评论链接获取成功下面开始抓取具体评论</p>');
for(var x=0;x<data.urls.length;x++){ for(var x=0;x<data.urls.length;x++){
$.ajax({ $.ajax({
url:'/info.php/apps/tripadvisor_spider/index/get_reviews_detail', url:'/info.php/apps/tripadvisor_spider/index/get_reviews_detail',
data:{url:data.urls[x],html_num:'list_'+x,destination:destination}, type:'POST',
data:{
url : data.urls[x],
html_num : 'list_'+x,
destination : destination,
product_links : product_links,
product_code : product_code
},
success:function(content,status){ success:function(content,status){
var data = $.parseJSON(content);
console.log(content);
var console_html = $('#console').html();
console_html += '<p>标题:'+data.title+' 评论抓取成功!</p>';
$('#console').html(console_html);
} }
}); });
} }
},
error:function (){
alert('获取失败,请重试!');
$('#batchcontents').removeClass('disabled');
},
timeout:function(){
alert('请求超时,请重试!');
$('#batchcontents').removeClass('disabled');
}
});
}
});
//修改目的地获取产品
$('#destination').on("change",function (){
var destination = $(this).val();
if(destination != ''){
$.ajax({
url : '/info.php/apps/tripadvisor_spider/index/get_production_code',
data : {destination : destination},
type:'POST',
success : function (json,status){
var jsondata = $.parseJSON(json);
var options_html = '<option value="">选择产品</option>';
for (var i=0;i<jsondata.length;i++){
options_html += '<option value="'+jsondata[i].trc_links+'">'+jsondata[i].trc_code+'</option>';
}
$('#production').html(options_html);
}
});
}
});
//查询配置信息
$('#searchconfig').on('click',function(){
var destination = $('#search_confg_destination').val();
if(destination != ''){
$.ajax({
url : '/info.php/apps/tripadvisor_spider/index/get_production_code',
data : {destination : destination},
type:'POST',
success : function (json,status){
var jsondata = $.parseJSON(json);
var config_html = '';
for (var i=0;i<jsondata.length;i++){
var num = i+1;
config_html += '<div class="row"><div class="col-md-1">'+num+'</div>';
config_html += '<div class="col-md-2">'+jsondata[i].trc_code+'</div>';
config_html += '<div class="col-md-18">'+jsondata[i].trc_links+'</div>';
config_html += '<div class="col-md-3"><a href="###" id="deleteconfig" class="btn btn-danger" onclick="deleteconfig('+jsondata[i].trc_id+')">删除配置</a></div></div><hr>';
}
$('#config_result').html(config_html);
} }
}); });
} }
}); });
//excel导出抓取 //excel导出抓取
$('#contentbyexcel').click(function(){ $('#contentbyexcel').click(function(){
var fileArray = document.getElementById("file_excel").files; var fileArray = document.getElementById("file_excel").files;
@ -192,7 +335,7 @@ $(function(){
$.ajax({ $.ajax({
url:'/info.php/apps/tripadvisor_spider/index/analysis_excel', url:'/info.php/apps/tripadvisor_spider/index/analysis_excel',
data: formData, data: formData,
type: 'post', type: 'POST',
cache: false, cache: false,
contentType: false, contentType: false,
processData: false, processData: false,
@ -224,6 +367,7 @@ $(function(){
$.ajax({ $.ajax({
url:'/info.php/apps/tripadvisor_spider/index/get_reviews_detail', url:'/info.php/apps/tripadvisor_spider/index/get_reviews_detail',
data:{url:ta_url,html_num:num,destination:jsondata[i].list_data[j][0],group_name:jsondata[i].list_data[j][1],guidename:jsondata[i].list_data[j][2]}, data:{url:ta_url,html_num:num,destination:jsondata[i].list_data[j][0],group_name:jsondata[i].list_data[j][1],guidename:jsondata[i].list_data[j][2]},
type:'POST',
success:function(json_detail,status){ success:function(json_detail,status){
var data = $.parseJSON(json_detail); var data = $.parseJSON(json_detail);
$('#excel_title_'+data.html_id).html(data.title); $('#excel_title_'+data.html_id).html(data.title);
@ -268,6 +412,7 @@ $(function(){
if(view_destination != ''){ if(view_destination != ''){
$.ajax({ $.ajax({
url:'/info.php/apps/tripadvisor_spider/index/get_all_reviews/'+view_destination, url:'/info.php/apps/tripadvisor_spider/index/get_all_reviews/'+view_destination,
type:'POST',
success:function(json,status){ success:function(json,status){
var jsondata = $.parseJSON(json); var jsondata = $.parseJSON(json);
var html = ''; var html = '';
@ -286,7 +431,7 @@ $(function(){
} }
} }
html += '</p><p class="experience_date">Date of experience: '+jsondata.list[y].tr_visited_date+'</p></div></div><hr>'; html += '</p><p class="experience_date">Date of experience: '+jsondata.list[y].tr_visited_date+'</p><p class="product_code">product code: '+jsondata.list[y].tr_product_code+'</p></div></div><hr>';
} }
html += '<p class="pull-right">total nums : '+jsondata.list.length+'</p>' html += '<p class="pull-right">total nums : '+jsondata.list.length+'</p>'
$('#list_view_content').html(html); $('#list_view_content').html(html);
@ -294,5 +439,54 @@ $(function(){
}); });
} }
}); });
//添加数据
$('#addproduction').click(function (){
var config_destination = $('#confg_destination').val();
var production_code = $('input[name="production_code"]').val();
var production_link = $('input[name="production_link"]').val();
$(this).addClass('disabled');
if(config_destination && production_code && production_link){
$.ajax({
url : '/info.php/apps/tripadvisor_spider/index/add_production/',
data : {
config_destination : config_destination,
production_code : production_code,
production_link : production_link
},
type:'POST',
success : function (json,status){
var jsondata = $.parseJSON(json);
$('#confg_destination').val('');
$('input[name="production_code"]').val('');
$('input[name="production_link"]').val('');
$('#addproduction').removeClass('disabled');
alert(jsondata.reason);
}
});
}else{
alert('请输入完整参数');
}
});
}); });
function deleteconfig(id){
if(id != ''){
$.ajax({
url : '/info.php/apps/tripadvisor_spider/index/deleteconfig/',
data : {
config_id : id
},
type:'POST',
success:function(){
alert('配置已删除');
window.location.reload();
}
});
}
}
</script> </script>

@ -2,10 +2,11 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2020-01-14 11:19:04 * @Date: 2020-01-14 11:19:04
* @LastEditTime : 2020-01-14 11:30:24 * @LastEditTime: 2020-05-08 14:22:49
* @LastEditors : Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: \information-system\application\third_party\updatetrain\controllers\updatestation.php * @FilePath: \information-system\application\third_party\updatetrain\controllers\updatestation.php
* 本地运行地址http://202.103.68.144:65008/info.php/thirdparty/updatetrain/updatestation/
*/ */

@ -18,9 +18,11 @@
</div> </div>
</td> </td>
<td>&nbsp; <td>&nbsp;
<P>由于涉及HT所以更新程序需要运行在本地http://202.103.68.144:65008/info.php/thirdparty/updatetrain/updatestation/</P>
<p>原来准备做点击后更新,加进度条。后来发现这个功能需要自动运行,基本不需要界面。加上时间也紧。所以就直接加链接了</p> <p>原来准备做点击后更新,加进度条。后来发现这个功能需要自动运行,基本不需要界面。加上时间也紧。所以就直接加链接了</p>
<P>以后数据都已HT的数据为准所以先要把目前站点JS的内容判断后同步到HT里面以后根据12306数据更新HT然后把新内容邮件发送到我邮箱我在手动更新网前站点JS</P> <P>以后数据都已HT的数据为准所以先要把目前站点JS的内容判断后同步到HT里面以后根据12306数据更新HT然后把新内容邮件发送到我邮箱我在手动更新网前站点JS</P>
<p><a href="/info.php/thirdparty/updatetrain/updatestation/getstatioBy12306/">点击更新主要根据12306数据更新</a></p> <p><a href="/info.php/thirdparty/updatetrain/updatestation/getstatioBy12306/">点击更新主要根据12306数据更新</a></p>
<p style="display: none;"></p> <p style="display: none;"></p>
</td> </td>
</tr> </tr>

@ -66,7 +66,7 @@
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-primary" onclick="submit_amp_editor();">保存</button> <button type="button" class="btn btn-primary" onclick="submit_amp_editor();">保存</button>
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@ -76,21 +76,21 @@
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li><a href="javascript(0);" onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'AMP', ''); meta('delete', '<?php echo $information->ic_id; ?>', 'AMP_STATUS', '');">删除</a></li> <li><a href="javascript(0);" onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'AMP', ''); meta('delete', '<?php echo $information->ic_id; ?>', 'AMP_STATUS', '');">删除</a></li>
<?php <?php
//默认展示上一次记录 //默认展示上一次记录
if($last_edit_amp_id != ''){ if($last_edit_amp_id != ''){
echo '<li><a target="_blnk" href="/info.php/information/backup_content/'.$last_edit_amp_id.'">查看历史记录</a></li>'; echo '<li><a target="_blnk" href="/info.php/information/backup_content/'.$last_edit_amp_id.'">查看历史记录</a></li>';
}?> }?>
</ul> </ul>
</div> </div>
<?php if ($this->config->item('site_code') == 'cht') { ?> <?php if ($this->config->item('site_code') == 'cht') { ?>
<a href="http://192.155.224.195:8080/guide-use.php/amp_loader/test/?info_url=<?php echo $information->ic_url ?>" class="btn btn-primary" <a href="http://169.54.172.35:3588/guide-use.php/amp_loader/test/?info_url=<?php echo $information->ic_url ?>" class="btn btn-primary"
target="_blank">看看</a> target="_blank">看看</a>
<?php } ?> <?php } ?>
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
@ -99,7 +99,7 @@
</div> </div>
</form> </form>
<div id="amp_error"> <div id="amp_error">
</div> </div>
<hr/> <hr/>
</div> </div>
@ -201,7 +201,7 @@
}); });
} }
</script> </script>

@ -329,7 +329,7 @@
//跳转到测试页面 //跳转到测试页面
function goto_test_page() { function goto_test_page() {
var site_url = 'http://192.155.224.195:8080/guide-use.php/travelguide/guide/?static_html_url='; var site_url = 'http://169.54.172.35:3588/guide-use.php/travelguide/guide/?static_html_url=';
$('#goto_test_page_button').attr("href", site_url + $('#ic_url').val()); $('#goto_test_page_button').attr("href", site_url + $('#ic_url').val());
return true; return true;
} }
@ -735,6 +735,9 @@ if (!empty($setting_website_nav)) {
<p></p> <p></p>
<div class="col-xs-24"> <div class="col-xs-24">
<label><a href="javascript:void(0);" onclick="$('#customize').toggle();">自定义选项</a> </label> <label><a href="javascript:void(0);" onclick="$('#customize').toggle();">自定义选项</a> </label>
<?php if ( $information->ic_sitecode=="trippest") { ?>
<label><a class="btn default" data-toggle="modal" id="aBokunData"> 管理TPBokun数据 </a> </label>
<?php } ?>
</div> </div>
<div id="customize" class="col-xs-24" style="display:none;"> <div id="customize" class="col-xs-24" style="display:none;">
@ -1370,6 +1373,38 @@ $meta_subnavi_arr = array(
</div> </div>
</div> </div>
<div class="row">
<div class="col-sm-6">
<label>目的地产品最少人数
<a href="javascript:void(0);" onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'meta_trippest_limitperson', $('#meta_trippest_limitperson').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);" onclick="meta('save', '<?php echo $information->ic_id; ?>', 'meta_trippest_limitperson', $('#meta_trippest_limitperson').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="产品预订需要的最少人数"><i class="text-muted glyphicon glyphicon-question-sign"></i></a>
<select name="meta_trippest_limitperson" id="meta_trippest_limitperson" class="form-control" >
<option value="0" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '0' ? 'selected' : false; ?>>0</option>
<option value="1" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '1' ? 'selected' : false; ?>>1</option>
<option value="2" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '2' ? 'selected' : false; ?>>2</option>
<option value="3" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '3' ? 'selected' : false; ?>>3</option>
<option value="4" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '4' ? 'selected' : false; ?>>4</option>
<option value="5" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '5' ? 'selected' : false; ?>>5</option>
<option value="6" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '6' ? 'selected' : false; ?>>6</option>
<option value="7" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '7' ? 'selected' : false; ?>>7</option>
<option value="8" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '8' ? 'selected' : false; ?>>8</option>
<option value="9" <?php echo get_meta($information->ic_id, 'meta_trippest_limitperson') === '9' ? 'selected' : false; ?>>9</option>
</select>
</div>
<div class="col-sm-6">
<label>TP是否需要HotelAddress
<a href="javascript:void(0);" onclick="meta('delete', '<?php echo $information->ic_id; ?>', 'meta_trippest_hoteladdress', $('#meta_trippest_hoteladdress').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);" onclick="meta('save', '<?php echo $information->ic_id; ?>', 'meta_trippest_hoteladdress', $('#meta_trippest_hoteladdress').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="TP产品预订是否需要录入HotelAddress默认是需要"><i class="text-muted glyphicon glyphicon-question-sign"></i></a>
<select name="meta_trippest_limitperson" id="meta_trippest_hoteladdress" class="form-control" >
<option value="是" <?php echo get_meta($information->ic_id, 'meta_trippest_hoteladdress') === '0' ? 'selected' : false; ?>></option>
<option value="否" <?php echo get_meta($information->ic_id, 'meta_trippest_hoteladdress') === '1' ? 'selected' : false; ?>></option>
</select>
</div>
</div>
<!-- 自定义选项 --> <!-- 自定义选项 -->
</div> </div>
@ -1550,3 +1585,32 @@ foreach ($author_list as $author_item) {
</div> </div>
</div> </div>
<!-- Trippest bokun窗口 -->
<div class="modal fade" id="NoPermissionModal">
<div class="modal-dialog modal-lg" >
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="NoPermissionModalLabel">BOKUN附加属性管理</h4>
</div>
<div class="modal-body" style="height:650px;">
<iframe id="NoPermissioniframe" width="100%" height="100%" frameborder="0"></iframe>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default " data-dismiss="modal"> 关 闭 </button>
</div>
</div>
</div>
</div>
<script >
$(function(){
$("#aBokunData").click(function(){
var frameSrc = "/info.php/infobokundata/index/<?php echo $information->ic_id ?>/";
$("#NoPermissioniframe").attr("src", frameSrc);
$('#NoPermissionModal').modal({ show: true, backdrop: 'static' });
})
});
</script>
<!-- Trippest bokun窗口 -->

@ -1114,3 +1114,5 @@
</div> </div>
</div> </div>
</div> </div>

@ -0,0 +1,119 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/css/information-system3.css?v=201508112" type="text/css" />
<script type="text/javascript" src="/min/?f=/js/information-system3.min.js,/js/common.js,/js/trippest/trippest.js&v=20190128"></script>
<style>
.box {
background: #f5f5f5;
margin-bottom: 20px;
}
.box .item {
padding-bottom: 10px;
}
</style>
</head>
<body>
<?php
foreach ($list as $Item) {
$ibd_id = $Item->ibd_id;
$ibd_ic_id = $Item->ibd_ic_id;
$ibd_parentId = $Item->ibd_parentId;
$ibd_ItemName = $Item->ibd_ItemName;
$ibd_ItemValue = $Item->ibd_Itemvalue;
$ibd_ItemType = $Item->ibd_ItemType;
$ibd_ItemDescription = $Item->ibd_ItemDescription;
if ($ibd_ItemName == "included" || $ibd_ItemName == "excluded" || $ibd_ItemName == "requirements" || $ibd_ItemName == "attention" || $ibd_ItemName == "ticketMsg" || $ibd_ItemName == "noPickupMsg") {
?>
<div class="col-sm=20 box">
<div class="item">
<label>
<?php echo $ibd_ItemName ?>
<a href="javascript:void(0);" onclick="tpmeta('delete', '<?php echo $ibd_id ?>')"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);" onclick="tpmeta('save', '<?php echo $ibd_id ?>', $('#<?php echo $ibd_id ?>').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="管理bokun附加属性内容."><i class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<textarea class="form-control" id="<?php echo $ibd_id ?>" name="<?php echo $ibd_id ?>" rows="3"><?php echo $ibd_ItemValue ?></textarea>
</div>
</div>
<?php } elseif (stripos($ibd_ItemName, "Photo")) { ?>
<div class="col-sm=20 box">
<div class="item">
<label>
<?php echo $ibd_ItemName ?>
<a href="javascript:void(0);" onclick="tpmeta('delete', '<?php echo $ibd_id ?>')"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);" onclick="tpmeta('save', '<?php echo $ibd_id ?>', $('#<?php echo $ibd_id ?>').val(),$('#<?php echo $ibd_id . '_type' ?>').val(),$('#<?php echo $ibd_id . '_dsc' ?>').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="图片管理,其中有路径,大小(originalUrl:原图;large600X600);preview,thumbnail(40X40).大小就这4种),及说明文字."><i class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<input name="<?php echo $ibd_id ?>" id="<?php echo $ibd_id ?>" type="text" class="form-control" value="<?php echo $ibd_ItemValue ?>">
<p></p>
<div class="row">
<div class="col-sm-8"><input name="<?php echo $ibd_id . '_type' ?>" id="<?php echo $ibd_id . '_type' ?>" type="text" class="form-control" value="<?php echo $ibd_ItemType ?>" placeholder="phototype"></div>
<div class="col-sm-16"><input name="<?php echo $ibd_id . '_dsc' ?>" id="<?php echo $ibd_id . '_dsc' ?>" type="text" class="form-control" value="<?php echo $ibd_ItemDescription ?>" placeholder="description"></div>
</div>
</div>
</div>
<?php } elseif ($ibd_ItemName == "ActivityID") { //产品ActivityID不允许修改然后加上添加操作
?>
<div class="col-sm=20 box">
<div class="item">
<label>ActivityID:<?php echo $ibd_ItemValue ?>(不能修改bokun的产品ID,为0是CH产品。)</label>&nbsp;&nbsp;
<label>如果需要增加属性,请点击 <a href="javascript:;" id=“js_AddBokun” onclick="CheckAddBox()">添 加</a></label>
<a href="javascript:void(0);" title="特别注意bokun属性名称是根据接口数据固定的几个比如keyPhoto是产品主要图片。ProductPhoto是产品其它图片. 图片的Type属性类型只能是 originalUrllargepreviewthumbnail这四种类型。"><i class="text-muted glyphicon glyphicon-question-sign"></i></a>
</div>
<div class="item" id="js_AddBokunBox" style="display:none;">
<div class="row">
<div class="col-sm-6">
<select name="ibd_ItemName" id="ibd_ItemName" class="form-control">
<option value="">属性名称(必填)</option>
<option value="AdultMsg">成人年龄信息</option>
<option value="ChildMsg">儿童年龄信息</option>
<option value="InfantMsg">婴儿年龄信息</option>
<option value="Other_Msg">Other年龄信息</option>
<option value="country">country</option>
<option value="city">city</option>
<option value="durationText">durationText</option>
<option value="ticketMsg">ticketMsg</option>
<option value="noPickupMsg">noPickupMsg</option>
<option value="keyPhoto">keyPhoto</option>
<option value="ProductPhoto">ProductPhoto</option>
</select>
</div>
<div class="col-sm-6"><input name="ibd_ItemType" id="ibd_ItemType" type="text" class="form-control" value="" placeholder="Type属性类型">
</div>
<div class="col-sm-6"><input name="ibd_ItemDescription" id="ibd_ItemDescription" type="text" class="form-control" value="" placeholder="description描述"></div>
<div class="col-sm-6">
<a href="javascript:;" class="btn btn-primary" onclick="addmeta($('#ibd_ic_id').val(),$('#ibd_parentId').val(),$('#ibd_ItemName').val(),$('#ibd_Itemvalue').val(),$('#ibd_ItemType').val(),$('#ibd_ItemDescription').val())">保 存</a>
<input type="hidden" name="ibd_ic_id" id="ibd_ic_id" value="<?php echo $ibd_ic_id ?>" />
<input type="hidden" name="ibd_parentId" id="ibd_parentId" value="<?php echo $ibd_id ?>" />
</div>
</div>
<p></p>
<input name="ibd_Itemvalue" id="ibd_Itemvalue" type="text" class="form-control" value="" placeholder="属性值,对应属性名称。(必填)">
</div>
</div>
<?php } else { ?>
<div class="col-sm=20 box">
<div class="item">
<label>
<?php echo $ibd_ItemName ?>
<a href="javascript:void(0);" onclick="tpmeta('delete', '<?php echo $ibd_id ?>')"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-remove"></i></a>
<a href="javascript:void(0);" onclick="tpmeta('save', '<?php echo $ibd_id ?>', $('#<?php echo $ibd_id ?>').val())"><i class="text-muted glyphicon glyphtext-muted glyphicon glyphicon-hdd"></i></a>
<a href="javascript:void(0);" title="管理bokun附加属性内容."><i class="text-muted glyphicon glyphicon-question-sign"></i></a>
</label>
<input name="<?php echo $ibd_id ?>" id="<?php echo $ibd_id ?>" type="text" class="form-control" value="<?php echo $ibd_ItemValue ?>">
</div>
</div>
<?php }
} ?>
</body>
</html>

@ -1,5 +1,6 @@
<?php <?php
header("Cache-Control: no-cache"); header("Cache-Control: no-cache");
/* /*
*--------------------------------------------------------------- *---------------------------------------------------------------
* APPLICATION ENVIRONMENT * APPLICATION ENVIRONMENT

@ -0,0 +1,91 @@
function tpmeta(meta_act, ibd_id, ibd_Itemvalue = "", ibd_ItemType = "", ibd_ItemDescription = "") {
if (meta_act == "save") {
var url = "/info.php/infobokundata/save_meta"
}
if (meta_act == "delete") {
if (confirm("是否删除该属性?")) {
var url = "/info.php/infobokundata/delete_meta"
} else {
return false
}
}
$.ajax({
type: "post",
dataType: "json",
url: url,
data: {
"ibd_id": ibd_id,
"ibd_Itemvalue": ibd_Itemvalue,
"ibd_ItemType": ibd_ItemType,
"ibd_ItemDescription": ibd_ItemDescription
},
success: function (data, textStatus) {
for (var key in data) {
if (data[key].name == "ok") {
if (meta_act == "delete") {
// alert("sss");
$("#" + ibd_id).closest("div.box").remove();
// alert("end");
}
$.modaldialog.success(data[key].value);
return true
} else {
$.modaldialog.error(data[key].value)
}
}
},
error: function () {
$.modaldialog.error("更新失败..")
}
})
}
function addmeta(ibd_ic_id,ibd_parentId=0,ibd_ItemName,ibd_Itemvalue="",ibd_ItemType="",ibd_ItemDescription="") {
var url = "/info.php/infobokundata/add_meta";
if (ibd_ItemName=="" || typeof(ibd_ItemName) == undefined){
$.modaldialog.error("更新失败,属性名称必须选择!")
return false;
}
if (ibd_Itemvalue=="" || typeof(ibd_Itemvalue) == undefined){
$.modaldialog.error("更新失败,属性值必须填写!")
return false;
}
$.ajax({
type: "post",
dataType: "json",
url: url,
data: {
"ibd_ic_id": ibd_ic_id,
"ibd_parentId":ibd_parentId,
"ibd_ItemName":ibd_ItemName,
"ibd_Itemvalue": ibd_Itemvalue,
"ibd_ItemType": ibd_ItemType,
"ibd_ItemDescription": ibd_ItemDescription
},
success: function (data, textStatus) {
for (var key in data) {
if (data[key].name == "ok") {
$.modaldialog.success(data[key].value);
return true
} else {
$.modaldialog.error(data[key].value)
}
}
},
error: function () {
$.modaldialog.error("更新失败..")
}
})
}
function CheckAddBox() {
if ($("#js_AddBokunBox").is(":visible")){
$("#js_AddBokunBox").hide();
}else{
$("#js_AddBokunBox").show();
}
}

@ -30,6 +30,7 @@ class index extends CI_Controller {
$postunionid = $this->input->post('postunionid'); $postunionid = $this->input->post('postunionid');
$approvers = $this->input->post('approvers'); $approvers = $this->input->post('approvers');
$message = $this->input->post('message'); $message = $this->input->post('message');
$currency = $this->input->post('currency');
if(empty($postunionid)){ if(empty($postunionid)){
exit('参数错误'); exit('参数错误');
@ -65,7 +66,7 @@ class index extends CI_Controller {
$postData['approvers'] = $approversidstr; $postData['approvers'] = $approversidstr;
$postData['form_component_values'] = array(); $postData['form_component_values'] = array();
$postData['form_component_values']['0']['name'] = '报账金额'; $postData['form_component_values']['0']['name'] = '金额';
$postData['form_component_values']['0']['value'] = $money; $postData['form_component_values']['0']['value'] = $money;
$postData['form_component_values']['1']['name'] = '备注'; $postData['form_component_values']['1']['name'] = '备注';
$postData['form_component_values']['1']['value'] = $message; $postData['form_component_values']['1']['value'] = $message;
@ -75,6 +76,8 @@ class index extends CI_Controller {
$postData['form_component_values']['3']['value'] = $paytocompany; $postData['form_component_values']['3']['value'] = $paytocompany;
$postData['form_component_values']['4']['name'] = '附件'; $postData['form_component_values']['4']['name'] = '附件';
$postData['form_component_values']['4']['value'] = json_decode($img); $postData['form_component_values']['4']['value'] = json_decode($img);
$postData['form_component_values']['5']['name'] = '币种';
$postData['form_component_values']['5']['value'] = $currency;
//print_r(json_encode($postData));die(); //print_r(json_encode($postData));die();
$response = GetPost_http($url,json_encode($postData),'json'); $response = GetPost_http($url,json_encode($postData),'json');

@ -55,5 +55,7 @@
</form> </form>
<div class="dl-horizontal"> <div class="dl-horizontal">
<p><a href="javascript:void(0);" onclick="$('#note_original_data').toggle()" >原始数据</a></p> <p><a href="javascript:void(0);" onclick="$('#note_original_data').toggle()" >原始数据</a></p>
<p> <span style="display: none;" id="note_original_data"><?php echo str_replace('","', '"<br/>"', $note->OPN_rawContent); ?></span></p> <p> <span style="display: none;" id="note_original_data">
<?php echo str_replace('","', '"<br/>"', json_encode(json_decode($note->OPN_rawContent, true), JSON_UNESCAPED_UNICODE)); ?>
</span></p>
</div> </div>

@ -107,7 +107,7 @@
<div class="row"> <div class="row">
<div class="col-sm-10"></div> <div class="col-sm-10"></div>
<div class="col-sm-4"> <div class="col-sm-4">
<a href="http://www.miitbeian.gov.cn/" target="_blank">桂ICP备15004653号</a> <a href="http://www.beian.miit.gov.cn/" target="_blank">桂ICP备15004653号</a>
</div> </div>
<div class="col-sm-10"> </div> <div class="col-sm-10"> </div>
</div> </div>

@ -78,19 +78,19 @@ switch ($sitecode){
$site_url='https://data.asiahighlights.com'; $site_url='https://data.asiahighlights.com';
break; break;
case 'vc': case 'vc':
$site_url='https://data.voyageschine.com'; $site_url='https://data.voyageschine.com/kcfinder/upload/vc';
break; break;
case 'jp': case 'jp':
$site_url='https://data.arachina.com'; $site_url='https://data.arachina.com/kcfinder/upload/jp';
break; break;
case 'vac': case 'vac':
$site_url='https://data.viaje-a-china.com'; $site_url='https://data.viaje-a-china.com/kcfinder/upload/vac';
break; break;
case 'it': case 'it':
$site_url='https://data.viaggio-in-cina.it'; $site_url='https://data.viaggio-in-cina.it/kcfinder/upload/it';
break; break;
case 'ru': case 'ru':
$site_url='https://data.chinahighlights.ru'; $site_url='https://data.chinahighlights.ru/kcfinder/upload/ru';
break; break;
case 'ct': case 'ct':
$site_url='https://data.chinatravel.com'; $site_url='https://data.chinatravel.com';
@ -101,7 +101,12 @@ switch ($sitecode){
//文件上传目录,使用相对路径,在文件夹中建立虚拟目录指向真实文件夹 //文件上传目录,使用相对路径,在文件夹中建立虚拟目录指向真实文件夹
//需要移出项目文件夹防止FTP访问到防止误删 //需要移出项目文件夹防止FTP访问到防止误删
$site_upload_dir=dirname(dirname(dirname(dirname(__FILE__)))).'/uploader-file/'.$sitecode; if ('origin-int.mycht.cn' == $_SERVER["SERVER_NAME"] || 'origin-gm.mycht.cn' == $_SERVER["SERVER_NAME"]) {
// 国际站和德语站不需要更改目录
$site_upload_dir = dirname(__FILE__).('/userfiles/').$sitecode;
} else {
$site_upload_dir = dirname(dirname(dirname(dirname(__FILE__)))).'/uploader-file/'.$sitecode;
}
$config['backends'][] = array( $config['backends'][] = array(
'name' => 'default', 'name' => 'default',
@ -138,6 +143,7 @@ $config['resourceTypes'][] = array(
'backend' => 'default' 'backend' => 'default'
); );
/* /*
$config['resourceTypes'][] = array( $config['resourceTypes'][] = array(
'name' => 'css', // Single quotes not allowed. 'name' => 'css', // Single quotes not allowed.
'directory' => 'css', 'directory' => 'css',

@ -1,6 +0,0 @@
<IfModule mod_php5.c>
php_value engine off
</IfModule>
<IfModule mod_php4.c>
php_value engine off
</IfModule>
Loading…
Cancel
Save