Compare commits
1 Commits
master
...
hotfix/pay
Author | SHA1 | Date |
---|---|---|
|
13528c4f85 | 2 years ago |
@ -1,291 +0,0 @@
|
||||
<?php
|
||||
if (!defined('BASEPATH')) {
|
||||
exit('No direct script access allowed');
|
||||
}
|
||||
|
||||
class infofix extends CI_Controller
|
||||
{
|
||||
public $site_code = '';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('Information_model');
|
||||
$this->load->model('infoContents_model');
|
||||
$this->load->model('infoMetas_model');
|
||||
$this->load->model('logs_model');
|
||||
$this->site_code = $this->input->get('site_code') ? $this->input->get('site_code') : $this->config->item('site_code');
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据关键词搜索信息
|
||||
*/
|
||||
public function list_info_by_keys()
|
||||
{
|
||||
// 防止超时
|
||||
set_time_limit(0);
|
||||
|
||||
// json参数
|
||||
$site = $this->input->get_post('site');
|
||||
$keys = $this->input->get_post('keys');
|
||||
$key_arr = explode(',', $keys);
|
||||
|
||||
// 容错
|
||||
if (
|
||||
empty($site) ||
|
||||
empty($keys) ||
|
||||
mb_stripos($keys, '/') === false
|
||||
) {
|
||||
echo json_encode(array());
|
||||
return false;
|
||||
}
|
||||
|
||||
// 关键字信息
|
||||
$rs = $this->Information_model->list_by_keywords($site, $key_arr);
|
||||
|
||||
// 调整数据
|
||||
foreach ($rs as $info) {
|
||||
$key_with_content = array();
|
||||
foreach ($key_arr as $key) {
|
||||
|
||||
// 链接
|
||||
$sub_url = mb_stripos($info->ic_url, $key) !== false ? $info->ic_url : '';
|
||||
if ($sub_url) {
|
||||
$sub_url = str_replace($key, '@@@' . $key . '@@@', $sub_url);
|
||||
$sub_url = explode('@@@', $sub_url);
|
||||
}
|
||||
|
||||
$limitStr = 100;
|
||||
// 信息内容
|
||||
$pos_content = 0;
|
||||
$pos_content = mb_stripos($info->ic_content, $key);
|
||||
$sub_content = array();
|
||||
while ($pos_content) {
|
||||
$_str = '[...' . mb_substr($info->ic_content, $pos_content - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]';
|
||||
$_str = str_replace($key, '@@@' . $key . '@@@', $_str);
|
||||
$_str = explode('@@@', $_str);
|
||||
array_push($sub_content, $_str);
|
||||
$pos_content = mb_stripos($info->ic_content, $key, $pos_content + mb_strlen($key));
|
||||
}
|
||||
|
||||
// amp_json
|
||||
$sub_content2 = array();
|
||||
if ($info->amp_json) {
|
||||
$pos_content2 = 0;
|
||||
$pos_content2 = mb_stripos($info->amp_json, $key);
|
||||
while ($pos_content2) {
|
||||
$_str = '[...' . mb_substr($info->amp_json, $pos_content2 - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]';
|
||||
$_str = str_replace($key, '@@@' . $key . '@@@', $_str);
|
||||
$_str = explode('@@@', $_str);
|
||||
array_push($sub_content2, $_str);
|
||||
$pos_content2 = mb_stripos($info->amp_json, $key, $pos_content2 + mb_strlen($key));
|
||||
}
|
||||
}
|
||||
|
||||
// amp_body
|
||||
$sub_content3 = array();
|
||||
if ($info->amp_body) {
|
||||
$pos_content3 = 0;
|
||||
$pos_content3 = mb_stripos($info->amp_body, $key);
|
||||
while ($pos_content3) {
|
||||
$_str = '[...' . mb_substr($info->amp_body, $pos_content3 - $limitStr, mb_strlen($key) + $limitStr * 2) . '...]';
|
||||
$_str = str_replace($key, '@@@' . $key . '@@@', $_str);
|
||||
$_str = explode('@@@', $_str);
|
||||
array_push($sub_content3, $_str);
|
||||
$pos_content3 = mb_stripos($info->amp_body, $key, $pos_content3 + mb_strlen($key));
|
||||
}
|
||||
}
|
||||
|
||||
if ($sub_url != '' || count($sub_content) != 0 || count($sub_content2) != 0 || count($sub_content3) != 0) {
|
||||
array_push(
|
||||
$key_with_content,
|
||||
array(
|
||||
'key' => $key,
|
||||
'sub_url' => $sub_url,
|
||||
'sub_content' => $sub_content,
|
||||
'sub_json' => $sub_content2,
|
||||
'sub_body' => $sub_content3,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$info->ic_content = $key_with_content;
|
||||
unset($info->amp_json);
|
||||
unset($info->amp_body);
|
||||
}
|
||||
echo json_encode($rs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新含有关键的信息
|
||||
*/
|
||||
public function update_info_by_keys()
|
||||
{
|
||||
// json参数
|
||||
$site = $this->input->get_post('site');
|
||||
$keys = $this->input->get_post('keys');
|
||||
$keyArr = explode('@', $keys); // ic_id@oldurl@newurl@is_id
|
||||
|
||||
//sleep(2);
|
||||
//echo ($keys);
|
||||
//return true;
|
||||
|
||||
// 容错1
|
||||
if (
|
||||
empty($site) ||
|
||||
count($keyArr) != 4 ||
|
||||
mb_stripos($keys, '/') === false ||
|
||||
mb_stripos($keys, 'undefined') !== false ||
|
||||
mb_stripos($keys, 'null') !== false ||
|
||||
mb_stripos($keys, '@@') !== false ||
|
||||
mb_stripos($keys, '@ @') !== false
|
||||
) {
|
||||
echo json_encode(array('err' => '容错1'));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 参数解析
|
||||
$ic_id = $keyArr[0];
|
||||
$oldStr = $keyArr[1];
|
||||
$newStr = $keyArr[2];
|
||||
$is_id = $keyArr[3];
|
||||
|
||||
// 容错2
|
||||
if (
|
||||
empty($ic_id) ||
|
||||
empty($is_id) ||
|
||||
empty($newStr) ||
|
||||
empty($oldStr) ||
|
||||
mb_stripos($newStr, '/') === false ||
|
||||
mb_stripos($oldStr, '/') === false
|
||||
) {
|
||||
echo json_encode(array('err' => '容错2'));
|
||||
return false;
|
||||
}
|
||||
|
||||
// ic_content
|
||||
$ic = $this->infoContents_model->get_ic_contents2($ic_id);
|
||||
if (!empty($ic)) {
|
||||
$ic->ic_content = str_ireplace($oldStr, $newStr, $ic->ic_content);
|
||||
$this->infoContents_model->force_update($ic_id, $ic->ic_content);
|
||||
$ic->ic_url = str_ireplace($oldStr, $newStr, $ic->ic_url);
|
||||
$this->infoContents_model->force_update_url($ic_id, $ic->ic_url);
|
||||
}
|
||||
|
||||
// amp_json
|
||||
$meta = $this->infoMetas_model->get($ic_id, 'AMP_JSON');
|
||||
if (!empty($meta)) {
|
||||
$meta = str_ireplace($oldStr, $newStr, $meta);
|
||||
$this->infoMetas_model->update($ic_id, 'AMP_JSON', $meta);
|
||||
}
|
||||
|
||||
// amp_body_pc
|
||||
$meta = $this->infoMetas_model->get($ic_id, 'AMP_BODY_PC');
|
||||
if (!empty($meta)) {
|
||||
$meta = str_ireplace($oldStr, $newStr, $meta);
|
||||
$this->infoMetas_model->update($ic_id, 'AMP_BODY_PC', $meta);
|
||||
}
|
||||
|
||||
echo json_encode($keyArr);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 无条件获取信息内容
|
||||
* @param mixed $ic_id
|
||||
*/
|
||||
public function get_by_icid($ic_id)
|
||||
{
|
||||
$ic = $this->infoContents_model->get_ic_contents2($ic_id);
|
||||
$json = json_decode($this->infoMetas_model->get($ic_id, 'AMP_JSON'));
|
||||
$use = $this->infoMetas_model->get($ic_id, 'AMP_BODY_PC_STATUS');
|
||||
if ($ic) {
|
||||
echo json_encode(
|
||||
array(
|
||||
'state' => 0,
|
||||
'ic_content' => $ic->ic_content,
|
||||
'pc_use' => $use,
|
||||
'json' => $json,
|
||||
)
|
||||
);
|
||||
} else {
|
||||
echo json_encode(
|
||||
array(
|
||||
'state' => -1,
|
||||
'msg' => 'not content by ' . $ic_id,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 无条件更新信息内容(上线前内容)
|
||||
*/
|
||||
public function update_by_icid()
|
||||
{
|
||||
$ic_id = $this->input->get_post('ic_id');
|
||||
$ic_content = $this->input->get_post('ic_content');
|
||||
$this->infoContents_model->force_update($ic_id, $ic_content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列举使用旧版构建工具的信息,用于批量替换更新。
|
||||
* @param mixed $site
|
||||
*/
|
||||
public function list_use_hb($site)
|
||||
{
|
||||
$rs = $this->infoContents_model->list_use_hb($site);
|
||||
echo json_encode($rs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转化旧版构建工具数据(上线前的准备)
|
||||
* @param mixed $ic_id
|
||||
*/
|
||||
public function migrate_hb($ic_id, $dev = 'prod')
|
||||
{
|
||||
|
||||
// 本地测试参数
|
||||
$api = 'https://hmk.arachina.com/beta/3733/server_render2';
|
||||
if ($dev == 'dev') {
|
||||
$api = 'http://127.0.0.1:3733/server_render2';
|
||||
sleep(2);
|
||||
}
|
||||
|
||||
// 请求api
|
||||
$json = $this->infoMetas_model->get($ic_id, 'AMP_JSON');
|
||||
if (!empty($json)) {
|
||||
// 请求转化服务器
|
||||
$post_data = 'json=' . urlencode($json);
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $api);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //禁止直接显示获取的内容
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
$curl_rs = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
if ($curl_rs && ($httpCode == 200 || $httpCode == 201)) {
|
||||
// 先备份
|
||||
$is = $this->infoContents_model->get_isid_by_icid($ic_id);
|
||||
$ic = $this->infoContents_model->get_ic_contents2($ic_id);
|
||||
$this->logs_model->backup($is->is_id, $ic->ic_content);
|
||||
// 移除外部包裹标签
|
||||
$curl_rs = str_replace(array('<my_lmr_tpl>', '</my_lmr_tpl>'), '', $curl_rs);
|
||||
// 强制更新信息内容
|
||||
$this->infoContents_model->force_update($ic_id, $curl_rs);
|
||||
echo json_encode(array('status' => 1));
|
||||
} else {
|
||||
echo json_encode(array('status' => -1, 'msg' => 'err1'));
|
||||
}
|
||||
} else {
|
||||
echo json_encode(array('status' => -1, 'msg' => 'err2'));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//end of infofix
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,164 +0,0 @@
|
||||
<?php
|
||||
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class TrainDMS extends CI_Controller {
|
||||
|
||||
public function __construct(){
|
||||
parent::__construct();
|
||||
$this->load->model("dms_model");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description: 接口总汇,根据接受数据,调用不同接口,返回数据
|
||||
* @return {*}
|
||||
* @Date Changed:
|
||||
*/
|
||||
public function dmsCallback(){
|
||||
$back_json = file_get_contents('php://input');
|
||||
$dms_backdata = json_decode($back_json);
|
||||
|
||||
if(!empty($dms_backdata)){
|
||||
//判断接口调用是否合法
|
||||
$TimeStamp = $dms_backdata->authentication->timeStamp;
|
||||
$serviceName = $dms_backdata->authentication->serviceName; //每个接口都有自己名称
|
||||
$companyId = "haina";
|
||||
$key = "dms001";
|
||||
|
||||
$strSign = $TimeStamp.$serviceName.$companyId.$key; //加密前的令牌
|
||||
$Sign = md5($strSign);
|
||||
$messageIdentity = $dms_backdata->authentication->messageIdentity;
|
||||
$ResultNoticeResponse = new stdClass();
|
||||
if ($Sign == $messageIdentity){
|
||||
$ResultNoticeResponse->returnCode = 1;
|
||||
$ResultNoticeResponse->returnMsg = "success";
|
||||
//这里正常处理各种接口调用
|
||||
if ($serviceName=="dms.login"){ //登录
|
||||
$username = $dms_backdata->loginInfo->username;
|
||||
$password = $dms_backdata->loginInfo->password;
|
||||
$ResultNoticeResponse->loginInfo = new stdClass();
|
||||
$LoginInfo = $this->dms_model->Login($username,$password);
|
||||
if (empty($LoginInfo)){
|
||||
$ResultNoticeResponse->loginInfo->status = 0; //账号密码错误。
|
||||
$ResultNoticeResponse->loginInfo->dt_username = '';
|
||||
$ResultNoticeResponse->loginInfo->dt_payrule = "";
|
||||
$ResultNoticeResponse->loginInfo->dt_usertype = "";
|
||||
$ResultNoticeResponse->loginInfo->dt_HtId = "";
|
||||
$ResultNoticeResponse->loginInfo->dt_id = "";
|
||||
}else{
|
||||
$ResultNoticeResponse->loginInfo->status = 1; //账号密码是否正常。
|
||||
$ResultNoticeResponse->loginInfo->dt_username = $LoginInfo->dt_username;
|
||||
$ResultNoticeResponse->loginInfo->dt_payrule = $LoginInfo->dt_payrule;
|
||||
$ResultNoticeResponse->loginInfo->dt_usertype = $LoginInfo->dt_usertype;
|
||||
$ResultNoticeResponse->loginInfo->dt_HtId = $LoginInfo->dt_HtId;
|
||||
$ResultNoticeResponse->loginInfo->dt_id = $LoginInfo->dt_id;
|
||||
}
|
||||
|
||||
}else if($serviceName=="dms.dmlist"){ //分销商列表
|
||||
$arrKeyword = new stdClass();
|
||||
$arrKeyword = $dms_backdata->arrKeyword;
|
||||
|
||||
$dmlist = $this->dms_model->get_DmList($arrKeyword);
|
||||
$resultData = $dmlist["data"];
|
||||
$total = $dmlist["total"];
|
||||
$ResultNoticeResponse->dmlist = new stdClass();
|
||||
$ResultNoticeResponse->dmlist->data=$resultData;
|
||||
$ResultNoticeResponse->dmlist->total = $total;
|
||||
// "arrKeyword": {
|
||||
// "s_username": "ssss",
|
||||
// "s_ename": "vvv",
|
||||
// "page": false,
|
||||
// "per_page": 20
|
||||
// }
|
||||
}else if($serviceName=="dms.getpayrule"){ //获取支付规则列表数据
|
||||
$getpayrule = $this->dms_model->get_payrule();
|
||||
$ResultNoticeResponse->getpayrule = $getpayrule;
|
||||
}else if ($serviceName=="dms.addsave"){ //添加供应商操作
|
||||
$formData = new stdClass() ;
|
||||
$formData = $dms_backdata->formInfo;
|
||||
$rStatus = $this->dms_model->addsave($formData);
|
||||
$ResultNoticeResponse->addsave = $rStatus;
|
||||
}else if ($serviceName=="dms.getDmsDetail") { //修改分销商详细页
|
||||
$id = $dms_backdata->DmsDetail->dtid;
|
||||
$dmsDetail = $this->dms_model->getDmsDetail($id);
|
||||
$ResultNoticeResponse->DmsDetail = $dmsDetail;
|
||||
}else if ($serviceName=="dms.editsave"){ //修改分销商保存
|
||||
|
||||
$formData = new stdClass() ;
|
||||
$formData = $dms_backdata->formInfo;
|
||||
$rStatus = $this->dms_model->editsave($formData);
|
||||
$ResultNoticeResponse->editsave = $rStatus;
|
||||
}else if ($serviceName=="dms.delete"){ //删除分销商
|
||||
$id = $dms_backdata->DmsDetail->dtid;
|
||||
$rStatus = $this->dms_model->dmdDelete($id);
|
||||
$ResultNoticeResponse->dmsdelete = $rStatus;
|
||||
}else if ($serviceName == "dms.payrecord"){ //支付记录
|
||||
$arrKeyword = new stdClass();
|
||||
$arrKeyword = $dms_backdata->arrKeyword;
|
||||
$payrecord = $this->dms_model->payrecord($arrKeyword);
|
||||
$resultData = $payrecord["data"];
|
||||
$total = $payrecord["total"];
|
||||
$ResultNoticeResponse->payrecord = new stdClass();
|
||||
$ResultNoticeResponse->payrecord->data=$resultData;
|
||||
$ResultNoticeResponse->payrecord->total = $total;
|
||||
}else if ($serviceName=="dms.payrecord_addsave"){ //支付记录添加
|
||||
$formData = new stdClass() ;
|
||||
$formData = $dms_backdata->formInfo;
|
||||
$rStatus = $this->dms_model->payrecord_addsave($formData);
|
||||
$ResultNoticeResponse->addsave = $rStatus;
|
||||
}else if ($serviceName=="dms.payrecord_delete"){ //支付记录删除
|
||||
$id = $dms_backdata->payrecord->dp_id;
|
||||
$htid = $dms_backdata->payrecord->dp_HtId;
|
||||
$rStatus = $this->dms_model->payrecord_delete($id,$htid);
|
||||
$ResultNoticeResponse->dmsdelete = $rStatus;
|
||||
}else if ($serviceName=="dms.trainorder"){ //订单列表-火车
|
||||
$arrKeyword = new stdClass();
|
||||
$arrKeyword = $dms_backdata->arrKeyword;
|
||||
$trainorder = $this->dms_model->trainorder($arrKeyword);
|
||||
$resultData = $trainorder["data"];
|
||||
$total = $trainorder["total"];
|
||||
$ResultNoticeResponse->trainorder = new stdClass();
|
||||
$ResultNoticeResponse->trainorder->data=$resultData;
|
||||
$ResultNoticeResponse->trainorder->total = $total;
|
||||
}else if ($serviceName == "dms.dmslisteasy"){ //所有分销商数据,下拉框使用
|
||||
$getdmseasy = $this->dms_model->get_dmseasy();
|
||||
$ResultNoticeResponse->getpayrule = $getdmseasy;
|
||||
}else if ($serviceName=="dms.getpaydetail"){ //获取某一个分销商的所有财务信息
|
||||
$id = $dms_backdata->htid;
|
||||
$getpaydetail = $this->dms_model->get_paydetail($id);
|
||||
$ResultNoticeResponse->getpaydetail = $getpaydetail;
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
$ResultNoticeResponse->returnCode = 0;
|
||||
$ResultNoticeResponse->returnMsg = "messageIdentity is error!";
|
||||
}
|
||||
echo json_encode($ResultNoticeResponse);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @return {*}
|
||||
* @Date Changed:
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function login (){
|
||||
|
||||
}
|
||||
|
||||
public function addUser(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* End of file TrainDMS.php */
|
@ -1,59 +0,0 @@
|
||||
<?php
|
||||
class Des
|
||||
{
|
||||
|
||||
function encrypt($string,$key)
|
||||
{
|
||||
$size = mcrypt_get_block_size('des','ecb');
|
||||
//$string = mb_convert_encoding($string, 'GBK', 'UTF-8');
|
||||
$string = $this->pkcs5_pad($string, $size);
|
||||
$td = mcrypt_module_open('des', '', 'ecb', '');
|
||||
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
|
||||
@mcrypt_generic_init($td, $key, $iv);
|
||||
$data = mcrypt_generic($td, $string);
|
||||
mcrypt_generic_deinit($td);
|
||||
mcrypt_module_close($td);
|
||||
$data = base64_encode($data);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function decrypt($string,$key)
|
||||
{
|
||||
$string = base64_decode($string);
|
||||
$td = mcrypt_module_open('des', '', 'ecb', '');
|
||||
//使用MCRYPT_DES算法,cbc模式
|
||||
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
|
||||
$ks = mcrypt_enc_get_key_size($td);
|
||||
@mcrypt_generic_init($td, $key, $iv);
|
||||
//初始处理
|
||||
$decrypted = mdecrypt_generic($td, $string);
|
||||
//解密
|
||||
mcrypt_generic_deinit($td);
|
||||
//结束
|
||||
mcrypt_module_close($td);
|
||||
|
||||
$result = $this->pkcs5_unpad($decrypted);
|
||||
//$result = mb_convert_encoding($result, 'UTF-8', 'GBK');
|
||||
return $result;
|
||||
}
|
||||
|
||||
function pkcs5_pad($text, $blocksize)
|
||||
{
|
||||
$pad = $blocksize - (strlen($text) % $blocksize);
|
||||
return $text . str_repeat(chr($pad), $pad);
|
||||
}
|
||||
|
||||
function pkcs5_unpad($text)
|
||||
{
|
||||
$pad = ord($text{strlen($text) - 1});
|
||||
if ($pad > strlen($text)) {
|
||||
return false;
|
||||
}
|
||||
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
|
||||
return false;
|
||||
}
|
||||
return substr($text, 0, -1 * $pad);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -1,31 +0,0 @@
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary" style="width:60%;margin:0 auto;">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">预售时间修改(车站名尽量不要修改)</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="/info.php/apps/trainsystem/pages/presale_editsave" name="saletimeform" method="POST">
|
||||
<table class="table table-condensed table-bordered">
|
||||
<tr>
|
||||
<td style="text-align:center;">车站名</td>
|
||||
<td><input type="text" name="TST_station_cn" value="<?php echo($info->TST_station_cn) ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center;">预售时间</td>
|
||||
<td><input type="text" name="TST_saletime" value="<?php echo($info->TST_saletime) ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center;">车站编码</td>
|
||||
<td><input type="text" name="TST_station_code" value="<?php echo($info->TST_station_code) ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align:center;">
|
||||
<input type="submit" class="btn btn-warning btn-sm" value="更 新" style="width:120px;" />
|
||||
<input type="hidden" name="TST_id" value="<?php echo($info->TST_id) ?>"" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,54 +0,0 @@
|
||||
<div style="width:90%;margin:30px auto;">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">预售时间搜索</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<form style="" action="" method="get">
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" placeholder="站点中文名(和汉特的保持一致)" name="stationcn" value="<?php echo !empty($stationcn)?"$stationcn":"";?>" autocomplete="off">
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<button type="submit" id="sub" class="btn btn-success btn-sm"><span class="glyphicon glyphicon-search"></span> 搜索</button>
|
||||
<a href="/info.php/apps/trainsystem/pages/presale_add" class="btn btn-warning " style="width: 120px;">新增站点</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">预售时间列表</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<table class="table table-striped" style="text-align:center;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center;" width="5%">序号</th>
|
||||
<th style="text-align:center;" width="5%">ID</th>
|
||||
<th style="text-align:center;" width="25%">车站</th>
|
||||
<th style="text-align:center;" width="25%">预售时间</th>
|
||||
<th style="text-align:center;" width="15%">车站编码</th>
|
||||
<th style="text-align:center;" width="15%">更新时间</th>
|
||||
<th style="text-align:center;">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php $num=0; foreach($data as $v):?>
|
||||
<tr>
|
||||
<td><?php echo ++$num;?></td>
|
||||
<td><?php echo $v->TST_id;?></td>
|
||||
<td><?php echo $v->TST_station_cn;?></td>
|
||||
<td><?php echo $v->TST_saletime;?></td>
|
||||
<td><?php echo $v->TST_station_code;?></td>
|
||||
<td><?php echo $v->TST_updatetime;?></td>
|
||||
<td><a target="_blank" href="presale_edit?tstid=<?php echo $v->TST_id;?>">修改</a></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align:right;"><ul class="pagination"><?php echo $page_link;?></ul></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,117 +0,0 @@
|
||||
/*携程出票发送信息*/
|
||||
{
|
||||
"train": {
|
||||
"FOI_SN": 421000463,
|
||||
"DepartureCity": "Guilin",
|
||||
"ArrivalCity": "Guilin Bei (North)",
|
||||
"FOI_COLD_SN": 586000781,
|
||||
"DepartAirport": "GLZ",
|
||||
"ArrivalAirport": "GBZ",
|
||||
"FlightsNo": "G2910",
|
||||
"Aircraft": "O",
|
||||
"Cabin": "2nd Class Seat",
|
||||
"DepartureDate": "2023-04-15 00:00:00",
|
||||
"FOI_SelectedSeat": "1A,1B,1C",
|
||||
"DepartAirport_cn": "\u6842\u6797",
|
||||
"ArrivalAirport_cn": "\u6842\u6797\u5317",
|
||||
"FOI_TrainNetOrderNo": null,
|
||||
"adultcost": 6,
|
||||
"childcost": 3,
|
||||
"adultprice": 7,
|
||||
"childprice": 7,
|
||||
"ArrivalTime": "08:28AM Apr.15, 2023",
|
||||
"DepartureTime": "08:18AM Apr.15, 2023",
|
||||
"FOI_SaleDate": null
|
||||
},
|
||||
"people_list": [{
|
||||
"BPE_SN": 571000773,
|
||||
"BPE_FirstName": "",
|
||||
"BPE_MiddleName": null,
|
||||
"BPE_LastName": "AAA",
|
||||
"BPE_GuestType": 1,
|
||||
"BPE_Passport": "111",
|
||||
"BPE_PassportType": "Passport No.",
|
||||
"BPE_SEX": 100001,
|
||||
"BPE_BirthDate": "1957-03-04",
|
||||
"BPE_PassExpdate": "2023-04-14"
|
||||
}, {
|
||||
"BPE_SN": 571000774,
|
||||
"BPE_FirstName": "",
|
||||
"BPE_MiddleName": null,
|
||||
"BPE_LastName": "BBB",
|
||||
"BPE_GuestType": 1,
|
||||
"BPE_Passport": "2222",
|
||||
"BPE_PassportType": "Passport No.",
|
||||
"BPE_SEX": 100001,
|
||||
"BPE_BirthDate": "2005-03-29",
|
||||
"BPE_PassExpdate": "2025-04-08"
|
||||
}, {
|
||||
"BPE_SN": 571000775,
|
||||
"BPE_FirstName": "",
|
||||
"BPE_MiddleName": null,
|
||||
"BPE_LastName": "CCCC",
|
||||
"BPE_GuestType": 1,
|
||||
"BPE_Passport": "33333",
|
||||
"BPE_PassportType": "Passport No.",
|
||||
"BPE_SEX": 100003,
|
||||
"BPE_BirthDate": "2007-04-23",
|
||||
"BPE_PassExpdate": "2030-04-16"
|
||||
}
|
||||
],
|
||||
"email": "vivi@hainatravel.com"
|
||||
}
|
||||
|
||||
/*订单信息*/
|
||||
{
|
||||
"wl": [
|
||||
{
|
||||
"Name": "Vivi Chen",
|
||||
"OPI_Name": "陈媛明",
|
||||
"OPI_Email": "vivi@chinahighlights.com",
|
||||
"tel": "86-0773-2823567",
|
||||
"Mobile": "86-18877331805",
|
||||
"Email": "vivi@chinahighlights.com"
|
||||
}
|
||||
],
|
||||
"info": [
|
||||
{
|
||||
"people": [
|
||||
{
|
||||
"BPE_SN": 559006230,
|
||||
"BPE_FirstName": "",
|
||||
"BPE_MiddleName": null,
|
||||
"BPE_LastName": "ZHANG HAIHUA",
|
||||
"BPE_GuestType": 1,
|
||||
"BPE_Passport": "G41163238",
|
||||
"BPE_PassportType": "Passport No."
|
||||
}
|
||||
],
|
||||
"train": {
|
||||
"FOI_SN": 409004469,
|
||||
"DepartureCity": "Beijing Nan (South)",
|
||||
"ArrivalCity": "Yiwu",
|
||||
"FOI_COLD_SN": 574005898,
|
||||
"DepartAirport": "VNP",
|
||||
"ArrivalAirport": "YWH",
|
||||
"FlightsNo": "G191",
|
||||
"Aircraft": "M",
|
||||
"Cabin": "1st Class Seat",
|
||||
"DepartureDate": "2021-10-26 00:00:00",
|
||||
"FOI_SelectedSeat": "1F",
|
||||
"DepartAirport_cn": "北京南",
|
||||
"ArrivalAirport_cn": "义乌",
|
||||
"FOI_TrainNetOrderNo": null,
|
||||
"adultcost": 1061.5,
|
||||
"childcost": 530.75,
|
||||
"adultprice": 179,
|
||||
"childprice": 93,
|
||||
"ArrivalTime": "22:14 Oct.26, 2021",
|
||||
"DepartureTime": "15:18 Oct.26, 2021",
|
||||
"FOI_SaleDate": null
|
||||
},
|
||||
"status": true
|
||||
}
|
||||
],
|
||||
"cols_id": "2110265554",
|
||||
"balance": "NULL"
|
||||
}
|
@ -1,396 +0,0 @@
|
||||
|
||||
//订单提交JSON结构
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2023-04-14 16:15:39",
|
||||
"serviceName": "train.addTrainOrder",
|
||||
"companyId": "1503141150",
|
||||
"messageIdentity": "1f71fab781f73caea6686c8a69600732"
|
||||
},
|
||||
"trainOrderInfo": {
|
||||
"companyId": "1503141150",
|
||||
"orderType": 2,
|
||||
"orderTicketType": 0,
|
||||
"companyOrderId": "HN1681460139569",
|
||||
"isReservationOrder": null,
|
||||
"leakCutOffTime": null,
|
||||
"orderInfo": {
|
||||
"orderTime": "2023-04-14 16:15:39",
|
||||
"ticketList": [{
|
||||
"fromStationName": "桂林",
|
||||
"toStationName": "桂林北",
|
||||
"ticketTime": "2023-04-29 08:18",
|
||||
"trainNo": "G2910",
|
||||
"allAcceptTrainNo": "",
|
||||
"acceptDepartDates": "",
|
||||
"arrivalDateTime": "2023-04-29 08:28",
|
||||
"ticketPrice": 6,
|
||||
"seatName": "二等座",
|
||||
"selectedSeat": "1A",
|
||||
"acceptSeat": "",
|
||||
"passengerList": [{
|
||||
"passengerType": 1,
|
||||
"certificateType": 1,
|
||||
"certificateNo": "oiHef47aYwngLzVN2iiBtTS80fvlfpc8",
|
||||
"certificateName": "赵鹏",
|
||||
"birthday": null,
|
||||
"realName": "赵鹏",
|
||||
"identityLimitDate": null,
|
||||
"countryCode": "",
|
||||
"contactMobile": "",
|
||||
"contactEmail": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"frontSeatFlag": 0,
|
||||
"orderRemark": ""
|
||||
},
|
||||
"contactUser": {
|
||||
"contactUserId": "",
|
||||
"contactName": "vivi",
|
||||
"companyId": "1503141150",
|
||||
"countryCode": "86",
|
||||
"contactMobile": "up3E0hBuzNbADKxufANHMg=="
|
||||
},
|
||||
"extraService": {
|
||||
"noVerifyFlag": 1,
|
||||
"lowerBerthFlag": 0,
|
||||
"lowerBerthCount": 0,
|
||||
"grabTicketRate": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//订单提交成功返回数据
|
||||
{
|
||||
"returnCode": 1,
|
||||
"returnMessage": "SUCCESS",
|
||||
"returnData": {
|
||||
"serviceName": "train.addTrainOrder",
|
||||
"companyId": "1503141150",
|
||||
"companyOrderId": "HN1681460139569",
|
||||
"operationDateTime": "2023-04-14 16:15:56",
|
||||
"orderPayDetail": {
|
||||
"orderAmount": 12.00,
|
||||
"ticketAmount": 6,
|
||||
"serveAmount": 0,
|
||||
"extraServeFees": [
|
||||
{
|
||||
"feeAmount": 6.00,
|
||||
"feeType": 141
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ResponseStatus": {
|
||||
"Timestamp": "/Date(1681460156763+0800)/",
|
||||
"Ack": "Success",
|
||||
"Errors": [],
|
||||
"Build": null,
|
||||
"Version": null,
|
||||
"Extension": [
|
||||
{
|
||||
"Id": "CLOGGING_TRACE_ID",
|
||||
"Version": null,
|
||||
"ContentType": null,
|
||||
"Value": "7715658886832531034"
|
||||
},
|
||||
{
|
||||
"Id": "RootMessageId",
|
||||
"Version": null,
|
||||
"ContentType": null,
|
||||
"Value": "100031671-0a6d18d7-467072-1571193"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//支付成功
|
||||
{
|
||||
"returnCode": 1,
|
||||
"returnMessage": "pay success",
|
||||
"returnData": {
|
||||
"serviceName": "train.companyPayOrder",
|
||||
"companyId": "1503141150",
|
||||
"companyOrderId": "HN1681700111527",
|
||||
"operationDateTime": "2023-04-17 10:55:19"
|
||||
},
|
||||
"ResponseStatus": {
|
||||
"Timestamp": "/Date(1681700119599+0800)/",
|
||||
"Ack": "Success",
|
||||
"Errors": [],
|
||||
"Build": null,
|
||||
"Version": null,
|
||||
"Extension": [{
|
||||
"Id": "CLOGGING_TRACE_ID",
|
||||
"Version": null,
|
||||
"ContentType": null,
|
||||
"Value": "489001780207311316"
|
||||
}, {
|
||||
"Id": "RootMessageId",
|
||||
"Version": null,
|
||||
"ContentType": null,
|
||||
"Value": "100031671-0a6e4a89-467138-6889241"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
//订单callback
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2023-04-19 14:19:26",
|
||||
"serviceName": "notice.ticketresult",
|
||||
"messageIdentity": "8c82312e95158e289fd453f33114e0d2",
|
||||
"companyId": "1503141150"
|
||||
},
|
||||
"ticketResult": {
|
||||
"companyOrderId": "HN1681885121340",
|
||||
"resultCode": 1,
|
||||
"resultMsg": null,
|
||||
"ticketSuccTime": "2023-04-19 14:19:26",
|
||||
"operateTradeNo": "5027649989833265152",
|
||||
"orderMasterInfo": {
|
||||
"totalPayAmount": 12.00,
|
||||
"orderType": 2,
|
||||
"contactName": "vivi",
|
||||
"mobileNo": "up3E0hBuzNbADKxufANHMg==",
|
||||
"remark": ""
|
||||
},
|
||||
"passengerInfoList": [{
|
||||
"passengerId": 6197111157,
|
||||
"certificateType": 1,
|
||||
"certificateName": "赵鹏",
|
||||
"certificateNo": "oiHef47aYwngLzVN2iiBtTS80fvlfpc8",
|
||||
"birthday": null,
|
||||
"realName": "赵鹏",
|
||||
"passengerType": 1,
|
||||
"contactMobile": "7s0sfWX+Bx8=",
|
||||
"contactEmail": "7s0sfWX+Bx8="
|
||||
}
|
||||
],
|
||||
"orderRouteInfoList": [{
|
||||
"routeId": 1136901379,
|
||||
"departTime": "2023-04-30 10:16:00",
|
||||
"arrivalTime": "2023-04-30 10:26:00",
|
||||
"ticketCount": 1,
|
||||
"ticketPrice": 6.00,
|
||||
"fromStationName": "桂林",
|
||||
"toStationName": "桂林北",
|
||||
"trainNo": "D8268",
|
||||
"ticketSeat": "二等座",
|
||||
"acceptSeat": null,
|
||||
"routeNo": 1,
|
||||
"elecNo": "EJW2232127",
|
||||
"checkWindow": "检票口6"
|
||||
}
|
||||
],
|
||||
"orderTicketInfoList": [{
|
||||
"ticketId": 892585335,
|
||||
"routeId": 1136901379,
|
||||
"passengerId": 6197111157,
|
||||
"realTicketPrice": 6.00,
|
||||
"seatName": "二等座",
|
||||
"carriageNo": "7",
|
||||
"seatNo": "14B号",
|
||||
"createTime": "2023-04-19 14:19:26",
|
||||
"longElecNo": "23174648650D82685902",
|
||||
"quickPass": 0,
|
||||
"trainStatus": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*退票提交数据结构
|
||||
*/
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2023-04-28 09:46:40",
|
||||
"serviceName": "train.artificialTicketReturn",
|
||||
"companyId": "1503141150",
|
||||
"messageIdentity": "a46aa9f51cb8dbe299d2584aa41be93a"
|
||||
},
|
||||
"companyOrderId": "HN1681696305456",
|
||||
"operator": "vivi",
|
||||
"returnServiceFee": "15",
|
||||
"returnTicketList": [{
|
||||
"trainNo": "G2910",
|
||||
"carriageNo": "4",
|
||||
"seatNo": "5F\u53f7",
|
||||
"longElecNo": "23383214738D84519712",
|
||||
"cardFirstImage": "",
|
||||
"cardSecondImage": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
/*退票返回的数据结构*/
|
||||
{
|
||||
"ResponseStatus": {
|
||||
"Timestamp": "/Date(1683186036147+0800)/",
|
||||
"Ack": "Success",
|
||||
"Errors": [],
|
||||
"Build": null,
|
||||
"Version": null,
|
||||
"Extension": [{
|
||||
"Id": "CLOGGING_TRACE_ID",
|
||||
"Version": null,
|
||||
"ContentType": null,
|
||||
"Value": "5184875534824024628"
|
||||
}, {
|
||||
"Id": "RootMessageId",
|
||||
"Version": null,
|
||||
"ContentType": null,
|
||||
"Value": "100031671-0a638ae3-467551-5279705"
|
||||
}
|
||||
]
|
||||
},
|
||||
"returnCode": 0,
|
||||
"returnMessage": "车票价格需要大于 19.5才能退票"
|
||||
}
|
||||
|
||||
|
||||
/*退款calback*/
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2023-05-04 11:40:15",
|
||||
"serviceName": "notice.refundresult",
|
||||
"messageIdentity": "c38f06426a3e9b11d221f6402ab4fd99",
|
||||
"companyId": "1503141150"
|
||||
},
|
||||
"refundResult": {
|
||||
"companyOrderId": "HN1683171474981",
|
||||
"refundType": 5,
|
||||
"reason": null,
|
||||
"refundTime": "2023-05-04 11:40:04",
|
||||
"tradeNo": "5033045727832576000",
|
||||
"refundAmount": 12.00,
|
||||
"operateTradeNo": null,
|
||||
"refundDetailInfoList": null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*退款 多张票的情况 长订单号等有所不同*/
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2023-06-01 15:06:11",
|
||||
"serviceName": "notice.refundresult",
|
||||
"messageIdentity": "9af17693f6546dd0719cfcf3f4cbd896",
|
||||
"companyId": "4003171843"
|
||||
},
|
||||
"refundResult": {
|
||||
"companyOrderId": "HN1685430938567",
|
||||
"refundType": 2,
|
||||
"reason": null,
|
||||
"refundTime": "2023-06-01 15:06:11",
|
||||
"tradeNo": "5043244432384724992",
|
||||
"refundAmount": 271.00,
|
||||
"operateTradeNo": "5042802996723978240",
|
||||
"refundDetailInfoList": [{
|
||||
"longElecNo": "24060026739G65552055",
|
||||
"refundDetailType": 20,
|
||||
"refundDetailAmount": 271.00
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2023-06-01 15:06:11",
|
||||
"serviceName": "notice.refundresult",
|
||||
"messageIdentity": "9af17693f6546dd0719cfcf3f4cbd896",
|
||||
"companyId": "4003171843"
|
||||
},
|
||||
"refundResult": {
|
||||
"companyOrderId": "HN1685430938567",
|
||||
"refundType": 2,
|
||||
"reason": null,
|
||||
"refundTime": "2023-06-01 15:06:11",
|
||||
"tradeNo": "5043244431617167360",
|
||||
"refundAmount": 271.00,
|
||||
"operateTradeNo": "5042809037335433216",
|
||||
"refundDetailInfoList": [{
|
||||
"longElecNo": "24060026739G65552054",
|
||||
"refundDetailType": 20,
|
||||
"refundDetailAmount": 271.00
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
//澜海出票成功返回
|
||||
{
|
||||
"authentication": {
|
||||
"timeStamp": "2024-07-10 15:40:50",
|
||||
"appId": "3649601564",
|
||||
"mainOrderId": "HN1720487984255"
|
||||
},
|
||||
"bodyInfo": {
|
||||
"agentCode": "000001428",
|
||||
"contactMobile": "17722807804",
|
||||
"currentTime": "2022-09-29 10:40:50",
|
||||
"eOrderNumber": "E5W0086985",
|
||||
"failCode": 0,
|
||||
"orderPrice": "720.0",
|
||||
"orderResultCode": 200,
|
||||
"mainOrderId": "21158540860",
|
||||
"payTradeNumber": "2022092922001429951455254961",
|
||||
"resultMsg": "出票成功",
|
||||
"ticketList": [{
|
||||
"ticketCheck": "检票口13AB",
|
||||
"arriveTime": "2022-10-04 22:33:00",
|
||||
"deliveryTicketId": 76861483,
|
||||
"departTime": "2022-10-04 20:02",
|
||||
"fromStationName": "赣县北",
|
||||
"passengerList": [{
|
||||
"carriageNo": "03",
|
||||
"passengerId": 113317051,
|
||||
"passengerName": "何沙沙",
|
||||
"passengerType": 2,
|
||||
"passportNumber": "420821198609055029",
|
||||
"passportType": "1",
|
||||
"passportTypeName": "身份证",
|
||||
"realTicketPrice": "288.0",
|
||||
"seatName": "二等座",
|
||||
"seatNo": "05D"
|
||||
}, {
|
||||
"carriageNo": "03",
|
||||
"passengerId": 113317052,
|
||||
"passengerName": "刘明山",
|
||||
"passengerType": 2,
|
||||
"passportNumber": "362121197703160012",
|
||||
"passportType": "1",
|
||||
"passportTypeName": "身份证",
|
||||
"realTicketPrice": "288.0",
|
||||
"seatName": "二等座",
|
||||
"seatNo": "06C"
|
||||
}, {
|
||||
"carriageNo": "03",
|
||||
"passengerId": 113317053,
|
||||
"passengerName": "刘沛勋【儿童票】",
|
||||
"passengerType": 3,
|
||||
"passportNumber": "360721201007070013",
|
||||
"passportType": "1",
|
||||
"passportTypeName": "身份证",
|
||||
"realTicketPrice": "144.0",
|
||||
"seatName": "二等座",
|
||||
"seatNo": "09F"
|
||||
}
|
||||
],
|
||||
"ticketCount": 3,
|
||||
"ticketPrice": "288.0",
|
||||
"toStationName": "深圳北",
|
||||
"trainNumber": "G2793"
|
||||
}
|
||||
],
|
||||
"ticketSuccessTime": "2022-09-29 10:40:50",
|
||||
"userId": 65
|
||||
}
|
||||
}
|
@ -1,133 +0,0 @@
|
||||
/*澜海返回*/
|
||||
{
|
||||
"bodyInfo": "HEYIbCfmv/d057K+gdHTKpv7FVeC4QYpF178Zu69jv0lxaHZbPc6GyiuJFTf1ZT9dFZCWKnHw0tFTZkNepGH7oLkt0CS2h1IEiSs0XPwnzKN9g/RlEaiMPh7rl9ZuBIFxaWRvyKK1cxjxb5CZxrjaIaV/Cm3hmdsIFum2vSGsuTy3FwjRty6RvI+d1rMy+XcInKWewzd9eCUgpA5u68SL9IJJ9TzbKpHI0f9ab/Cu28m2v7ZpQPWC3DgqYgP84x6NFniu0Js/PXU3e5a2lZz1z+a4gX2NvGNINMvNsClpzRzikEVTWqxhz/apLcwnDEJwS2Spt8zt9g3aVgtF6jc9QOdWZYrzuNWV2DH0mdn8Cyb1gqRK+0nLtPQt/NzO0xVLHlZuCsSTW9/r7ZjDd07gX6D+EQzDXVGpKbP+TerNOu77V+SYC5VDBYycpfa+w6Z48OzLZL5D4KN/y5lFI1cWK4MQ8IMlBHd8UUu5Rurx7yCLZvKsaxAK6MzW+Kdf7hza+B18AwPrtvXZ26H66kSF6FK4s6hvrvyeGsUxj2teHdDr9XjDsEnjw8qdamUYSModr0tfQyX5HW7bENc8w8mvCHvJS+fz/eiZctPQ+p8t+RCv0OBwIEVRtivFvkTB3M8xtsAO1oM1LtX13FoSsxyzNFB2d4rTj1K1fPbhmxMKGWmxDdPy4JOzk9OEB9cbG4a22bI/vSnp+YDqu5a/Vp9EeIBOfYUNXTpqnhBaff8ORreXEehjKJzrKZ8XKKcxo7V5S5P02RV2cO9V/v5uL/rbSPBnmR+9qizb9aBBjUKedBLVXXZO1sKJOohv71qFKXauNc6ASW/1iKl08mW4MYAlR1IL1UDr0aWhw7OhYDK+fbRlh55kALEfmn98bvwltrS56QWULdzfpTYSiVnOZ165NX8ywcT+CwF1+WGY6Hj+uYNeIulZKI9XBUKcmqat5RwUEyMNKB3KAdizeiOzp6QAomCttz7XxXJ9h+mWkhDipY8jktMX2Ss3zRCuO0lGphtFxpYdJ3sPYtQnRD71wSUeMVnNzSBcmYBwG3l2tlBrjtIddHp60ZUIYnUcFMKriPn7iO3UWWlVz/XX0ELHrLcXQ==",
|
||||
"authentication": {
|
||||
"timeStamp": "2024-07-16 15:42:48",
|
||||
"appId": "3649601564",
|
||||
"mainOrderId": "HN1721115685991"
|
||||
}
|
||||
}
|
||||
|
||||
/*返回编译*/
|
||||
{
|
||||
"agentCode": "3649601564",
|
||||
"contactMobile": "18877331805",
|
||||
"currentTime": "2024-07-16 15:42:48",
|
||||
"eOrderNumber": "EGW1561545",
|
||||
"failCode": 0,
|
||||
"mainOrderId": "HN1721115685991",
|
||||
"orderPrice": "6.0",
|
||||
"orderResultCode": 200,
|
||||
"payTradeNumber": "1452204560486540561056048965",
|
||||
"resultMsg": "\u51fa\u7968\u6210\u529f",
|
||||
"ticketList": [{
|
||||
"arriveTime": "2024-07-18 09:23",
|
||||
"deliveryTicketId": 586043269,
|
||||
"departTime": "2024-07-18 09:13",
|
||||
"fromStationName": "\u6842\u6797",
|
||||
"passengerList": [{
|
||||
"carriageNo": "01",
|
||||
"passengerId": 571060468,
|
||||
"passengerName": "\u8d75\u9e4f",
|
||||
"passengerType": 1,
|
||||
"passportNumber": "450303197904120517",
|
||||
"passportType": "1",
|
||||
"passportTypeName": "\u8eab\u4efd\u8bc1",
|
||||
"realTicketPrice": "6.0",
|
||||
"seatName": "\u4e8c\u7b49\u5ea7",
|
||||
"seatNo": "2A",
|
||||
"ticketName": ""
|
||||
}
|
||||
],
|
||||
"ticketCount": 1,
|
||||
"ticketPrice": "6.0",
|
||||
"toStationName": "\u6842\u6797\u5317",
|
||||
"trainNumber": "G2910"
|
||||
}
|
||||
],
|
||||
"ticketSuccessTime": "2024-07-16 15:42:48",
|
||||
"userId": 428
|
||||
}
|
||||
/**账单列表*/
|
||||
{
|
||||
"success": true,
|
||||
"code": "0",
|
||||
"msg": "",
|
||||
- "data": {
|
||||
- "records": [
|
||||
- {
|
||||
"saveDay": "2024-07-31",
|
||||
"type": "出票",
|
||||
"mainOrderId": "HN1722438313448",
|
||||
"dataId": null,
|
||||
"ticket12306Id": "E1W1330191",
|
||||
"trainNum": "K73",
|
||||
"fromStation": "重庆北",
|
||||
"toStation": "张家界西",
|
||||
"fromTime": "2024-08-12 08:32",
|
||||
"passengerName": "ABAJO LOPEZ LUCIA",
|
||||
"price": 69,
|
||||
"oldPrice": null,
|
||||
"changeCost": null,
|
||||
"handleTime": "2024-07-31 23:08:08",
|
||||
"createTime": "2024-07-31 23:05:32"
|
||||
},
|
||||
- {
|
||||
"saveDay": "2024-07-31",
|
||||
"type": "出票",
|
||||
"mainOrderId": "HN1722438313448",
|
||||
"dataId": null,
|
||||
"ticket12306Id": "E1W1330191",
|
||||
"trainNum": "K73",
|
||||
"fromStation": "重庆北",
|
||||
"toStation": "张家界西",
|
||||
"fromTime": "2024-08-12 08:32",
|
||||
"passengerName": "ESCAMILLA QUILES MARIO",
|
||||
"price": 69,
|
||||
"oldPrice": null,
|
||||
"changeCost": null,
|
||||
"handleTime": "2024-07-31 23:08:08",
|
||||
"createTime": "2024-07-31 23:05:32"
|
||||
},
|
||||
- {
|
||||
"saveDay": "2024-08-01",
|
||||
"type": "出票",
|
||||
"mainOrderId": "HN1722441803173",
|
||||
"dataId": null,
|
||||
"ticket12306Id": "E2W4589927",
|
||||
"trainNum": "D954",
|
||||
"fromStation": "宜昌东",
|
||||
"toStation": "上海",
|
||||
"fromTime": "2024-08-13 14:06",
|
||||
"passengerName": " PALOMA PALENCIA GRANDE",
|
||||
"price": 676,
|
||||
"oldPrice": null,
|
||||
"changeCost": null,
|
||||
"handleTime": "2024-08-01 00:06:37",
|
||||
"createTime": "2024-08-01 00:03:56"
|
||||
},
|
||||
- {
|
||||
"saveDay": "2024-08-01",
|
||||
"type": "出票",
|
||||
"mainOrderId": "HN1722441803173",
|
||||
"dataId": null,
|
||||
"ticket12306Id": "E2W4589927",
|
||||
"trainNum": "D954",
|
||||
"fromStation": "宜昌东",
|
||||
"toStation": "上海",
|
||||
"fromTime": "2024-08-13 14:06",
|
||||
"passengerName": "FRANCISCO RAFAEL GARCIA TUDELA",
|
||||
"price": 676,
|
||||
"oldPrice": null,
|
||||
"changeCost": null,
|
||||
"handleTime": "2024-08-01 00:06:37",
|
||||
"createTime": "2024-08-01 00:03:56"
|
||||
}
|
||||
],
|
||||
"total": 4,
|
||||
"size": 100,
|
||||
"current": 1,
|
||||
"searchCount": true,
|
||||
"pages": 1
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
[{"id":1,"seatName":"硬座","seatItems":["硬座","无座"]},{"id":2,"seatName":"硬卧","seatItems":["硬卧上","硬卧中","硬卧下"]},{"id":3,"seatName":"软座","seatItems":["软座"]},{"id":4,"seatName":"一等软座","seatItems":["一等软座"]},{"id":5,"seatName":"二等软座","seatItems":["二等软座"]},{"id":6,"seatName":"特等软座","seatItems":["特等软座"]},{"id":7,"seatName":"软卧","seatItems":["软卧上","软卧下"]},{"id":8,"seatName":"商务座","seatItems":["商务座"]},{"id":9,"seatName":"一等包座","seatItems":["一等包座"]},{"id":10,"seatName":"观光座","seatItems":["观光座"]},{"id":11,"seatName":"特等座","seatItems":["特等座"]},{"id":12,"seatName":"一等座","seatItems":["一等座"]},{"id":13,"seatName":"二等座","seatItems":["二等座","无座"]},{"id":14,"seatName":"高级软卧","seatItems":["高级软卧上","高级软卧下"]},{"id":15,"seatName":"包厢硬卧","seatItems":["包厢硬卧上","包厢硬卧中","包厢硬卧下"]},{"id":16,"seatName":"包厢软座","seatItems":["包厢软座"]},{"id":17,"seatName":"一等卧","seatItems":["一等卧上","一等卧下"]},{"id":18,"seatName":"二等卧","seatItems":["二等卧上","二等卧中","二等卧下"]},{"id":19,"seatName":"混编软座","seatItems":["混编软座"]},{"id":20,"seatName":"动卧","seatItems":["动卧上","动卧下"]},{"id":21,"seatName":"多功能座","seatItmes":["多功能座"]},{"id":22,"seatName":"二等包座","seatItems":["二等包座"]},{"id":23,"seatName":"一人软包","seatItems":["一人软包"]},{"id":24,"seatName":"二等软包","seatItmes":["二等软包"]},{"id":25,"seatName":"高级动卧","seatItems":["高级动卧上","高级动卧下"]}]
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,29 +0,0 @@
|
||||
<div class="right_tour">
|
||||
<div class="feedback_logo" style="width: auto; display: flex;">
|
||||
<img height="65" style="margin: 0px auto; " width="150"
|
||||
src="https://images.chinahighlights.com/allpicture/2024/07/22bf1a7554fc4906bdeaa6536ffe514b_cut_175x68_241_1719916246.png" alt="Trip Advisor certificate of excellence 2024"/>
|
||||
<img alt="Tour rating" class="img-responsive" height="278"
|
||||
style="width: 140px; display: block; margin: 0 auto; " width="1133"
|
||||
src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" />
|
||||
</div>
|
||||
<p style="text-align: center;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 0;
|
||||
font-size: 18px;
|
||||
line-height: 21px;">Discover real reviews of <a href="/about-us/highlights-travel-family">Highlights Travel Family</a>'s best-rated service across trusted platforms.</p>
|
||||
<?php foreach ($feedback_list as $index => $feedback) {?>
|
||||
<div class="tour_feedback" style="width: auto; height: auto;">
|
||||
<div class="feedback_content">
|
||||
<strong style="height: auto;"><?php echo $feedback['title'] ?></strong>
|
||||
<p class="feedback_rating"><img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>" alt="tour rating"></p>
|
||||
<p><?php echo $feedback['content'] ?></p>
|
||||
<a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">more</a>
|
||||
<div class="customer_name">
|
||||
<?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php }?>
|
||||
<p style="margin-top: 20px;"><a href="/reviews">More reviews</a></p>
|
||||
</div>
|
@ -1,25 +0,0 @@
|
||||
|
||||
<img class="img-responsive" height="69" src="https://images.asiahighlights.com/allpicture/2024/04/b3e0271ca0874b7cb0342ea6f2987723_cut_175x68_241.jpg" style="float: left; width: 150px; margin: 0 auto;
|
||||
display: block;" width="175">
|
||||
<img height="40" src="https://images.asiahighlights.com/allpicture/2024/04/0c58b3494bc04eeb9c5d3bdf55e55fad_cut_200x111_241.jpg" style="width: 120px; height: auto; display: block;
|
||||
float: right;" width="211">
|
||||
<?php foreach ($feedback_list as $index => $feedback) {?>
|
||||
<div class="tour_feedback_right">
|
||||
<div class="feedback_content_right">
|
||||
<strong>
|
||||
<?php echo $feedback['title'] ?>
|
||||
</strong>
|
||||
<p class="feedback_rating"><img src="<?php if (strpos($feedback['url'], 'trustpilot.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/eba8a46e43514b55bb4e1dd15d9b5712_cut_211x40_241.jpg'; } else if (strpos($feedback['url'], 'tripadvisor.com') == true) { echo 'https://images.asiahighlights.com/allpicture/2024/04/8bebcc898ce54b64a46ced58580966d4_cut_104x19_241.jpg'; } ?>"></p>
|
||||
<p>
|
||||
<?php echo $feedback['content'] ?>
|
||||
</p>
|
||||
<a href="<?php echo $feedback['url'] ?>" target="_blank" rel="nofollow">More</a>
|
||||
<div class="customer_name">
|
||||
<?php echo $feedback['customer'] ?>, <?php echo $feedback['createdOn'] ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php }?>
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,592 +0,0 @@
|
||||
<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja"></script>
|
||||
<div class="tmbottom">
|
||||
<h3 style="font-size: 24px; line-height: 22px;">Book Now for Chiang Mai CAD New Year Countdown to 2025 Festival Ticket</h3>
|
||||
<form id='ticket_form' action="https://www.asiahighlights.com/orders/new_year_countdown_save" method="post" >
|
||||
<p style="font-size: 22px;"><strong>Select Date:</strong></p>
|
||||
<div class="selectHotl" style="margin-bottom: 20px;">
|
||||
<div class="optionLable">
|
||||
<input type="radio" value="2024-12-30" id="december30th" name="ticket_date">
|
||||
<label for="december30th">
|
||||
December 30th, 2024
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="optionLable">
|
||||
<input type="radio" value="2024-12-31" checked id="december31st" name="ticket_date">
|
||||
<label for="december31st">
|
||||
December 31st, 2024
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p style="font-size: 22px;"><strong>Select an Available Ticket Type</strong></p>
|
||||
<div class="selectHotl" style="margin-bottom: 20px;">
|
||||
<div class="optionLable" id="ticket_type_elite_december30th" style="display: none">
|
||||
<input type="radio" value="Elite Ticket" id="elite_december30th" data-price="189" name="ticket_type">
|
||||
<label for="elite_december30th" style="font-size:18px;">
|
||||
<strong style=" margin-bottom: 5px;
|
||||
display: block;
|
||||
font-size: 19px;">Elite Ticket</strong>
|
||||
<div class="selectionMemo" style="line-height: 18px;">
|
||||
US$189 (6900THB)
|
||||
<br>
|
||||
Elite service + shuttle transfer + dinner
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="optionLable" id="ticket_type_elite_december31th">
|
||||
<input type="radio" value="Elite Ticket" id="elite_december31th" data-price="329" name="ticket_type">
|
||||
<label for="elite_december31th" style="font-size:18px;">
|
||||
<strong style=" margin-bottom: 5px;
|
||||
display: block;
|
||||
font-size: 19px;">Elite Ticket</strong>
|
||||
<div class="selectionMemo" style="line-height: 18px;">
|
||||
US$329 (11,750 THB)
|
||||
<br>
|
||||
Elite service + <strong>exclusive hotel transfer</strong> + dinner
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="optionLable" id="vip_type_premium_december30th" style="display: none">
|
||||
<input type="radio" value="Premium Ticket" id="premium_december30th" data-price="139" name="ticket_type">
|
||||
<label for="premium_december30th" style="font-size:18px;">
|
||||
<strong style=" margin-bottom: 5px;
|
||||
display: block;
|
||||
font-size: 19px;">Premium Ticket</strong>
|
||||
<div class="selectionMemo" style="line-height: 18px;">
|
||||
US$139 (4900THB)
|
||||
<br>
|
||||
Premium service + shuttle transfer + dinner
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="optionLable" id="vip_type_premium_december31th">
|
||||
<input type="radio" value="Premium Ticket" id="premium_december31th" data-price="179" name="ticket_type">
|
||||
<label for="premium_december31th" style="font-size:18px;">
|
||||
<strong style=" margin-bottom: 5px;
|
||||
display: block;
|
||||
font-size: 19px;">Premium Ticket</strong>
|
||||
<div class="selectionMemo" style="line-height: 18px;">
|
||||
US$179 (6,500 THB)
|
||||
<br>
|
||||
Premium service + shuttle transfer + dinner
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="optionLable" id="ticket_type_standard_december30th" style="display: none">
|
||||
<input type="radio" value="VIP Ticket" id="vip_december30th" data-price="109" name="ticket_type">
|
||||
<label for="vip_december30th" style="font-size:18px;">
|
||||
<strong style=" margin-bottom: 5px;
|
||||
display: block;
|
||||
font-size: 19px;">VIP Ticket</strong>
|
||||
<div class="selectionMemo" style="line-height: 18px;">
|
||||
US$109 (3900THB)
|
||||
<br>
|
||||
VIP service + shuttle transfer + dinner
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="optionLable" id="ticket_type_standard_december31th">
|
||||
<input type="radio" value="VIP Ticket" checked id="vip_december31th" data-price="139" name="ticket_type">
|
||||
<label for="vip_december31th" style="font-size:18px;">
|
||||
<strong style=" margin-bottom: 5px;
|
||||
display: block;
|
||||
font-size: 19px;">VIP Ticket</strong>
|
||||
<div class="selectionMemo" style="line-height: 18px;">
|
||||
US$139 (5,000 THB)
|
||||
<br>
|
||||
VIP service + shuttle transfer + dinner
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="ticket_type_errmsg" style="display: none">
|
||||
<div class="requiredArea" style="margin-top:-10px;">Please select at least one option.</div>
|
||||
</div>
|
||||
<p style="font-size: 22px;"><strong>Select Ticket Quantity</strong></p>
|
||||
<div class="peopleSelect" style="width: auto;">
|
||||
<span class="formMemo">
|
||||
Adults and older children (8+ years old)
|
||||
</span>
|
||||
<div class="numberBtn">
|
||||
<input class="minaddBtn reduceadult" id='minusButton' type="button" value="-">
|
||||
<input class="number" id="adultNumberValue" readonly="readonly" type="text" value="1"
|
||||
name="adult" style="width: 50px;
|
||||
height: 22px;
|
||||
top: -5px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
font-size: 20px;">
|
||||
<input class="minaddBtn addadult" id='plusButton' type="button" value="+">
|
||||
</div>
|
||||
</div>
|
||||
<div class="payonline_price">Total price: <strong id="totalPriceText">$129</strong></div>
|
||||
|
||||
<p style=" margin-top: 30px;
|
||||
margin-bottom: 10px;"><strong>Please provide correct personal information for your ticket
|
||||
booking. Double
|
||||
check.</strong></p>
|
||||
<input class="FullName" id="ticket_realname" name="fullname"
|
||||
placeholder="Your name * (exactly per passport)" required="" type="text" value="" />
|
||||
<div id="ticket_realname_errmsg" style="display: none">
|
||||
<div class="requiredArea" style="margin-top:-10px;">Please enter your name.</div>
|
||||
</div>
|
||||
<input class="EmailAddress" id="ticket_email" name="email" placeholder="Email *" required="" type="text"
|
||||
value="" />
|
||||
<div id="ticket_email_errmsg" style="display: none">
|
||||
<div class="requiredArea" style="margin-top:-10px;">Please enter your email.</div>
|
||||
</div>
|
||||
<div id="ticket_email_verify_errmsg" style="display: none">
|
||||
<div class="requiredArea" style="margin-top:-10px;">Please verify your email.</div>
|
||||
</div>
|
||||
<select name="country_code" class="country_code">
|
||||
<option style="font-weight: 600;" value="United States +1">United States +1</option>
|
||||
<option style="font-weight: 600;" value="United Kingdom +44">United Kingdom +44</option>
|
||||
<option style="font-weight: 600;" value="Australia +61">Australia +61</option>
|
||||
<option style="font-weight: 600;" value="Canada +1">Canada +1</option>
|
||||
<option style="font-weight: 600;" value="France +33">France +33</option>
|
||||
<option style="font-weight: 600;" value="Germany +49">Germany +49</option>
|
||||
<option style="font-weight: 600; " value="Italy +39">Italy +39</option>
|
||||
<option style="font-weight: 600; " value="Mexico +52">Mexico +52</option>
|
||||
<option style="font-weight: 600; " value="Netherlands +31">Netherlands +31</option>
|
||||
<option style="font-weight: 600; " value="Singapore +65">Singapore +65</option>
|
||||
<option value="Afghanistan +93">Afghanistan +93</option>
|
||||
<option value="Albania +355">Albania +355</option>
|
||||
<option value="Algeria +213">Algeria +213</option>
|
||||
<option value="American Samoa +1">American Samoa +1684</option>
|
||||
<option value="Andorra +376">Andorra +376</option>
|
||||
<option value="Angola +244">Angola +244</option>
|
||||
<option value="Anguilla +1">Anguilla +1264</option>
|
||||
<option value="Australia +61">Australia +61</option>
|
||||
<option value="Antigua and Barbuda +1">Antigua and Barbuda +1268</option>
|
||||
<option value="Argentina +54">Argentina +54</option>
|
||||
<option value="Armenia +374">Armenia +374</option>
|
||||
<option value="Aruba +297">Aruba +297</option>
|
||||
<option value="Ascension Island +247">Ascension Island +247</option>
|
||||
<option value="Austria +43">Austria +43</option>
|
||||
<option value="Azerbaijan +994">Azerbaijan +994</option>
|
||||
<option value="Bahamas +1">Bahamas +1242</option>
|
||||
<option value="Bahrain +973">Bahrain +973</option>
|
||||
<option value="Bangladesh +880">Bangladesh +880</option>
|
||||
<option value="Barbados +1">Barbados +1246</option>
|
||||
<option value="Belarus +375">Belarus +375</option>
|
||||
<option value="Belgium +32">Belgium +32</option>
|
||||
<option value="Belize +501">Belize +501</option>
|
||||
<option value="Benin +229">Benin +229</option>
|
||||
<option value="Bermuda +1">Bermuda +1441</option>
|
||||
<option value="Bhutan +975">Bhutan +975</option>
|
||||
<option value="Bolivia +591">Bolivia +591</option>
|
||||
<option value="Bosnia and Herzegovina +387">Bosnia and Herzegovina +387</option>
|
||||
<option value="Botswana +267">Botswana +267</option>
|
||||
<option value="Brazil +55">Brazil +55</option>
|
||||
<option value="British Indian Ocean Territory +246">British Indian Ocean Territory +246</option>
|
||||
<option value="British Virgin Islands +1">British Virgin Islands +1284</option>
|
||||
<option value="Brunei +673">Brunei +673</option>
|
||||
<option value="Bulgaria +359">Bulgaria +359</option>
|
||||
<option value="Burkina Faso +226">Burkina Faso +226</option>
|
||||
<option value="Burundi +257">Burundi +257</option>
|
||||
<option value="Cambodia +855">Cambodia +855</option>
|
||||
<option value="Cameroon +237">Cameroon +237</option>
|
||||
<option value="Canada +1">Canada +1</option>
|
||||
<option value="Cape Verde +238">Cape Verde +238</option>
|
||||
<option value="Caribbean Netherlands +599">Caribbean Netherlands +599</option>
|
||||
<option value="Cayman Islands +1">Cayman Islands +1345</option>
|
||||
<option value="Central African Republic +236">Central African Republic +236</option>
|
||||
<option value="Chad +235">Chad +235</option>
|
||||
<option value="Chile +56">Chile +56</option>
|
||||
<option value="China +86">China +86</option>
|
||||
<option value="Christmas Island +61">Christmas Island +6189164</option>
|
||||
<option value="Cocos Islands +61">Cocos Islands +6189162</option>
|
||||
<option value="Colombia +57">Colombia +57</option>
|
||||
<option value="Comoros +269">Comoros +269</option>
|
||||
<option value="Congo +243">Congo (DRC) +243</option>
|
||||
<option value="Congo +242">Congo (Republic) +242</option>
|
||||
<option value="Cook Islands +682">Cook Islands +682</option>
|
||||
<option value="Costa Rica +506">Costa Rica +506</option>
|
||||
<option value="Côte d'Ivoire +225">Côte d'Ivoire +225</option>
|
||||
<option value="Croatia +385">Croatia +385</option>
|
||||
<option value="Cuba +53">Cuba +53</option>
|
||||
<option value="Curaçao +599">Curaçao +599</option>
|
||||
<option value="Cyprus +357">Cyprus +357</option>
|
||||
<option value="Czech Republic +420">Czech Republic +420</option>
|
||||
<option value="Denmark +45">Denmark +45</option>
|
||||
<option value="Djibouti +253">Djibouti +253</option>
|
||||
<option value="Dominica +1">Dominica +1767</option>
|
||||
<option value="Dominican Republic +1">Dominican Republic +1809</option>
|
||||
<option value="Ecuador +593">Ecuador +593</option>
|
||||
<option value="Egypt +20">Egypt +20</option>
|
||||
<option value="El Salvador +503">El Salvador +503</option>
|
||||
<option value="Equatorial Guinea +240">Equatorial Guinea +240</option>
|
||||
<option value="Eritrea +291">Eritrea +291</option>
|
||||
<option value="Estonia +372">Estonia +372</option>
|
||||
<option value="Eswatini +268">Eswatini +268</option>
|
||||
<option value="Ethiopia +251">Ethiopia +251</option>
|
||||
<option value="Falkland Islands +500">Falkland Islands +500</option>
|
||||
<option value="Faroe Islands +298">Faroe Islands +298</option>
|
||||
<option value="Fiji +679">Fiji +679</option>
|
||||
<option value="Finland +358">Finland +358</option>
|
||||
<option value="France +33">France +33</option>
|
||||
<option value="French Guiana +594">French Guiana +594</option>
|
||||
<option value="French Polynesia +689">French Polynesia +689</option>
|
||||
<option value="Gabon +241">Gabon +241</option>
|
||||
<option value="Gambia +220">Gambia +220</option>
|
||||
<option value="Georgia +995">Georgia +995</option>
|
||||
<option value="Germany +49">Germany +49</option>
|
||||
<option value="Ghana +233">Ghana +233</option>
|
||||
<option value="Gibraltar +350">Gibraltar +350</option>
|
||||
<option value="Greece +30">Greece +30</option>
|
||||
<option value="Greenland +299">Greenland +299</option>
|
||||
<option value="Grenada +1">Grenada +1473</option>
|
||||
<option value="Guadeloupe +590">Guadeloupe +590</option>
|
||||
<option value="Guam +1">Guam +1671</option>
|
||||
<option value="Guatemala +502">Guatemala +502</option>
|
||||
<option value="Guernsey +44">Guernsey +441481</option>
|
||||
<option value="Guinea +224">Guinea +224</option>
|
||||
<option value="Guinea-Bissau +245">Guinea-Bissau +245</option>
|
||||
<option value="Guyana +592">Guyana +592</option>
|
||||
<option value="Haiti +509">Haiti +509</option>
|
||||
<option value="Honduras +504">Honduras +504</option>
|
||||
<option value="Hong Kong +852">Hong Kong +852</option>
|
||||
<option value="Hungary +36">Hungary +36</option>
|
||||
<option value="Iceland +354">Iceland +354</option>
|
||||
<option value="India +91">India +91</option>
|
||||
<option value="Indonesia +62">Indonesia +62</option>
|
||||
<option value="Iran +98">Iran +98</option>
|
||||
<option value="Iraq +964">Iraq +964</option>
|
||||
<option value="Ireland +353">Ireland +353</option>
|
||||
<option value="Isle of Man +44">Isle of Man +44</option>
|
||||
<option value="Israel +972">Israel +972</option>
|
||||
<option value="Italy +39">Italy +39</option>
|
||||
<option value="Jamaica +1">Jamaica +1876</option>
|
||||
<option value="Japan +81">Japan +81</option>
|
||||
<option value="Jersey +44">Jersey +44</option>
|
||||
<option value="Jordan +962">Jordan +962</option>
|
||||
<option value="Kazakhstan +7">Kazakhstan +7</option>
|
||||
<option value="Kenya +254">Kenya +254</option>
|
||||
<option value="Kiribati +686">Kiribati +686</option>
|
||||
<option value="Kosovo +383">Kosovo +383</option>
|
||||
<option value="Kuwait +965">Kuwait +965</option>
|
||||
<option value="Kyrgyzstan +996">Kyrgyzstan +996</option>
|
||||
<option value="Laos +856">Laos +856</option>
|
||||
<option value="Latvia +371">Latvia +371</option>
|
||||
<option value="Lebanon +961">Lebanon +961</option>
|
||||
<option value="Lesotho +266">Lesotho +266</option>
|
||||
<option value="Liberia +231">Liberia +231</option>
|
||||
<option value="Libya +218">Libya +218</option>
|
||||
<option value="Liechtenstein +423">Liechtenstein +423</option>
|
||||
<option value="Lithuania +370">Lithuania +370</option>
|
||||
<option value="Luxembourg +352">Luxembourg +352</option>
|
||||
<option value="Macau +853">Macau +853</option>
|
||||
<option value="Macedonia +389">Macedonia +389</option>
|
||||
<option value="Madagascar +261">Madagascar +261</option>
|
||||
<option value="Malawi +265">Malawi +265</option>
|
||||
<option value="Malaysia +60">Malaysia +60</option>
|
||||
<option value="Maldives +960">Maldives +960</option>
|
||||
<option value="Mali +223">Mali +223</option>
|
||||
<option value="Malta +356">Malta +356</option>
|
||||
<option value="Marshall +692">Marshall Islands +692</option>
|
||||
<option value="Martinique +596">Martinique +596</option>
|
||||
<option value="Mauritania +222">Mauritania +222</option>
|
||||
<option value="Mauritius +230">Mauritius +230</option>
|
||||
<option value="Mayotte +262">Mayotte +262</option>
|
||||
<option value="Micronesia +691">Micronesia +691</option>
|
||||
<option value="Moldova +373">Moldova +373</option>
|
||||
<option value="Monaco +377">Monaco +377</option>
|
||||
<option value="Mongolia +976">Mongolia +976</option>
|
||||
<option value="Montenegro +382">Montenegro +382</option>
|
||||
<option value="Montserrat +1">Montserrat +1664</option>
|
||||
<option value="Morocco +212">Morocco +212</option>
|
||||
<option value="Mozambique +258">Mozambique +258</option>
|
||||
<option value="Myanmar +95">Myanmar +95</option>
|
||||
<option value="Namibia +264">Namibia +264</option>
|
||||
<option value="Nauru +674">Nauru +674</option>
|
||||
<option value="Nepal +977">Nepal +977</option>
|
||||
<option value="New Caledonia +687">New Caledonia +687</option>
|
||||
<option value="New Zealand +64">New Zealand +64</option>
|
||||
<option value="Nicaragua +505">Nicaragua +505</option>
|
||||
<option value="Niger +227">Niger +227</option>
|
||||
<option value="Nigeria +234">Nigeria +234</option>
|
||||
<option value="Niue +683">Niue +683</option>
|
||||
<option value="Norfolk Island +672">Norfolk Island +6723</option>
|
||||
<option value="North Korea +850">North Korea +850</option>
|
||||
<option value="Northern Mariana Islands +1">Northern Mariana Islands +1670</option>
|
||||
<option value="Norway +47">Norway +47</option>
|
||||
<option value="Oman +968">Oman +968</option>
|
||||
<option value="Pakistan +92">Pakistan +92</option>
|
||||
<option value="Palau +680">Palau +680</option>
|
||||
<option value="Palestine +970">Palestine +970</option>
|
||||
<option value="Panama +507">Panama +507</option>
|
||||
<option value="Papua New Guinea 675">Papua New Guinea +675</option>
|
||||
<option value="Paraguay +595">Paraguay +595</option>
|
||||
<option value="Peru +51">Peru +51</option>
|
||||
<option value="Philippines +63">Philippines +63</option>
|
||||
<option value="Poland +48">Poland +48</option>
|
||||
<option value="Portugal +351">Portugal +351</option>
|
||||
<option value="Puerto Rico +1">Puerto Rico +1787</option>
|
||||
<option value="Qatar +974">Qatar +974</option>
|
||||
<option value="Réunion +262">Réunion +262</option>
|
||||
<option value="Romania +40">Romania +40</option>
|
||||
<option value="Russia +7">Russia +7</option>
|
||||
<option value="Rwanda +250">Rwanda +250</option>
|
||||
<option value="Saint Barthélemy +590">Saint Barthélemy +590</option>
|
||||
<option value="Saint Helena +290">Saint Helena +290</option>
|
||||
<option value="Saint Kitts and Nevis +1">Saint Kitts and Nevis +1869</option>
|
||||
<option value="Saint Lucia +1">Saint Lucia +1758</option>
|
||||
<option value="Saint Martin +590">Saint Martin +590</option>
|
||||
<option value="Saint Pierre and Miquelon +508">Saint Pierre and Miquelon +508</option>
|
||||
<option value="Saint Vincent and the Grenadines +1">Saint Vincent and the Grenadines +1784</option>
|
||||
<option value="Samoa +685">Samoa +685</option>
|
||||
<option value="San Marino +378">San Marino +378</option>
|
||||
<option value="São Tomé and Príncipe +239">São Tomé and Príncipe +239</option>
|
||||
<option value="Saudi Arabia +966">Saudi Arabia +966</option>
|
||||
<option value="Senegal +221">Senegal +221</option>
|
||||
<option value="Serbia +381">Serbia +381</option>
|
||||
<option value="Seychelles +248">Seychelles +248</option>
|
||||
<option value="Sierra Leone +232">Sierra Leone +232</option>
|
||||
<option value="Sint Maarten +1">Sint Maarten +1721</option>
|
||||
<option value="Slovakia +421">Slovakia +421</option>
|
||||
<option value="Slovenia +386">Slovenia +386</option>
|
||||
<option value="Solomon Islands +677">Solomon Islands +677</option>
|
||||
<option value="Somalia +252">Somalia +252</option>
|
||||
<option value="South Africa +27">South Africa +27</option>
|
||||
<option value="South Korea +82">South Korea +82</option>
|
||||
<option value="South Sudan +211">South Sudan +211</option>
|
||||
<option value="Spain +34">Spain +34</option>
|
||||
<option value="Sri Lanka +94">Sri Lanka +94</option>
|
||||
<option value="Sudan +249">Sudan +249</option>
|
||||
<option value="Suriname">Suriname +597</option>
|
||||
<option value="Svalbard and Jan Mayen +47">Svalbard and Jan Mayen +47</option>
|
||||
<option value="Sweden +46">Sweden +46</option>
|
||||
<option value="Switzerland +41">Switzerland +41</option>
|
||||
<option value="Syria +963">Syria +963</option>
|
||||
<option value="Taiwan +886">Taiwan +886</option>
|
||||
<option value="Tajikistan +992">Tajikistan +992</option>
|
||||
<option value="Tanzania +255">Tanzania +255</option>
|
||||
<option value="Thailand +66">Thailand +66</option>
|
||||
<option value="Timor-Leste +670">Timor-Leste +670</option>
|
||||
<option value="Togo +228">Togo +228</option>
|
||||
<option value="Tokelau +690">Tokelau +690</option>
|
||||
<option value="Tonga +676">Tonga +676</option>
|
||||
<option value="Trinidad and Tobago +1">Trinidad and Tobago +1868</option>
|
||||
<option value="Tunisia +216">Tunisia +216</option>
|
||||
<option value="Turkey +90">Turkey +90</option>
|
||||
<option value="Turkmenistan +993">Turkmenistan +993</option>
|
||||
<option value="Turks and Caicos Islands +1">Turks and Caicos Islands +1649</option>
|
||||
<option value="Tuvalu +688">Tuvalu +688</option>
|
||||
<option value="U.S. Virgin Islands +1">U.S. Virgin Islands +1340</option>
|
||||
<option value="Uganda +256">Uganda +256</option>
|
||||
<option value="Ukraine +380">Ukraine +380</option>
|
||||
<option value="United Arab Emirates +971">United Arab Emirates +971</option>
|
||||
<option value="United Kingdom +44">United Kingdom +44</option>
|
||||
<option value="United States +1">United States +1</option>
|
||||
<option value="Uruguay +598">Uruguay +598</option>
|
||||
<option value="Uzbekistan +998">Uzbekistan +998</option>
|
||||
<option value="Vanuatu +678">Vanuatu +678</option>
|
||||
<option value="Vatican City +39">Vatican City +379</option>
|
||||
<option value="Venezuela +58">Venezuela +58</option>
|
||||
<option value="Vietnam +84">Vietnam +84</option>
|
||||
<option value="Wallis and Futuna +681">Wallis and Futuna +681</option>
|
||||
<option value="Western Sahara +212">Western Sahara +21228</option>
|
||||
<option value="Yemen +967">Yemen +967</option>
|
||||
<option value="Zambia +260">Zambia +260</option>
|
||||
<option value="Zimbabwe +263">Zimbabwe +263</option>
|
||||
<option value="Åland Islands +385">Åland Islands +35818</option>
|
||||
</select>
|
||||
<input class="Inquiryphone" id="ticket_PhoneNo" name="PhoneNo"
|
||||
placeholder="Phone number *" type="tel" value="" />
|
||||
<div id="ticket_contact_errmsg" style="display: none">
|
||||
<div class="requiredArea" style="margin-top:-10px;">Please enter your phone number.</div>
|
||||
</div>
|
||||
<textarea name="other_travelers_names" style="height: 60px;" placeholder="If booking two or more tickets, please fill in other traveler name(s) here:(per passport, e.g.Smith Sarah Jean)."></textarea>
|
||||
<p style="margin-top: 20px; margin-bottom: 10px;">For Elite Ticket bookings on December 31th, please provide your Chiang Mai hotel name and address for pick-up and drop-off purposes.</p>
|
||||
<textarea name="additional_requirements" style="height: 60px;"></textarea>
|
||||
|
||||
|
||||
<input name="total_price" id="totalPriceHidden" type="hidden" value="10000" />
|
||||
<input name="product_code" id="cli_no" type="hidden" value="YDFW-AH"/>
|
||||
<input name="itinerary" type="hidden" value="<?php echo $information->ic_title; ?>" />
|
||||
<button class="sendButton" id="submit_ticket_button" name="submit_ticket_form"
|
||||
type="button">Proceed to Payment</button>
|
||||
<p style=" text-align: center;
|
||||
font-style: italic;
|
||||
margin-top: -15px;
|
||||
line-height: 20px;"><strong>Once we receive your payment, our travel advisor will contact you within 24 hours and send you your e-ticket.</strong></p>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
function calcTotalPrice(ticketPrice, adultNumber) {
|
||||
var totalPrice = ticketPrice * adultNumber;
|
||||
totalPrice = totalPrice.toFixed(2);
|
||||
|
||||
totalPriceHidden.value = totalPrice;
|
||||
totalPriceText.innerText = '$' + totalPrice;
|
||||
}
|
||||
var adultNumberNode = document.getElementById("adultNumberValue");
|
||||
var ticketTypeList = document.querySelectorAll("input[name='ticket_type']");
|
||||
var totalPriceText = document.getElementById("totalPriceText");
|
||||
var totalPriceHidden = document.getElementById("totalPriceHidden");
|
||||
var adultNumberValue = parseInt(adultNumberNode.value);
|
||||
var currentTicketPrice = 10000;
|
||||
|
||||
var vip_december30thRadio = document.getElementById("vip_december30th");
|
||||
var vip_december31thRadio = document.getElementById("vip_december31th");
|
||||
|
||||
var ticket_type_elite_december30th_div = document.getElementById("ticket_type_elite_december30th");
|
||||
var ticket_type_elite_december31th_div = document.getElementById("ticket_type_elite_december31th");
|
||||
var vip_type_premium_december30th_div = document.getElementById("vip_type_premium_december30th");
|
||||
var vip_type_premium_december31th_div = document.getElementById("vip_type_premium_december31th");
|
||||
var ticket_type_standard_december30th_div = document.getElementById("ticket_type_standard_december30th");
|
||||
var ticket_type_standard_december31th_div = document.getElementById("ticket_type_standard_december31th");
|
||||
|
||||
for (var i = 0; i < ticketTypeList.length; i++) {
|
||||
var ticketTypeNode = ticketTypeList[i];
|
||||
currentTicketPrice = parseInt(ticketTypeNode.getAttribute('data-price'));
|
||||
if (ticketTypeNode.checked) {
|
||||
calcTotalPrice(currentTicketPrice, adultNumberValue);
|
||||
}
|
||||
ticketTypeNode.addEventListener('click', function (event) {
|
||||
var currentTarget = event.currentTarget;
|
||||
currentTicketPrice = parseInt(currentTarget.getAttribute('data-price'));
|
||||
adultNumberValue = parseInt(adultNumberNode.value);
|
||||
calcTotalPrice(currentTicketPrice, adultNumberValue);
|
||||
});
|
||||
}
|
||||
|
||||
var ticketDateList = document.querySelectorAll("input[name='ticket_date']");
|
||||
|
||||
for (var i = 0; i < ticketDateList.length; i++) {
|
||||
var ticketDateNode = ticketDateList[i];
|
||||
ticketDateNode.addEventListener('click', function (event) {
|
||||
var currentTarget = event.currentTarget;
|
||||
if (currentTarget.id === 'december30th') {
|
||||
setDecember30thTicket();
|
||||
} else if (currentTarget.id === 'december31th') {
|
||||
setDecember31thTicket();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setDecember30thTicket() {
|
||||
ticket_type_elite_december30th_div.style.display = '';
|
||||
ticket_type_elite_december31th_div.style.display = 'none';
|
||||
|
||||
vip_type_premium_december30th_div.style.display = '';
|
||||
vip_type_premium_december31th_div.style.display = 'none';
|
||||
|
||||
ticket_type_standard_december30th_div.style.display = '';
|
||||
ticket_type_standard_december31th_div.style.display = 'none';
|
||||
|
||||
vip_december30thRadio.checked = true;
|
||||
currentTicketPrice = parseInt(vip_december30thRadio.getAttribute('data-price'));
|
||||
adultNumberValue = parseInt(adultNumberNode.value);
|
||||
calcTotalPrice(currentTicketPrice, adultNumberValue);
|
||||
}
|
||||
|
||||
function setDecember31thTicket() {
|
||||
ticket_type_elite_december30th_div.style.display = 'none';
|
||||
ticket_type_elite_december31th_div.style.display = '';
|
||||
|
||||
vip_type_premium_december30th_div.style.display = 'none';
|
||||
vip_type_premium_december31th_div.style.display = '';
|
||||
|
||||
ticket_type_standard_december30th_div.style.display = 'none';
|
||||
ticket_type_standard_december31th_div.style.display = '';
|
||||
|
||||
vip_december31thRadio.checked = true;
|
||||
currentTicketPrice = parseInt(vip_december31thRadio.getAttribute('data-price'));
|
||||
adultNumberValue = parseInt(adultNumberNode.value);
|
||||
calcTotalPrice(currentTicketPrice, adultNumberValue);
|
||||
}
|
||||
|
||||
var plusButton = document.getElementById("plusButton");
|
||||
var minusButton = document.getElementById("minusButton");
|
||||
plusButton.addEventListener('click', function (event) {
|
||||
adultNumberValue = parseInt(adultNumberNode.value) + 1;
|
||||
adultNumberNode.value = adultNumberValue;
|
||||
calcTotalPrice(currentTicketPrice, adultNumberValue);
|
||||
});
|
||||
minusButton.addEventListener('click', function (event) {
|
||||
var beforeValue = parseInt(adultNumberNode.value);
|
||||
if (beforeValue > 1) {
|
||||
adultNumberValue = beforeValue - 1;
|
||||
adultNumberNode.value = adultNumberValue;
|
||||
calcTotalPrice(currentTicketPrice, adultNumberValue);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
var submit_ticket_button = document.getElementById("submit_ticket_button");
|
||||
var ticket_form = document.getElementById("ticket_form");
|
||||
|
||||
submit_ticket_button.addEventListener('click', function (event) {
|
||||
var validateResult = validateTicketForm();
|
||||
if (validateResult) {
|
||||
if (typeof (grecaptcha) === "undefined") {
|
||||
console.warn('grecaptcha is disabled.');
|
||||
ticket_form.submit();
|
||||
} else {
|
||||
grecaptcha.enterprise.ready(async () => {
|
||||
const token = await grecaptcha.enterprise.execute('6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja', { action: 'ADD_TO_CART' });
|
||||
var el = document.createElement("input");
|
||||
el.type = "hidden";
|
||||
el.name = "__grecaptcha_token__";
|
||||
el.value = token;
|
||||
ticket_form.appendChild(el);
|
||||
ticket_form.submit();
|
||||
submit_ticket_button.innerText = "Submitted successfully";
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
function validateTicketForm() {
|
||||
var result = true;
|
||||
var realnameVal = document.getElementById("ticket_realname").value;
|
||||
var emailVal = document.getElementById("ticket_email").value;
|
||||
var contactVal = document.getElementById("ticket_PhoneNo").value;
|
||||
|
||||
var realnameErrEl = document.getElementById("ticket_realname_errmsg");
|
||||
var emailErrEl = document.getElementById("ticket_email_errmsg");
|
||||
var emailVerifyErrEl = document.getElementById("ticket_email_verify_errmsg");
|
||||
var contactErrEl = document.getElementById("ticket_contact_errmsg");
|
||||
var ticketTypeErrEl = document.getElementById("ticket_type_errmsg");
|
||||
|
||||
realnameErrEl.style.display = 'none';
|
||||
emailErrEl.style.display = 'none';
|
||||
emailVerifyErrEl.style.display = 'none';
|
||||
contactErrEl.style.display = 'none';
|
||||
ticketTypeErrEl.style.display = 'none';
|
||||
|
||||
var selectedTicketType = false;
|
||||
for (var i = 0; i < ticketTypeList.length; i++) {
|
||||
var ticketTypeNode = ticketTypeList[i];
|
||||
if (ticketTypeNode.checked) {
|
||||
selectedTicketType = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!selectedTicketType) {
|
||||
ticketTypeErrEl.style.display = '';
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (realnameVal === '') {
|
||||
realnameErrEl.style.display = '';
|
||||
result = false;
|
||||
}
|
||||
if (emailVal === '') {
|
||||
emailErrEl.style.display = '';
|
||||
result = false;
|
||||
} else {
|
||||
var emailPattern = /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/;
|
||||
if (!emailPattern.test(emailVal)) {
|
||||
emailVerifyErrEl.style.display = '';
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (contactVal === '') {
|
||||
contactErrEl.style.display = '';
|
||||
result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
</script>
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,6 @@
|
||||
<?php if (!empty($ic_photo)) { ?>
|
||||
|
||||
<div class="infotopimage">
|
||||
<img src="<?php echo 'https://images.chinahighlights.com'.$ic_photo; ?>"
|
||||
alt="<?php echo !empty($ic_title)?$ic_title:'H1 title Chinahighlights mobile first template'; ?>" class="img-responsive">
|
||||
</div>
|
||||
<?php } ?>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue