CT查询接口

ct-mobile-first
赵鹏 4 years ago
parent 85452f9723
commit 21e1bf43a9

@ -773,8 +773,30 @@ class Information extends CI_Controller
$data["DESCRIPTION"] = $information->ic_seo_description;
$data["KEYWORDS"] = $information->ic_seo_keywords;
$data["CANONICAL"] = $this->config->item('site_url') . $information->ic_url;
//详细内容
$data["CUSTOMCONENT"]=$information->ic_content;
/* 详细内容 */
$ic_content = $information->ic_content;
/**替换详细内容里面的价格
* // 一日游价格标签, "<!--@DayTripPrice:XASIC-41@-->" 或者<!--@DayTripPrice:XASIC-41,2@--> 逗号后面是人数
* //精华线路标签"<!--@TourPrice:ct-1@-->"
*/
$ic_content = preg_replace_callback('/<!--@DayTripPrice:(.*)@-->/i',function($match){
//处理一日游每次配备
$matchItem = $match[1];
return '<span class="js_getDayTripPrice" data="'.$matchItem.'"></span>';;
},$ic_content);
$ic_content = preg_replace_callback('/<!--@TourPrice:(.*)@-->/i',function($match){
//处理精华线路每次配备
$matchItem = $match[1];
return '<span class="js_getTourPrice" data="'.$matchItem.'"></span>';;
},$ic_content);
$data["CUSTOMCONENT"]=$ic_content;
//非产品页面
$data["PRODUCTJS"]="";
if (empty(get_meta($information->ic_id, 'meta_product_code'))) {

@ -0,0 +1,61 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Api extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('api_model');
}
public function index()
{
echo("<1>api</h1>");
}
/**
* @description: 返回一日游价格
* @param {*} $returntype
* @return {*}
* @Date Changed:
*/
public function getDaytripsPrice(){
$pagecode = $_GET["pagecode"];
if (isset($_GET["personnum"])){
$personnum=$_GET["personnum"];
}else{
$personnum=2;
}
$result = $this->api_model->getDaytripsPrice($pagecode,$personnum);
echo json_encode($result);
}
/**
* @description: 获取精华线路价格2人等)
* @param {*}
* @return {*}
* @Date Changed:
*/
public function getTourPrice(){
if (isset($_GET["param"])){
$param = $_GET["param"];
$result["status"]="ok";
$result["price"] = $this->api_model->getTourPrice($param);
echo json_encode($result);
}else{
$result["status"]="no param";
echo json_encode($result);
}
}
}
/* End of file Api.php */

@ -0,0 +1,204 @@
<?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;
}
/**
* 获取设置的信用卡卡费
*/
public function cardfee(){
$sql = "SELECT TOP 1 * FROM dbo.SystemSettingInfo WHERE (SSI_Code = 1021001)";
$this->HT = $this->CI->load->database('HT', TRUE);
$query = $this->HT->query($sql);
$row = $query->row();
if (isset($row)){
return $row->SSI_UserValue;
}else{
return 0;
}
}
}

