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(); //依次分红 $nowTime = now(); $logs = []; foreach ($userInfos as $userInfo) { // if ($userInfo->bonusable) {//只针对享受分红的人发放 $quotaV1amount = round(bcmul(bcdiv($job->amount, $totalQuotaV1, 5), $userInfo->quota_v1, 3)); if ($quotaV1amount >0) { // $log = new QuotaV1SendLog(); // $log->user_id = $userInfo->user_id; // $log->job_id = $job->id; // $log->amount = $quotaV1amount; // $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); // } $_log = [ 'user_id'=>$userInfo->user_id, 'job_id' =>$job->id, 'amount' =>$quotaV1amount, 'created_at'=>$nowTime, 'updated_at'=>$nowTime, ]; $logs[] = $_log; } // } } if (count($logs) > 0) { QuotaV1SendLog::insert($logs); } }); } $job->update([ 'status' => 2, ]); } return Command::SUCCESS; } }