getInfo([['site_id', '=', $site_id], ['sku_id', '=', $sku_id]], 'goods_id,stock'); if (empty($sku_info)) { return $this->error([], '找不到商品'); } $goods_id = $sku_info['goods_id']; $stock = $sku_info['stock']; if ($store_id > 0) {//店铺库存 $return_info = $this->isNotExistCreateStoreStock(['store_id' => $store_id, 'sku_id' => $sku_id, 'goods_id' => $goods_id])['data'] ?? []; $sku_info = $return_info['sku_info']; $stock = $sku_info['stock'] ?? 0; if ($stock < $temp_stock) return $this->error([], '库存不足'); $sku_condition = array( ['sku_id', '=', $sku_id], ['store_id', '=', $store_id] ); model('store_goods_sku')->setDec($sku_condition, 'stock', $temp_stock); $goods_condition = array( ['goods_id', '=', $goods_id], ['store_id', '=', $store_id] ); model('store_goods')->setDec($goods_condition, 'stock', $temp_stock); } else { if ($stock < $temp_stock) return $this->error([], '库存不足'); model('goods_sku')->setDec([['sku_id', '=', $sku_id]], 'stock', $temp_stock); model('goods')->setDec([['goods_id', '=', $goods_id]], 'goods_stock', $temp_stock); } //todo维护公共的销售库存 return $this->success(); } /** * 增加库存 * @param $params * @return array */ public function incGoodsStock($params) { $sku_id = $params['sku_id']; $site_id = $params['site_id'] ?? 1; $store_id = $params['store_id'] ?? 0; $temp_stock = $params['stock']; $sku_info = model('goods_sku')->getInfo([['site_id', '=', $site_id], ['sku_id', '=', $sku_id]], 'goods_id'); if (empty($sku_info)) { return $this->error([], '找不到商品'); } $goods_id = $sku_info['goods_id']; if ($store_id > 0) { $sku_condition = array( ['sku_id', '=', $sku_id], ['store_id', '=', $store_id] ); model('store_goods_sku')->setInc($sku_condition, 'stock', $temp_stock); $goods_condition = array( ['goods_id', '=', $goods_id], ['store_id', '=', $store_id] ); model('store_goods')->setInc($goods_condition, 'stock', $temp_stock); } else { model('goods_sku')->setInc([['sku_id', '=', $sku_id]], 'stock', $temp_stock); model('goods')->setInc([['goods_id', '=', $goods_id]], 'goods_stock', $temp_stock); } return $this->success(); } }