cursor() as $job) { $totalQuotaV1 = UserInfo::where('quota_v1', '>', 0)->sum('quota_v1'); if ($totalQuotaV1 > 0) {//总配额大于0才开始分 UserInfo::with('user')->where('quota_v1', '>', 0)->chunkById(100, function ($userInfos) use ($totalQuotaV1, $job) { $walletService = new WalletService(); //依次分红 foreach ($userInfos as $userInfo) { $log = new QuotaV1SendLog(); $log->user_id = $userInfo->user_id; $log->job_id = $job->id; $log->amount = round(bcmul(bcdiv($job->amount, $totalQuotaV1, 5), $userInfo->quota_v1, 3)); $log->save(); try { DB::beginTransaction(); $log->update(['status'=>1]); $walletService->changeBalance($userInfo->user, $log->amount, WalletLog::ACTION_QUOTA_V1, '老配额分红', $log); DB::commit(); } catch (Throwable $th) { DB::rollBack(); report($th); } } }); } $job->update([ 'status' => 2, ]); } return Command::SUCCESS; } }