Server : Apache System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 User : www ( 1000) PHP Version : 5.6.40 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/saimikebio.com/includes/ |
<?php /** * 取得购物车商品 * @param int $type 类型:默认普通商品 * @return array 购物车商品数组 */ function cart_goods_1($type = CART_GENERAL_GOODS) { $sql = "SELECT rec_id, user_id, goods_id, goods_name, goods_sn, goods_number, " . "market_price, goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, is_shipping, " . "goods_price * goods_number AS subtotal " . "FROM " . $GLOBALS['ecs']->table('cart1') . " WHERE session_id = '" . SESS_ID . "' " . "AND rec_type = '$type'"; $arr = $GLOBALS['db']->getAll($sql); /* 格式化价格及礼包商品 */ foreach ($arr as $key => $value) { $arr[$key]['formated_market_price'] = price_format($value['market_price'], false); $arr[$key]['formated_goods_price'] = price_format($value['goods_price'], false); $arr[$key]['formated_subtotal'] = price_format($value['subtotal'], false); if ($value['extension_code'] == 'package_buy') { $arr[$key]['package_goods_list'] = get_package_goods($value['goods_id']); } } return $arr; } /** * 获得购物车中的商品 * * @access public * @return array */ function get_cart_goods_1() { /* 初始化 */ $goods_list = array(); $total = array( 'goods_price' => 0, // 本店售价合计(有格式) 'market_price' => 0, // 市场售价合计(有格式) 'saving' => 0, // 节省金额(有格式) 'save_rate' => 0, // 节省百分比 'goods_amount' => 0, // 本店售价合计(无格式) ); /* 循环、统计 */ $sql = "SELECT *, IF(parent_id, parent_id, goods_id) AS pid " . " FROM " . $GLOBALS['ecs']->table('cart1') . " " . " WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'" . " ORDER BY pid, parent_id"; $res = $GLOBALS['db']->query($sql); /* 用于统计购物车中实体商品和虚拟商品的个数 */ $virtual_goods_count = 0; $real_goods_count = 0; while ($row = $GLOBALS['db']->fetchRow($res)) { $total['goods_price'] += $row['goods_price'] * $row['goods_number']; $total['market_price'] += $row['market_price'] * $row['goods_number']; $row['subtotal'] = price_format($row['goods_price'] * $row['goods_number'], false); $row['goods_price'] = price_format($row['goods_price'], false); $row['market_price'] = price_format($row['market_price'], false); /* 统计实体商品和虚拟商品的个数 */ if ($row['is_real']) { $real_goods_count++; } else { $virtual_goods_count++; } /* 查询规格 */ if (trim($row['goods_attr']) != '') { $sql = "SELECT attr_value FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_attr_id " . db_create_in($row['goods_attr']); $attr_list = $GLOBALS['db']->getCol($sql); foreach ($attr_list AS $attr) { $row['goods_name'] .= ' [' . $attr . '] '; } } /* 增加是否在购物车里显示商品图 */ if (($GLOBALS['_CFG']['show_goods_in_cart'] == "2" || $GLOBALS['_CFG']['show_goods_in_cart'] == "3") && $row['extension_code'] != 'package_buy') { $goods_thumb = $GLOBALS['db']->getOne("SELECT `goods_thumb` FROM " . $GLOBALS['ecs']->table('goods') . " WHERE `goods_id`='{$row['goods_id']}'"); $row['goods_thumb'] = get_image_path($row['goods_id'], $goods_thumb, true); } if ($row['extension_code'] == 'package_buy') { $row['package_goods_list'] = get_package_goods($row['goods_id']); } $goods_list[] = $row; } $total['goods_amount'] = $total['goods_price']; $total['saving'] = price_format($total['market_price'] - $total['goods_price'], false); if ($total['market_price'] > 0) { $total['save_rate'] = $total['market_price'] ? round(($total['market_price'] - $total['goods_price']) * 100 / $total['market_price']).'%' : 0; } $total['goods_price'] = price_format($total['goods_price'], false); $total['market_price'] = price_format($total['market_price'], false); $total['real_goods_count'] = $real_goods_count; $total['virtual_goods_count'] = $virtual_goods_count; return array('goods_list' => $goods_list, 'total' => $total); } /** * 获得订单中的费用信息 * * @access public * @param array $order * @param array $goods * @param array $consignee * @param bool $is_gb_deposit 是否团购保证金(如果是,应付款金额只计算商品总额和支付费用,可以获得的积分取 $gift_integral) * @return array */ function order_fee1($order, $goods, $consignee) { /* 初始化订单的扩展code */ if (!isset($order['extension_code'])) { $order['extension_code'] = ''; } if ($order['extension_code'] == 'group_buy') { $group_buy = group_buy_info($order['extension_id']); } $total = array('real_goods_count' => 0, 'gift_amount' => 0, 'goods_price' => 0, 'market_price' => 0, 'discount' => 0, 'pack_fee' => 0, 'card_fee' => 0, 'shipping_fee' => 0, 'shipping_insure' => 0, 'integral_money' => 0, 'bonus' => 0, 'surplus' => 0, 'cod_fee' => 0, 'pay_fee' => 0, 'tax' => 0); $weight = 0; /* 商品总价 */ foreach ($goods AS $val) { /* 统计实体商品的个数 */ if ($val['is_real']) { $total['real_goods_count']++; } $total['goods_price'] += $val['goods_price'] * $val['goods_number']; $total['market_price'] += $val['market_price'] * $val['goods_number']; } $total['saving'] = $total['market_price'] - $total['goods_price']; $total['save_rate'] = $total['market_price'] ? round($total['saving'] * 100 / $total['market_price']) . '%' : 0; $total['goods_price_formated'] = price_format($total['goods_price'], false); $total['market_price_formated'] = price_format($total['market_price'], false); $total['saving_formated'] = price_format($total['saving'], false); /* 折扣 */ if ($order['extension_code'] != 'group_buy') { $discount = compute_discount_1(); $total['discount'] = $discount['discount']; if ($total['discount'] > $total['goods_price']) { $total['discount'] = $total['goods_price']; } } $total['discount_formated'] = price_format($total['discount'], false); /* 税额 */ if (!empty($order['need_inv']) && $order['inv_type'] != '') { /* 查税率 */ $rate = 0; foreach ($GLOBALS['_CFG']['invoice_type']['type'] as $key => $type) { if ($type == $order['inv_type']) { $rate = floatval($GLOBALS['_CFG']['invoice_type']['rate'][$key]) / 100; break; } } if ($rate > 0) { $total['tax'] = $rate * $total['goods_price']; } } $total['tax_formated'] = price_format($total['tax'], false); /* 包装费用 */ if (!empty($order['pack_id'])) { $total['pack_fee'] = pack_fee($order['pack_id'], $total['goods_price']); } $total['pack_fee_formated'] = price_format($total['pack_fee'], false); /* 贺卡费用 */ if (!empty($order['card_id'])) { $total['card_fee'] = card_fee($order['card_id'], $total['goods_price']); } $total['card_fee_formated'] = price_format($total['card_fee'], false); /* 红包 */ if (!empty($order['bonus_id'])) { $bonus = bonus_info($order['bonus_id']); $total['bonus'] = $bonus['type_money']; } $total['bonus_formated'] = price_format($total['bonus'], false); /* 线下红包 */ if (!empty($order['bonus_kill'])) { $bonus = bonus_info(0,$order['bonus_kill']); $total['bonus_kill'] = $order['bonus_kill']; $total['bonus_kill_formated'] = price_format($total['bonus_kill'], false); } /* 配送费用 */ $shipping_cod_fee = NULL; if ($order['shipping_id'] > 0 && $total['real_goods_count'] > 0) { $region['country'] = $consignee['country']; $region['province'] = $consignee['province']; $region['city'] = $consignee['city']; $region['district'] = $consignee['district']; $shipping_info = shipping_area_info($order['shipping_id'], $region); if (!empty($shipping_info)) { if ($order['extension_code'] == 'group_buy') { $weight_price = cart_weight_price_1(CART_GROUP_BUY_GOODS); } else { $weight_price = cart_weight_price_1(); } // 查看购物车中是否全为免运费商品,若是则把运费赋为零 $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart1') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 0"; $shipping_count = $GLOBALS['db']->getOne($sql); $total['shipping_fee'] = ($shipping_count == 0 AND $weight_price['free_shipping'] == 1) ?0 : shipping_fee($shipping_info['shipping_code'],$shipping_info['configure'], $weight_price['weight'], $total['goods_price'], $weight_price['number']); if (!empty($order['need_insure']) && $shipping_info['insure'] > 0) { $total['shipping_insure'] = shipping_insure_fee($shipping_info['shipping_code'], $total['goods_price'], $shipping_info['insure']); } else { $total['shipping_insure'] = 0; } if ($shipping_info['support_cod']) { $shipping_cod_fee = $shipping_info['pay_fee']; } } } $total['shipping_fee_formated'] = price_format($total['shipping_fee'], false); $total['shipping_insure_formated'] = price_format($total['shipping_insure'], false); // 购物车中的商品能享受红包支付的总额 $bonus_amount = compute_discount_amount_1(); // 红包和积分最多能支付的金额为商品总额 $max_amount = $total['goods_price'] == 0 ? $total['goods_price'] : $total['goods_price'] - $bonus_amount; /* 计算订单总额 */ if ($order['extension_code'] == 'group_buy' && $group_buy['deposit'] > 0) { $total['amount'] = $total['goods_price']; } else { $total['amount'] = $total['goods_price'] - $total['discount'] + $total['tax'] + $total['pack_fee'] + $total['card_fee'] + $total['shipping_fee'] + $total['shipping_insure'] + $total['cod_fee']; // 减去红包金额 $use_bonus = min($total['bonus'], $max_amount); // 实际减去的红包金额 if(isset($total['bonus_kill'])) { $use_bonus_kill = min($total['bonus_kill'], $max_amount); $total['amount'] -= $price = number_format($total['bonus_kill'], 2, '.', ''); // 还需要支付的订单金额 } $total['bonus'] = $use_bonus; $total['bonus_formated'] = price_format($total['bonus'], false); $total['amount'] -= $use_bonus; // 还需要支付的订单金额 $max_amount -= $use_bonus; // 积分最多还能支付的金额 } /* 余额 */ $order['surplus'] = $order['surplus'] > 0 ? $order['surplus'] : 0; if ($total['amount'] > 0) { if (isset($order['surplus']) && $order['surplus'] > $total['amount']) { $order['surplus'] = $total['amount']; $total['amount'] = 0; } else { $total['amount'] -= floatval($order['surplus']); } } else { $order['surplus'] = 0; $total['amount'] = 0; } $total['surplus'] = $order['surplus']; $total['surplus_formated'] = price_format($order['surplus'], false); /* 积分 */ $order['integral'] = $order['integral'] > 0 ? $order['integral'] : 0; if ($total['amount'] > 0 && $max_amount > 0 && $order['integral'] > 0) { $integral_money = value_of_integral($order['integral']); // 使用积分支付 $use_integral = min($total['amount'], $max_amount, $integral_money); // 实际使用积分支付的金额 $total['amount'] -= $use_integral; $total['integral_money'] = $use_integral; $order['integral'] = integral_of_value($use_integral); } else { $total['integral_money'] = 0; $order['integral'] = 0; } $total['integral'] = $order['integral']; $total['integral_formated'] = price_format($total['integral_money'], false); /* 保存订单信息 */ $_SESSION['flow_order'] = $order; $se_flow_type = isset($_SESSION['flow_type']) ? $_SESSION['flow_type'] : ''; /* 支付费用 */ if (!empty($order['pay_id']) && ($total['real_goods_count'] > 0 || $se_flow_type != CART_EXCHANGE_GOODS)) { $total['pay_fee'] = pay_fee($order['pay_id'], $total['amount'], $shipping_cod_fee); } $total['pay_fee_formated'] = price_format($total['pay_fee'], false); $total['amount'] += $total['pay_fee']; // 订单总额累加上支付费用 $total['amount_formated'] = price_format($total['amount'], false); /* 取得可以得到的积分和红包 */ if ($order['extension_code'] == 'group_buy') { $total['will_get_integral'] = $group_buy['gift_integral']; } elseif ($order['extension_code'] == 'exchange_goods') { $total['will_get_integral'] = 0; } else { $total['will_get_integral'] = get_give_integral_1($goods); } $total['will_get_bonus'] = $order['extension_code'] == 'exchange_goods' ? 0 : price_format(get_total_bonus_1(), false); $total['formated_goods_price'] = price_format($total['goods_price'], false); $total['formated_market_price'] = price_format($total['market_price'], false); $total['formated_saving'] = price_format($total['saving'], false); if ($order['extension_code'] == 'exchange_goods') { $sql = 'SELECT SUM(eg.exchange_integral) '. 'FROM ' . $GLOBALS['ecs']->table('cart1') . ' AS c,' . $GLOBALS['ecs']->table('exchange_goods') . 'AS eg '. "WHERE c.goods_id = eg.goods_id AND c.session_id= '" . SESS_ID . "' " . " AND c.rec_type = '" . CART_EXCHANGE_GOODS . "' " . ' AND c.is_gift = 0 AND c.goods_id > 0 ' . 'GROUP BY eg.goods_id'; $exchange_integral = $GLOBALS['db']->getOne($sql); $total['exchange_integral'] = $exchange_integral; } return $total; } /** * 计算折扣:根据购物车和优惠活动 * @return float 折扣 */ function compute_discount_1() { /* 查询优惠活动 */ $now = gmtime(); $user_rank = ',' . $_SESSION['user_rank'] . ','; $sql = "SELECT *" . "FROM " . $GLOBALS['ecs']->table('favourable_activity') . " WHERE start_time <= '$now'" . " AND end_time >= '$now'" . " AND CONCAT(',', user_rank, ',') LIKE '%" . $user_rank . "%'" . " AND act_type " . db_create_in(array(FAT_DISCOUNT, FAT_PRICE)); $favourable_list = $GLOBALS['db']->getAll($sql); if (!$favourable_list) { return 0; } /* 查询购物车商品 */ $sql = "SELECT c.goods_id, c.goods_price * c.goods_number AS subtotal, g.cat_id, g.brand_id " . "FROM " . $GLOBALS['ecs']->table('cart1') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " . "WHERE c.goods_id = g.goods_id " . "AND c.session_id = '" . SESS_ID . "' " . "AND c.parent_id = 0 " . "AND c.is_gift = 0 " . "AND rec_type = '" . CART_GENERAL_GOODS . "'"; $goods_list = $GLOBALS['db']->getAll($sql); if (!$goods_list) { return 0; } /* 初始化折扣 */ $discount = 0; $favourable_name = array(); /* 循环计算每个优惠活动的折扣 */ foreach ($favourable_list as $favourable) { $total_amount = 0; if ($favourable['act_range'] == FAR_ALL) { foreach ($goods_list as $goods) { $total_amount += $goods['subtotal']; } } elseif ($favourable['act_range'] == FAR_CATEGORY) { /* 找出分类id的子分类id */ $id_list = array(); $raw_id_list = explode(',', $favourable['act_range_ext']); foreach ($raw_id_list as $id) { $id_list = array_merge($id_list, array_keys(cat_list($id, 0, false))); } $ids = join(',', array_unique($id_list)); foreach ($goods_list as $goods) { if (strpos(',' . $ids . ',', ',' . $goods['cat_id'] . ',') !== false) { $total_amount += $goods['subtotal']; } } } elseif ($favourable['act_range'] == FAR_BRAND) { foreach ($goods_list as $goods) { if (strpos(',' . $favourable['act_range_ext'] . ',', ',' . $goods['brand_id'] . ',') !== false) { $total_amount += $goods['subtotal']; } } } elseif ($favourable['act_range'] == FAR_GOODS) { foreach ($goods_list as $goods) { if (strpos(',' . $favourable['act_range_ext'] . ',', ',' . $goods['goods_id'] . ',') !== false) { $total_amount += $goods['subtotal']; } } } else { continue; } /* 如果金额满足条件,累计折扣 */ if ($total_amount > 0 && $total_amount >= $favourable['min_amount'] && ($total_amount <= $favourable['max_amount'] || $favourable['max_amount'] == 0)) { if ($favourable['act_type'] == FAT_DISCOUNT) { $discount += $total_amount * (1 - $favourable['act_type_ext'] / 100); $favourable_name[] = $favourable['act_name']; } elseif ($favourable['act_type'] == FAT_PRICE) { $discount += $favourable['act_type_ext']; $favourable_name[] = $favourable['act_name']; } } } return array('discount' => $discount, 'name' => $favourable_name); } /** * 计算购物车中的商品能享受红包支付的总额 * @return float 享受红包支付的总额 */ function compute_discount_amount_1() { /* 查询优惠活动 */ $now = gmtime(); $user_rank = ',' . $_SESSION['user_rank'] . ','; $sql = "SELECT *" . "FROM " . $GLOBALS['ecs']->table('favourable_activity') . " WHERE start_time <= '$now'" . " AND end_time >= '$now'" . " AND CONCAT(',', user_rank, ',') LIKE '%" . $user_rank . "%'" . " AND act_type " . db_create_in(array(FAT_DISCOUNT, FAT_PRICE)); $favourable_list = $GLOBALS['db']->getAll($sql); if (!$favourable_list) { return 0; } /* 查询购物车商品 */ $sql = "SELECT c.goods_id, c.goods_price * c.goods_number AS subtotal, g.cat_id, g.brand_id " . "FROM " . $GLOBALS['ecs']->table('cart1') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " . "WHERE c.goods_id = g.goods_id " . "AND c.session_id = '" . SESS_ID . "' " . "AND c.parent_id = 0 " . "AND c.is_gift = 0 " . "AND rec_type = '" . CART_GENERAL_GOODS . "'"; $goods_list = $GLOBALS['db']->getAll($sql); if (!$goods_list) { return 0; } /* 初始化折扣 */ $discount = 0; $favourable_name = array(); /* 循环计算每个优惠活动的折扣 */ foreach ($favourable_list as $favourable) { $total_amount = 0; if ($favourable['act_range'] == FAR_ALL) { foreach ($goods_list as $goods) { $total_amount += $goods['subtotal']; } } elseif ($favourable['act_range'] == FAR_CATEGORY) { /* 找出分类id的子分类id */ $id_list = array(); $raw_id_list = explode(',', $favourable['act_range_ext']); foreach ($raw_id_list as $id) { $id_list = array_merge($id_list, array_keys(cat_list($id, 0, false))); } $ids = join(',', array_unique($id_list)); foreach ($goods_list as $goods) { if (strpos(',' . $ids . ',', ',' . $goods['cat_id'] . ',') !== false) { $total_amount += $goods['subtotal']; } } } elseif ($favourable['act_range'] == FAR_BRAND) { foreach ($goods_list as $goods) { if (strpos(',' . $favourable['act_range_ext'] . ',', ',' . $goods['brand_id'] . ',') !== false) { $total_amount += $goods['subtotal']; } } } elseif ($favourable['act_range'] == FAR_GOODS) { foreach ($goods_list as $goods) { if (strpos(',' . $favourable['act_range_ext'] . ',', ',' . $goods['goods_id'] . ',') !== false) { $total_amount += $goods['subtotal']; } } } else { continue; } if ($total_amount > 0 && $total_amount >= $favourable['min_amount'] && ($total_amount <= $favourable['max_amount'] || $favourable['max_amount'] == 0)) { if ($favourable['act_type'] == FAT_DISCOUNT) { $discount += $total_amount * (1 - $favourable['act_type_ext'] / 100); } elseif ($favourable['act_type'] == FAT_PRICE) { $discount += $favourable['act_type_ext']; } } } return $discount; } /** * 获得购物车中商品的总重量、总价格、总数量 * * @access public * @param int $type 类型:默认普通商品 * @return array */ function cart_weight_price_1($type = CART_GENERAL_GOODS) { $package_row['weight'] = 0; $package_row['amount'] = 0; $package_row['number'] = 0; $packages_row['free_shipping'] = 1; /* 计算超值礼包内商品的相关配送参数 */ $sql = 'SELECT goods_id, goods_number, goods_price FROM ' . $GLOBALS['ecs']->table('cart1') . " WHERE extension_code = 'package_buy' AND session_id = '" . SESS_ID . "'"; $row = $GLOBALS['db']->getAll($sql); if ($row) { $packages_row['free_shipping'] = 0; $free_shipping_count = 0; foreach ($row as $val) { // 如果商品全为免运费商品,设置一个标识变量 $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('package_goods') . ' AS pg, ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . "WHERE g.goods_id = pg.goods_id AND g.is_shipping = 0 AND pg.package_id = '" . $val['goods_id'] . "'"; $shipping_count = $GLOBALS['db']->getOne($sql); if ($shipping_count > 0) { // 循环计算每个超值礼包商品的重量和数量,注意一个礼包中可能包换若干个同一商品 $sql = 'SELECT SUM(g.goods_weight * pg.goods_number) AS weight, ' . 'SUM(pg.goods_number) AS number FROM ' . $GLOBALS['ecs']->table('package_goods') . ' AS pg, ' . $GLOBALS['ecs']->table('goods') . ' AS g ' . "WHERE g.goods_id = pg.goods_id AND g.is_shipping = 0 AND pg.package_id = '" . $val['goods_id'] . "'"; $goods_row = $GLOBALS['db']->getRow($sql); $package_row['weight'] += floatval($goods_row['weight']) * $val['goods_number']; $package_row['amount'] += floatval($val['goods_price']) * $val['goods_number']; $package_row['number'] += intval($goods_row['number']) * $val['goods_number']; } else { $free_shipping_count++; } } $packages_row['free_shipping'] = $free_shipping_count == count($row) ? 1 : 0; } /* 获得购物车中非超值礼包商品的总重量 */ $sql = 'SELECT SUM(g.goods_weight * c.goods_number) AS weight, ' . 'SUM(c.goods_price * c.goods_number) AS amount, ' . 'SUM(c.goods_number) AS number '. 'FROM ' . $GLOBALS['ecs']->table('cart1') . ' AS c '. 'LEFT JOIN ' . $GLOBALS['ecs']->table('goods') . ' AS g ON g.goods_id = c.goods_id '. "WHERE c.session_id = '" . SESS_ID . "' " . "AND rec_type = '$type' AND g.is_shipping = 0 AND c.extension_code != 'package_buy'"; $row = $GLOBALS['db']->getRow($sql); $packages_row['weight'] = floatval($row['weight']) + $package_row['weight']; $packages_row['amount'] = floatval($row['amount']) + $package_row['amount']; $packages_row['number'] = intval($row['number']) + $package_row['number']; /* 格式化重量 */ $packages_row['formated_weight'] = formated_weight($packages_row['weight']); return $packages_row; } /** * 获得用户的可用积分 * * @access private * @return integral */ function flow_available_points_1() { $sql = "SELECT SUM(g.integral * c.goods_number) ". "FROM " . $GLOBALS['ecs']->table('cart1') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " . "WHERE c.session_id = '" . SESS_ID . "' AND c.goods_id = g.goods_id AND c.is_gift = 0 AND g.integral > 0 " . "AND c.rec_type = '" . CART_GENERAL_GOODS . "'"; $val = intval($GLOBALS['db']->getOne($sql)); return integral_of_value($val); } /** * 取得购物车该赠送的积分数 * @return int 积分数 */ function get_give_integral_1() { $sql = "SELECT SUM(c.goods_number * IF(g.give_integral > -1, g.give_integral, c.goods_price))" . "FROM " . $GLOBALS['ecs']->table('cart1') . " AS c, " . $GLOBALS['ecs']->table('goods') . " AS g " . "WHERE c.goods_id = g.goods_id " . "AND c.session_id = '" . SESS_ID . "' " . "AND c.goods_id > 0 " . "AND c.parent_id = 0 " . "AND c.rec_type = 0 " . "AND c.is_gift = 0"; return intval($GLOBALS['db']->getOne($sql)); } /** * 取得购物车总金额 * @params boolean $include_gift 是否包括赠品 * @param int $type 类型:默认普通商品 * @return float 购物车总金额 */ function cart_amount_1($include_gift = true, $type = CART_GENERAL_GOODS) { $sql = "SELECT SUM(goods_price * goods_number) " . " FROM " . $GLOBALS['ecs']->table('cart1') . " WHERE session_id = '" . SESS_ID . "' " . "AND rec_type = '$type' "; if (!$include_gift) { $sql .= ' AND is_gift = 0 AND goods_id > 0'; } return floatval($GLOBALS['db']->getOne($sql)); } /** * 取得当前用户应该得到的红包总额 */ function get_total_bonus_1() { $day = getdate(); $today = local_mktime(23, 59, 59, $day['mon'], $day['mday'], $day['year']); /* 按商品发的红包 */ $sql = "SELECT SUM(c.goods_number * t.type_money)" . "FROM " . $GLOBALS['ecs']->table('cart1') . " AS c, " . $GLOBALS['ecs']->table('bonus_type') . " AS t, " . $GLOBALS['ecs']->table('goods') . " AS g " . "WHERE c.session_id = '" . SESS_ID . "' " . "AND c.is_gift = 0 " . "AND c.goods_id = g.goods_id " . "AND g.bonus_type_id = t.type_id " . "AND t.send_type = '" . SEND_BY_GOODS . "' " . "AND t.send_start_date <= '$today' " . "AND t.send_end_date >= '$today' " . "AND c.rec_type = '" . CART_GENERAL_GOODS . "'"; $goods_total = floatval($GLOBALS['db']->getOne($sql)); /* 取得购物车中非赠品总金额 */ $sql = "SELECT SUM(goods_price * goods_number) " . "FROM " . $GLOBALS['ecs']->table('cart1') . " WHERE session_id = '" . SESS_ID . "' " . " AND is_gift = 0 " . " AND rec_type = '" . CART_GENERAL_GOODS . "'"; $amount = floatval($GLOBALS['db']->getOne($sql)); /* 按订单发的红包 */ $sql = "SELECT FLOOR('$amount' / min_amount) * type_money " . "FROM " . $GLOBALS['ecs']->table('bonus_type') . " WHERE send_type = '" . SEND_BY_ORDER . "' " . " AND send_start_date <= '$today' " . "AND send_end_date >= '$today' " . "AND min_amount > 0 "; $order_total = floatval($GLOBALS['db']->getOne($sql)); return $goods_total + $order_total; } /** * 检查订单中商品库存 * * @access public * @param array $arr * * @return void */ function flow_cart_stock_1($arr) { foreach ($arr AS $key => $val) { $val = intval(make_semiangle($val)); if ($val <= 0) { continue; } $sql = "SELECT `goods_id`, `goods_attr_id`, `extension_code` FROM" .$GLOBALS['ecs']->table('cart1'). " WHERE rec_id='$key' AND session_id='" . SESS_ID . "'"; $goods = $GLOBALS['db']->getRow($sql); $sql = "SELECT g.goods_name, g.goods_number, c.product_id ". "FROM " .$GLOBALS['ecs']->table('goods'). " AS g, ". $GLOBALS['ecs']->table('cart1'). " AS c ". "WHERE g.goods_id = c.goods_id AND c.rec_id = '$key'"; $row = $GLOBALS['db']->getRow($sql); //系统启用了库存,检查输入的商品数量是否有效 if (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] != 'package_buy') { if ($row['goods_number'] < $val) { show_message(sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'], $row['goods_number'], $row['goods_number'])); exit; } /* 是货品 */ $row['product_id'] = trim($row['product_id']); if (!empty($row['product_id'])) { $sql = "SELECT product_number FROM " .$GLOBALS['ecs']->table('products'). " WHERE goods_id = '" . $goods['goods_id'] . "' AND product_id = '" . $row['product_id'] . "'"; $product_number = $GLOBALS['db']->getOne($sql); if ($product_number < $val) { show_message(sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'], $row['goods_number'], $row['goods_number'])); exit; } } } elseif (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] == 'package_buy') { if (judge_package_stock($goods['goods_id'], $val)) { show_message($GLOBALS['_LANG']['package_stock_insufficiency']); exit; } } } } /** * 清空购物车 * @param int $type 类型:默认普通商品 */ function clear_cart_1($type = CART_GENERAL_GOODS) { $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart1') . " WHERE session_id = '" . SESS_ID . "' AND rec_type = '$type'"; $GLOBALS['db']->query($sql); } ?>