chunkById(200, function ($preIncomes) use ($walletService) { $preIncomes->load('user'); foreach ($preIncomes as $preIncome) { try { DB::beginTransaction(); $walletService->changeBalance( $preIncome->user, bcmul($preIncome->total_revenue, 100), WalletLog::ACTION_DISTRIBUTION_PRE_INCOME, $preIncome->remarks, $preIncome ); $preIncome->update([ 'completed_at' => now(), 'status' => DistributionPreIncome::STATUS_PROCESSED, ]); DB::commit(); } catch (Throwable $e) { DB::rollBack(); report($e); } } }); } }