| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | <?phpnamespace App\Http\Models;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\SoftDeletes;use Illuminate\Database\Eloquent\Builder;class AgentCustomer extends Model{    use SoftDeletes;    protected $primaryKey = 'id';    protected $table = 'agent_customer';    protected $guarded = [];    protected $casts = [        'channel_ids' => '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);    }}
 |