'array' ]; const ORIGIN = [ 1 => '代理商', 2 => '渠道' ]; public function user() { return $this->hasOne(User::class, 'id', 'user_id'); } public function scopeUser(Builder $builder) { $user = auth()->user(); if ($user->is_super) { return $builder; } // boss按理只有一个 switch ($user->role_id) { case Role::TYPE_AGENT_BOSS: $userIds = User::query()->where('agent_id', $user->agent_id)->pluck('id')->toArray(); break; case Role::TYPE_AGENT_MANAGER: $userIds = User::query()->where('agent_id', $user->agent_id) ->where('role_id', Role::TYPE_AGENT_WORKER)->pluck('id')->toArray(); array_unshift($userIds, $user->id); break; case Role::TYPE_AGENT_WORKER: $userIds = [$user->id]; break; case Role::TYPE_CHANNEL_BOSS: return $builder; case Role::TYPE_CHANNEL_MANAGER: $userIds = User::query()->where('agent_id', '>', 0) ->pluck('id')->toArray(); array_unshift($userIds, $user->id); break; case Role::TYPE_CHANNEL_WORKER: $anentIds = Agent::query()->whereJsonContains('channel_ids', (string)$user->id) ->pluck('id')->toArray(); $userIds = User::query()->whereIn('agent_id', $anentIds)->pluck('id')->toArray(); array_unshift($userIds, $user->id); break; default: $userIds = []; break; } return $builder->whereIn('user_id', $userIds); } }