1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace 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);
- }
- }
|