where('id', $good['goods_id']) ->update([ // 'sales_sum' => Db::raw("sales_sum-" . $good['goods_num']), 'stock' => Db::raw('stock+' . $good['goods_num']) ]); //补充规格表库存 Db::name('goods_item') ->where('id', $good['item_id']) ->setInc('stock', $good['goods_num']); } } //下单扣除订单库存 public static function decStock($goods) { $seckill_data = SeckillLogic::getSeckillGoods(); $seckill = $seckill_data['seckill']; $seckill_goods = $seckill_data['seckill_goods']; $goods_ids = []; foreach ($goods as $k1 => $good) { $item_id = $good['item_id']; //扣除库存,扣除规格库存,增加商品销量 Db::name('goods') ->where('id', $good['goods_id']) ->update([ 'sales_sum' => Db::raw("sales_sum+" . $good['goods_num']), 'stock' => Db::raw('stock-' . $good['goods_num']) ]); //扣除规格表库存 Db::name('goods_item') ->where('id', $item_id) ->setDec('stock', $good['goods_num']); //秒杀商品增加销量 if (isset($seckill_goods[$item_id])){ $seckill_goods_id = $seckill_goods[$item_id]['seckill_goods_id']; Db::name('seckill_goods') ->where('id', $seckill_goods_id) ->update([ 'sales_sum' => Db::raw("sales_sum+" . $good['goods_num']), 'update_time' => time() ]); } $goods_ids[] = $good['goods_id']; } //下架商品总库存为0的商品 if (!empty($goods_ids)){ self::outGoods($goods_ids); } } /** * Notes: 下单后下架商品总库存为0的商品 * @param $goods_id * @author 松鼠 * @return bool */ public static function outGoods($goods_ids) { try{ $goods = Db::name('goods') ->field('id, stock') ->where('id', 'in', $goods_ids) ->select(); if (empty($goods)){ return true; } $need_handle_ids = []; foreach ($goods as $good) { if ($good['stock'] <= 0) { $need_handle_ids[] = $good['id']; } } if (empty($need_handle_ids)){ return true; } //下架订单商品中 商品总库存已为0的商品 Db::name('goods')->where('id', 'in', $need_handle_ids)->update(['status' => 0]); } catch (\Exception $e) {} } }