user = $user->fresh(); $this->debug = $debug; $this->timeBetween = [now()->subMonth()->startOfMonth()->format('Y-m-d H:i:s'), now()->subMonth()->endOfMonth()->format('Y-m-d H:i:s')]; if ($this->debug) { $this->timeBetween = [now()->startOfMonth()->format('Y-m-d H:i:s'), now()->endOfMonth()->format('Y-m-d H:i:s')]; } } public function handle() { $userData = self::getUserPerf($this->user); $source = [ 'perf_none' => $perf_none, 'perf' => $newPerf, 'oldPerf' => $oldPerf, 'allPerf' => $allPerf, 'rate' => $rate, 'sett_at' => $timeBetween[1], ]; $cash = bcadd($newPerf * $rate / 100, 0, 2); $childs = UserRelation::where('bloodline', 'like', "%," . $this->user->id . ",%")->pluck('user_id')->toArray() ?: false; $childCash = 0; if ($childs) { $childCash = UserAccountLog::whereIn('user_id', $childs)->where('rule_id', '10')->sum('variable'); } $cash -= $childCash; $this->user->rule('perf', $cash, false, $source); } public function getUserPerf(User $user) { $data = [ 'perf' => 0, 'rate' => 0, ]; if ($user) { $oldPerf = $user->accountLogs()->where('rule_id', '10')->sum('source->perf') ?: 0; //获取已经结算过的业绩 $newPerf = UserPerf::whereBetween('created_at', $this->timeBetween)->where('created_at', '>=', $user->activationd_at)->where('user_id', $user->id)->sum('perf') ?: 0; //获取本期计算的业绩 $allPerf = $oldPerf + $newPerf; //总业绩 $rate = 0; if ($allPerf >= 10000000) { $rate = $user->identity->info->configs['perf_1000'] ?: 0; } if ($allPerf >= 5000000 && $rate === 0) { $rate = $user->identity->info->configs['perf_500'] ?: 0; } if ($allPerf >= 1000000 && $rate === 0) { $rate = $user->identity->info->configs['perf_100'] ?: 0; } $perf_none = 0; if ($oldPerf < 1000000) { $perf_none = 1000000 - $oldPerf; $newPerf -= $perf_none; } $data['perf'] = $newPerf; $data['rate'] = $rate; } return $data; } }