| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | <?phpnamespace 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);    }}
 |