| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | <?phpnamespace App\Http\Models;use App\Http\Traits\ModelBoost;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\Relations\BelongsToMany;use Illuminate\Database\Eloquent\SoftDeletes;use Illuminate\Database\Eloquent\Builder;use Illuminate\Support\Facades\DB;class LinkTask extends Model{    use SoftDeletes, ModelBoost;    protected $table = 'link_tasks';    protected $primaryKey = 'id';    protected $guarded = [];    /**     * 筛选出 除超管用户自己所分配的站点下的文章     * @param Builder $query     * @return Builder     */    public function scopeUser(Builder $query)    {        $user = auth()->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 = '<button type="button" class="btn btn-xs btn-primary">%s</button>';        return sprintf($format, $this->statusMap($this->status ?? null));    }    public function getStatusTextAttribute()    {        return $this->statusMap($this->status ?? null);    }}
 |