user(); if ($user->is_super || in_array($user->role_id, [ Role::TYPE_PROPAGANDA, Role::TYPE_ARTICLE, Role::TYPE_LINK, Role::TYPE_MANAGE_LEADER, Role::TYPE_CHONGQING_MANAGER ])) { return $query; } return $query->whereExists(function (\Illuminate\Database\Query\Builder $builder) use ($user) { $builder->select(DB::raw(1))->from('user_has_sites') ->whereRaw(sprintf('user_id=%s AND user_has_sites.site_id=link_tasks.site_id', $user->id)); }); } public function site() { return $this->hasOne( Site::class, 'id', 'site_id' ); } public function worker() { return $this->hasOne( User::class, 'id', 'worker_id' ); } public function linkDetails() { return $this->hasMany(LinkTaskDetail::class, 'task_id', 'id'); } public function linkUrls() { return $this->hasManyThrough( LinkTaskUrl::class, LinkTaskDetail::class, 'task_id', 'link_tasks_detail_id', 'id', 'id' ); } public function score() { return $this->hasOne( LinkTaskScore::class, 'task_id', 'id' ); } public function links(): BelongsToMany { return $this->belongsToMany( Link::class, 'link_tasks_detail', 'task_id', 'link_id' )->withPivot(['id', 'task_id', 'link_id', 'username', 'password', 'email', 'url', 'remark'])->withTimestamps(); // ->whereNull('link_tasks_detail.deleted_at'); } public function statusMap($status) { switch ($status) { case 1: return '待分配'; case 2: return '任务中'; case 3: return '待审核'; case 4: return '未通过'; case 5: return '已通过'; case 6: return '已结算'; default: return ''; } } public function getStatusWithCssAttribute() { $format = ''; return sprintf($format, $this->statusMap($this->status ?? null)); } public function getStatusTextAttribute() { return $this->statusMap($this->status ?? null); } }