/** * 更新购物车中的商品 */ 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']); } }
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); } /* * 检查用户是否已经登录 * 如果用户已经登录了则检查是否有默认的收货地址