diff --git a/application/controllers/information.php b/application/controllers/information.php index 2ef6474d..001c2a98 100644 --- a/application/controllers/information.php +++ b/application/controllers/information.php @@ -28,6 +28,7 @@ class Information extends CI_Controller $this->load->model('Price_model'); $this->load->model('PrimeLinePrice_model'); $this->load->library('Amplib'); //加载AMP处理类 + $this->load->library('Currency'); $this->load->library('html_optimize_lib'); //加载HTML优化类 } @@ -1092,8 +1093,8 @@ class Information extends CI_Controller } } } - $site_money = $this->CI->currency->GetSiteMoney($price_number); - $site_money = $this->CI->currency->calc_show_price($site_money); + $site_money = $this->currency->GetSiteMoney($price_number); + $site_money = $this->currency->calc_show_price($site_money); //把金额格式化为带有逗号(,)方便阅读,如 12,345 $price_number = is_numeric($price_number) ? number_format($site_money) : $price_number; if (!empty($price_number)) { diff --git a/application/libraries/Currency.php b/application/libraries/Currency.php new file mode 100644 index 00000000..1c3775e2 --- /dev/null +++ b/application/libraries/Currency.php @@ -0,0 +1,203 @@ +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 . '
'; +// echo $this->EUR_Rate . '
'; +// echo $this->RUB_Rate . '
'; + 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 货币代号:usd,eur + * @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; + } + + } +}