You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

900 lines
33 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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);
}
?>