123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?php
- namespace App\Http\Models;
- use Illuminate\Database\Eloquent\Builder;
- use App\Http\Filters\DemoFilter;
- use App\Http\Traits\ModelBoost;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Eloquent\SoftDeletes;
- use Illuminate\Support\Facades\DB;
- class Article extends Model
- {
- use SoftDeletes, ModelBoost;
- protected $table = 'articles';
- protected $primaryKey = 'id';
- protected $guarded = [];
- protected $casts = [
- 'group' => 'array',
- 'social_result' => 'array'
- ];
- //内部人员yingyingli
- const INSIDER = 60;
- //特殊时效人员
- const IS_EXPIRED = 442;
- /**
- * 筛选出 除超管用户自己所分配的站点下的文章
- * @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=articles.site_id', $user->id));
- });
- }
- public function site()
- {
- return $this->hasOne(
- Site::class,
- 'id',
- 'site_id'
- );
- }
- public function translator()
- {
- return $this->hasOne(
- User::class,
- 'id',
- 'translator_id'
- );
- }
- public function auditor()
- {
- return $this->hasOne(
- User::class,
- 'id',
- 'auditor_id'
- );
- }
- const STATUS_PENDING = 1;
- const STATUS_TRANSLATING = 2;
- const STATUS_AUDITING = 3;
- const STATUS_FAILED = 4;
- const STATUS_PASSED = 5;
- const STATUS_CALC = 6;
- // public function identifier()
- // {
- // return sprintf('A%s%s-%s', date('ym'), $this->newQuery()->max('id') + 1, mt_rand(100, 999));
- // }
- public function getStatusWithCssAttribute()
- {
- $format = '<button type="button" class="btn btn-xs btn-primary">%s</button>';
- switch ($this->status ?? 0) {
- case 1:
- return sprintf($format, '待翻译');
- case 2:
- return sprintf($format, '翻译中');
- case 3:
- return sprintf($format, '待审核');
- case 4:
- return sprintf($format, '未通过');
- case 5:
- return sprintf($format, '已通过');
- case 6:
- return sprintf($format, '已结算');
- default:
- return '';
- }
- }
- public function getCheckStatusWithCssAttribute()
- {
- $format = '<button type="button" class="btn btn-xs btn-primary">%s</button>';
- switch ($this->be_applicable ?? 0) {
- case 0:
- return sprintf($format, '待定');
- case 1:
- return sprintf($format, '适用');
- case 2:
- return sprintf($format, '不适用');
- default:
- return '';
- }
- }
- public function scopeFilter($query, DemoFilter $filters)
- {
- return $filters->apply($query);
- }
- }
|