Immerse.php 2.07 KB
<?php

namespace App\Models;

use Dcat\Admin\Traits\HasDateTimeFormatter;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;

class Immerse extends Model
{
	use HasDateTimeFormatter;
    protected $table = 'immerse';

    protected $guarded = [''];

    protected $casts = [
        'user_id' => 'integer',
        'type' => 'integer',
        'poem_id' => 'integer',
        'temp_id' => 'integer',
    ];

    public function send($user_id, $type, $audio = '', $video = '')
    {

    }

    public function getUrlAttribute($url)
    {
        if ($url == '') return $url;

        return Storage::disk('public')->url($url);
    }

    public function getThumbnailAttribute($url)
    {
        if (Str::contains($url, '//') || $url == '') return $url;

        if (Str::contains($url, '/storage/app/public/')) {
            $str = Str::of($url)->replace('/usr/local/nginx/html/OnePoem/storage/app/public/', '');
            return Storage::disk('public')->url($str);
        }

        return Storage::disk('public')->url($url);
    }

    public function getHuangliAttribute($huangli)
    {
        if ($huangli == null) return '';

        return $huangli;
    }

    public function poem()
    {
        return $this->hasOne(OnePoem::class,'id','poem_id');
    }

    public function temp()
    {
        return $this->hasOne(VideoTemp::class,'id','temp_id');
    }

    public function getContentPosition($field = 'one_poem')
    {
        $component  = $this->temp()->first()->components()->where('name','=',$field)->first();

        return VideoTemp::POSITION_FFMPEG[$component->position];
    }

    public function isPraise($immerse_id, $user_id)
    {
        return Praise::query()->where('immerse_id', $immerse_id)
            ->where('user_id', $user_id)
            ->where('state', 1)
            ->exists();
    }

    public function isCollect($immerse_id, $user_id)
    {
        return Collect::query()->where('immerse_id', $immerse_id)
            ->where('user_id', $user_id)
            ->where('state', 1)
            ->exists();
    }
}