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;
+ }
+
+ }
+}