LinkTask.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace App\Http\Models;
  3. use App\Http\Traits\ModelBoost;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  6. use Illuminate\Database\Eloquent\SoftDeletes;
  7. use Illuminate\Database\Eloquent\Builder;
  8. use Illuminate\Support\Facades\DB;
  9. class LinkTask extends Model
  10. {
  11. use SoftDeletes, ModelBoost;
  12. protected $table = 'link_tasks';
  13. protected $primaryKey = 'id';
  14. protected $guarded = [];
  15. /**
  16. * 筛选出 除超管用户自己所分配的站点下的文章
  17. * @param Builder $query
  18. * @return Builder
  19. */
  20. public function scopeUser(Builder $query)
  21. {
  22. $user = auth()->user();
  23. if ($user->is_super || in_array($user->role_id, [
  24. Role::TYPE_PROPAGANDA,
  25. Role::TYPE_ARTICLE,
  26. Role::TYPE_LINK,
  27. Role::TYPE_MANAGE_LEADER,
  28. Role::TYPE_CHONGQING_MANAGER
  29. ])) {
  30. return $query;
  31. }
  32. return $query->whereExists(function (\Illuminate\Database\Query\Builder $builder) use ($user) {
  33. $builder->select(DB::raw(1))->from('user_has_sites')
  34. ->whereRaw(sprintf('user_id=%s AND user_has_sites.site_id=link_tasks.site_id', $user->id));
  35. });
  36. }
  37. public function site()
  38. {
  39. return $this->hasOne(
  40. Site::class,
  41. 'id',
  42. 'site_id'
  43. );
  44. }
  45. public function worker()
  46. {
  47. return $this->hasOne(
  48. User::class,
  49. 'id',
  50. 'worker_id'
  51. );
  52. }
  53. public function linkDetails()
  54. {
  55. return $this->hasMany(LinkTaskDetail::class, 'task_id', 'id');
  56. }
  57. public function linkUrls()
  58. {
  59. return $this->hasManyThrough(
  60. LinkTaskUrl::class,
  61. LinkTaskDetail::class,
  62. 'task_id',
  63. 'link_tasks_detail_id',
  64. 'id',
  65. 'id'
  66. );
  67. }
  68. public function score()
  69. {
  70. return $this->hasOne(
  71. LinkTaskScore::class,
  72. 'task_id',
  73. 'id'
  74. );
  75. }
  76. public function links(): BelongsToMany
  77. {
  78. return $this->belongsToMany(
  79. Link::class,
  80. 'link_tasks_detail',
  81. 'task_id',
  82. 'link_id'
  83. )->withPivot(['id', 'task_id', 'link_id', 'username', 'password', 'email', 'url', 'remark'])->withTimestamps();
  84. // ->whereNull('link_tasks_detail.deleted_at');
  85. }
  86. public function statusMap($status)
  87. {
  88. switch ($status) {
  89. case 1:
  90. return '待分配';
  91. case 2:
  92. return '任务中';
  93. case 3:
  94. return '待审核';
  95. case 4:
  96. return '未通过';
  97. case 5:
  98. return '已通过';
  99. case 6:
  100. return '已结算';
  101. default:
  102. return '';
  103. }
  104. }
  105. public function getStatusWithCssAttribute()
  106. {
  107. $format = '<button type="button" class="btn btn-xs btn-primary">%s</button>';
  108. return sprintf($format, $this->statusMap($this->status ?? null));
  109. }
  110. public function getStatusTextAttribute()
  111. {
  112. return $this->statusMap($this->status ?? null);
  113. }
  114. }