<?php
/**
 * Created by PhpStorm.
 * User: durong
 * Date: 2019/7/4
 * Time: 上午9:50
 */
namespace App\Repositories;

use App\Models\PostMusicCategory;
use App\Models\PostMusicCategoryRel;
use App\Models\PostMusicUser;
use Illuminate\Support\Facades\Cache;

class MusicRepository
{
    public function __construct(PostMusicCategoryRel $postMusicCategoryRel,PostMusicCategory $postMusicCategory,PostMusicUser $postMusicUser)
    {
        $this->postMusicCategoryRel = $postMusicCategoryRel;
        $this->postMusicCategory = $postMusicCategory;
        $this->postMusicUser = $postMusicUser;
    }

    //热门音乐列表
    public function lists($request)
    {
        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
        $music_key = config('constants.MUSIC_LIST');
        if (Cache::has($music_key)) {
            return Cache::store('redis')->get($music_key);
        }

        $category_name = '热门';
        $postMusicCategoryRel = $this->postMusicCategoryRel
            ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
            ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
            ->select('post_music.*')
            ->where('post_music_category.name', 'like', "%{$category_name}%")
            ->orderBy('id', 'desc')
            ->paginate($perPage);

        if (!Cache::has($music_key)) {
            Cache::store('redis')->put($music_key, $postMusicCategoryRel, 604800);//一周过期
        }

        return $postMusicCategoryRel;
    }

    public function category_list($request)
    {
        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
        return $this->postMusicCategory->where('is_open',1)->orderBy('id', 'asc')->paginate($perPage);
    }

    public function postMusicList($request)
    {
        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;

        $postMusicList = $this->postMusicCategoryRel
            ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
            ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
            ->select('post_music.*')
            ->where(['post_music_category.id' => $request['category_id'], 'post_music_category.is_open' => 1])
            ->orderBy('id', 'desc')
            ->paginate($perPage);

        return $postMusicList;

    }

    public function create($request)
    {
        $data = [
            'name' => $request['name'],
            'username' => $request['username'],
            'url' => $request['url'] ?? '',
            'uid' => $request['uid']
        ];

        $music_create = $this->postMusicUser->create($data);
        if (!$music_create) {
            return jsonError('上传失败请重试');
        }
    }


}