Ejemplo n.º 1
0
/**
 * 更新购物车中的商品
 */
function update_cart()
{
    global $ecs, $db;
    //删除已下架商品
    $sql = "DELETE c FROM " . $ecs->table('cart', 'c') . " WHERE " . get_cart_cond('c.') . " AND NOT EXISTS (SELECT 1 FROM " . $ecs->table('goods', 'g') . " WHERE g.goods_id = c.goods_id AND g.is_on_sale = 1 AND g.is_delete = 0) " . " AND c.extension_code <> 'flash_sale' AND c.rec_type = " . CART_GENERAL_GOODS;
    $db->query($sql);
    //删除已过期限时抢购
    $now = time();
    $sql = "DELETE c FROM " . $ecs->table('cart', 'c') . " WHERE " . get_cart_cond('c.') . " AND NOT EXISTS (SELECT 1 FROM " . $ecs->table('flash_sale', 'f') . " WHERE f.id = c.extension_id AND f.is_on_sale = 1 AND f.start_time <= {$now} AND f.end_time > {$now}) " . " AND c.extension_code = 'flash_sale' AND c.rec_type = " . CART_GENERAL_GOODS;
    $db->query($sql);
    //限时抢购商品限购数量检查
    check_cartgoods_number(true);
    //更新产品价格、规格等
    $sql = "SELECT c.rec_id, c.goods_id, c.goods_number, c.goods_attr_id, g.goods_name, g.market_price, g.shop_price, g.amount_desc, g.free_more FROM " . $ecs->table('cart', 'c') . ',' . $ecs->table('goods', 'g') . " WHERE c.goods_id = g.goods_id AND c.extension_code <> 'flash_sale' AND " . get_cart_cond('c.');
    $query = $db->query($sql);
    while ($rs = $db->fetch_array($query)) {
        $spec = explode(',', $rs['goods_attr_id']);
        $goods_attr = get_goods_attr_info($spec);
        if (empty($goods_attr)) {
            $goods_attr = $rs['amount_desc'];
        } else {
            $goods_attr = $rs['amount_desc'] . "\n" . $goods_attr;
        }
        $cart = array('goods_name' => $rs['goods_name'], 'market_price' => $rs['market_price'], 'goods_price' => get_final_price($rs['goods_id'], $rs['goods_number'], true, $spec), 'goods_attr' => $goods_attr, 'free_more' => $rs['free_more']);
        $db->autoExecute($ecs->table('cart'), $cart, 'UPDATE', 'rec_id=' . $rs['rec_id']);
    }
}
Ejemplo n.º 2
0
 if (isset($_POST['checkout_time']) && intval($_POST['checkout_time']) < time() - 3600) {
     show_message('订单提交超时', '重新确认订单', 'flow.php?step=checkout', 'error');
 }
 //check shop
 $shop_id = intval($_POST['shop_id']);
 if (!check_shop($shop_id)) {
     show_message('取货门店无效', '重新选择', 'index.php', 'error');
 }
 // 检查购物车中是否有限时抢购商品过期
 $now = time();
 $sql = "SELECT count(c.rec_id) FROM " . $ecs->table('cart', 'c') . ',' . $ecs->table('flash_sale', 'f') . " WHERE c.extension_code = 'flash_sale' AND c.extension_id = f.id AND (f.start_time > {$now} OR f.end_time <= {$now} OR f.is_on_sale = 0) AND " . get_cart_cond('c.');
 if ($db->getOne($sql) > 0) {
     show_message('订单中有已经过期的限时抢购商品,请重新提交订单', '重新提交订单', 'flow.php?step=checkout', 'error');
 }
 // 检查限时抢购限购数量
 if (!check_cartgoods_number()) {
     show_message('限时抢购商品超过限购数量,请重新提交订单', '重新提交订单', 'flow.php?step=checkout', 'error');
 }
 /* 检查商品库存 */
 if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE) {
     $cart_goods_stock = get_cart_goods();
     $_cart_goods_stock = array();
     foreach ($cart_goods_stock['goods_list'] as $value) {
         $_cart_goods_stock[$value['rec_id']] = $value['goods_number'];
     }
     flow_cart_stock($_cart_goods_stock);
     unset($cart_goods_stock, $_cart_goods_stock);
 }
 /*
  * 检查用户是否已经登录
  * 如果用户已经登录了则检查是否有默认的收货地址