@ -0,0 +1,153 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Api_model extends CI_Model {
public function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
var $dei_sn = 17; //组别ID
var $CTLGC = 104; //语种
/**
* @description: 根据一日游code获取对应人数的成人价格
* @param {string} $pagecode 线路代码
* @param int $personnum 人数
* @return:
*/
function getDaytripsPrice($pagcode, $personnum)
{
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
and BIZ_PackagePrice.PKP_VEI_SN = BIZ_PackageInfo.PAG_DefaultVEI_SN
where (BIZ_PackageInfo.PAG_Code = ?) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop and CONVERT(varchar(12),getdate(),111) between pkp_validdate and pkp_invaliddate
order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc,PKP_PriceGrade ";
$param = array($pagcode,$this->dei_sn, $personnum);
$query = $this->HT->query($sql, $param);
if ($query->num_rows() > 0) {
return $query->row();
} else {
//'第二种有默认供应商但是没有当前日期价格的时候
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
and BIZ_PackagePrice.PKP_VEI_SN = BIZ_PackageInfo.PAG_DefaultVEI_SN
where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop
order by pkp_invaliddate desc,PKP_PriceGrade ";
$query = $this->HT->query($sql, $param);
if ($query->num_rows() > 0) {
return $query->row();
}else{
//'第三种没有默认供应商但是有当前日期价格的时候
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop and CONVERT(varchar(12),getdate(),111) between pkp_validdate and pkp_invaliddate
order by isnull( BIZ_PackageInfo.PAG_DefaultVEI_SN,0) desc,PKP_PriceGrade ";
$query = $this->HT->query($sql, $param);
if ($query->num_rows() > 0) {
return $query->row();
}else{
//'第四种无默认供应商无当前日期价格
$sql = "select top 1 isnull(PKP_AdultPrice,0) as PKP_AdultPrice,isnull(PKP_AdultSpecialPrice,0) as PKP_AdultSpecialPrice
,PAG_DefaultVEI_SN
from BIZ_PackagePrice
inner join BIZ_PackageInfo on BIZ_PackageInfo.PAG_SN = BIZ_PackagePrice.PKP_PAG_SN
where (BIZ_PackageInfo.PAG_Code = ? ) AND (pag_dei_sn= ? )
and ? between PKP_PersonStart and PKP_PersonStop
order by pkp_invaliddate desc,PKP_PriceGrade ";
if ($query->num_rows() > 0) {
return $query->row();
}else {
return null;
}
}
}
}
}
/**
* @description: 获取精华线路价格2人等
* @param {*}
* @return {*}
* @Date Changed:
*/
function getTourPrice($cli_no){
$CLI_SN = "";
$reust = "";
//'新的GP没有设置以前的2-5人等价格导致读不出价格。把Gp价格放前面计算
$sql = "select top 1 CLI_SN,CLI_PackageClass from CustomerLineInfo
where CLI_NO=? and CLI_State=1005004
AND (CLI_DEI_SN= ? )";
$query = $this->HT->query($sql,array($cli_no,$this->dei_sn));
if (!$query->num_rows()>0){
return null;
}else{
$row = $query->row();
if (isset($row)){
$CLI_SN = $row->CLI_SN;
}
//'获取线路是否有travelbuddy,也就是有固定的发团日期
$fut_sql = "SELECT count(*) as CountBuddy FROM FixedGroupDate WHERE FGD_CLI_SN='".$CLI_SN."'";
$futQuery = $this->HT->query($fut_sql);
$futrow = $futQuery->row();
$fut_CountBuddy = $futrow->CountBuddy;
if ($fut_CountBuddy>0){
//读取GP价格
$gpSql ="SELECT TOP 1 FGD_AdultPrice,FGD_Departure,
isnull(FGD_ProAdultPrice,0) as FGD_ProAdultPrice
FROM FixedGroupDate
WHERE (FGD_Departure >= GETDATE())
AND (FGD_CLI_SN = ".$CLI_SN.") AND (FGD_State = 1) ORDER BY FGD_AdultPrice";
$gpquery = $this->HT->query($gpSql);
if ($gpquery->num_rows()>0){
$gpRow = $gpquery->row();
$FGD_AdultPrice = $gpRow->FGD_AdultPrice;
$FGD_ProAdultPrice = $gpRow->FGD_ProAdultPrice;
if ($FGD_ProAdultPrice>0){
$reust = $FGD_ProAdultPrice; //促销价
}else{
$reust=$FGD_AdultPrice;
}
}
}else {
//普通线路价格
$sql = "select top 1
CLI_SN,CLP_TwoToFiveAdultPrice,CLI_PackageClass
FROM CustomerLineInfo INNER JOIN
CustomerLinePrice ON CustomerLineInfo.CLI_SN = CustomerLinePrice.CLP_CLI_SN INNER JOIN
CustomerLineInfo2 ON CustomerLineInfo.CLI_SN = CustomerLineInfo2.CLI2_CLI_SN
where CLI_SN= ? and CLI2_LGC=? and (CLP_Area=1 or CLP_Area=2)
and CLI_State = 1005004 ORDER BY CLP_TwoToFiveAdultPrice";
$query = $this->HT->query($sql,array($CLI_SN,$this->CTLGC));
if ($query->num_rows()>0){
$reust = $query->row()->CLP_TwoToFiveAdultPrice;
}
}
}
return $reust;
}
}
/* End of file Api_model.php */
Loading…
Cancel
Save