where('deleted_at', 0)->first(); if (empty($sheet)) { UtilsService::getInstance()->errorThrow('规格不存在'); } $stock = (int) ($sheet['stock'] ?? -1); if ($stock < 0) { return; } if ($stock < $quantity) { UtilsService::getInstance()->errorThrow('库存不足(剩余 ' . $stock . ')'); } } /** * 下单成功后扣库存;不限库存不写库。 */ public function deduct(int $sheetId, int $quantity): void { if ($sheetId <= 0 || $quantity <= 0) { return; } $sheet = PriceSheetModel::where('id', $sheetId)->where('deleted_at', 0)->first(); if (empty($sheet)) { return; } $stock = (int) ($sheet['stock'] ?? -1); if ($stock < 0) { return; } $next = max(0, $stock - $quantity); PriceSheetModel::where('id', $sheetId)->update([ 'stock' => $next, 'updated_at' => time(), ]); } }