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