$row['childCode']])->value("usable_stock",0); } public function AddStock($spuCode='',$num="0"){ $comblist = $this->where(['spuCode'=>$spuCode,'is_del'=>0])->select()->toArray(); if(empty($comblist))throw new \Exception("未找到对应子商品信息"); $GoodStock=new GoodStock(); $returnBn=[]; foreach ($comblist as $item){ $row =$GoodStock->withJoin(["wsminfo"],"left") ->field('id,usable_stock') ->where(['spuCode' => $item['childCode'], 'warehouse_info.wsm_type'=>[2,5]]) ->findOrEmpty(); if($row->isEmpty()) throw new \Exception('未找到对应子商品信息'); $stocknum =bcmul($num,$item["child_num"]); $up =GoodStockInfo::StockBnSub($row->id,intval($stocknum)); if(empty($up)) throw new \Exception('未找到对应子商品BN库存信息'); $returnBn=array_merge($returnBn,$up); } return $returnBn; } public function subStock($spuCode='',$bnCode='',$num='0'){ $comblist = $this->where(['spuCode'=>$spuCode,'is_del'=>0])->select()->toArray(); if(empty($comblist))throw new \Exception('未找到对应子商品信息'); $goodinfo = new Good(); $combind = new CombindBninfo(); foreach ($comblist as $item){ $stocknum =bcmul($num,$item['child_num']); $good = $goodinfo->where(["spuCode"=>$item['childCode']])->findOrEmpty(); if($good->isEmpty()==false){ $good->usable_stock = bcadd($good->usable_stock,$stocknum); $gdup=$good->save(); if($gdup==false)throw new \Exception('子商品库存更新失败'); } $up=$combind->subBN($spuCode,$bnCode,$stocknum); if($up==false)throw new \Exception('子商品库存更新失败'); } return true; } }