getArgsDate(); $items = $this->getCommissionLogRepo()->makeModel()->query()->whereDate('date', $date)->distinct('agent_uid')->groupBy('agent_uid')->get(['agent_uid']); if ($items->count() > 0) { $changeNote = '[系统][计划任务]CommissionMoneyToBalance, 当日提成划到余额'; foreach ($items as $item) { $agentUid = $item->agent_uid; $dayObj = $this->getAttrsDayRepo()->makeModel()->query()->whereDate('td_date', $date)->where(['agent_uid' => $agentUid])->first(['id', 'is_used']); if (isset($dayObj->is_used) && $dayObj->is_used == 1) { // 已划过钱,跳过. continue; } $amountCommissionMoney = $this->getCommissionLogRepo()->makeModel()->query()->whereDate('date', $date)->where(['agent_uid' => $agentUid])->sum('commission_money'); $agentObj = $this->getAgentRepo()->makeModel()->query()->where(['uid' => $agentUid])->first(); if (!empty($agentObj)) { $prevAgent = clone $agentObj; $agentObj->balance += $amountCommissionMoney; $saveStatus = $agentObj->save(); if ($saveStatus) { $balaceStatus = $this->getBalanceLogRepo()->record($agentObj, $prevAgent, $changeNote); if ($balaceStatus && !empty($dayObj)) { // DB里记录已经划过钱了,不再重复划. $dayObj->is_used = 1; $dayObj->save(); } } } } $this->comment('['. Carbon::now()->toDateTimeString() .'][系统][计划任务]['. $date .']CommissionMoneyToBalance, 当日提成划到余额'); } } /** * 获取日期参数. * @return string */ private function getArgsDate() { $oldDate = $date = $this->option('date'); if (empty($date)) { // 没有传参数, 拿昨天的 $date = Carbon::now()->subDays(1)->toDateString(); } return $date; } /** * @return CommissionLogRepository|\Illuminate\Contracts\Foundation\Application|mixed|null */ private function getCommissionLogRepo() { if (!$this->commissionLogRepo instanceof CommissionLogRepository) { $this->commissionLogRepo = app(CommissionLogRepository::class); } return $this->commissionLogRepo; } /** * @return AgentRepository|\Illuminate\Contracts\Foundation\Application|mixed|null */ private function getAgentRepo() { if (!$this->agentRepo instanceof AgentRepository) { $this->agentRepo = app(AgentRepository::class); } return $this->agentRepo; } /** * @return BalanceLogRepository|\Illuminate\Contracts\Foundation\Application|mixed|null */ private function getBalanceLogRepo() { if (!$this->balanceLogRepo instanceof BalanceLogRepository) { $this->balanceLogRepo = app(BalanceLogRepository::class); } return $this->balanceLogRepo; } /** * @return AgentAttrsDayRepository|\Illuminate\Contracts\Foundation\Application|mixed|null */ private function getAttrsDayRepo() { if (!$this->attrsDayRepo instanceof AgentAttrsDayRepository) { $this->attrsDayRepo = app(AgentAttrsDayRepository::class); } return $this->attrsDayRepo; } }