public static function outStockInsertOrderProduct($order_code, $sku, $qt) { //DB::Debug(); $stocknum = ProductsStock::getSkuStock($sku); //检查库存是否充足 if ($stocknum < $qt) { return false; } DB::tranBegin('outStockInsertOrderProduct'); //事务开始 $stock_ids = ProductsStock::getSkuOutStock($sku, $qt); //查询库存中的批号 if (!$stock_ids) { return false; } foreach ($stock_ids as $sid => $stocks) { $exp_date = isset($stocks['exp_date']) ? (int) $stocks['exp_date'] : 0; $stock = isset($stocks['stock']) ? (int) $stocks['stock'] : 0; if ($stock < 1) { continue; } ProductsStock::reduce("id='{$sid}'", 'stock', $stock); //从库存和批号中减去 OrdersProducts::insert(array('order_code' => $order_code, 'product_sku' => $sku, 'product_num' => $stock, 'exp_date' => $exp_date)); } $commit_status = DB::tranEnd('outStockInsertOrderProduct'); return $commit_status; }
if (!$sku) { header("Location: /html/404.html?004"); exit; } $item_code = $sku['item']; $item = ProductsItem::getOne(array('item' => $item_code, 'status' => 1)); if (!$item) { header("Location: /html/404.html?005"); exit; } $sku['iteminfo'] = $item; $sku_code = $sku['sku']; $pics = ProductsPic::getSkuPics($sku_code, 'path', 'sort DESC LIMIT 0,3'); $sku['pics'] = $pics; $sku['order_num'] = OrdersProducts::getSkuAllNum($sku_code); $sku['stock'] = ProductsStock::getSkuStock($sku_code); $skus = ProductsSku::getItemSkus($item_code, "id,sku,sku_name"); $skus = ProductsSku::getProductsPic($skus); $sku['skus'] = $skus; $userid = isset($_SESSION['userid']) ? (int) $_SESSION['userid'] : 0; $history = array(); if ($userid) { $history = UsersHistory::getProductViewLog($userid, $id); } if (!$history) { $history = ProductsSku::getRand($item_code); } $history = ProductsSku::getProductsPic($history); $history = ProductsSku::getProductsItemTitle($history); ProductsSku::increase("id={$id}", 'view_num'); $log = array('op' => 'view', 'id' => $id, 'url' => Func::getCurrentURL());
$title = "合并| {$len} 笔订单"; } $newtotal = $total * $discount; $address = ReceiverAddress::getData($addressid); unset($address['id']); $address['module_id'] = 3; //---DB::Debug(); DB::tranBegin('pay'); //事务开始 $address_id = ReceiverAddress::insert($address); $data = array('order_code' => $order_code, 'user_code' => $user_code, 'discount' => $discount, 'amount' => $newtotal, 'receiver_address_id' => $address_id, 'create_time' => time()); $order_id = Orders::insert($data); foreach ($sku_ids as $sku_id => $qt) { $product_sku = ProductsSku::getData($sku_id, 'sku'); $product_sku = isset($product_sku['sku']) ? $product_sku['sku'] : ''; $stocknum = ProductsStock::getSkuStock($product_sku); if (!$product_sku || $stocknum < $qt) { DB::rollBack(); Templates::Assign('errormsg', "订单保存失败,[{$product_sku}] 库存不足,错误代码 PY001"); Templates::Display('error.html'); exit; } $data = array('order_code' => $order_code, 'product_sku' => $product_sku, 'product_num' => $qt); OrdersProducts::insert($data); Cart::clearCart($userid, $sku_id); $locked = ProductsStockLock::add($order_code, $product_sku, $qt); if (!$locked) { break; } } if (!$locked) {