MusicRepository.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: durong
  5. * Date: 2019/7/4
  6. * Time: 上午9:50
  7. */
  8. namespace App\Repositories;
  9. use App\Models\PostMusicCategory;
  10. use App\Models\PostMusicCategoryRel;
  11. use App\Models\PostMusicUser;
  12. use Illuminate\Support\Facades\Cache;
  13. class MusicRepository
  14. {
  15. public function __construct(PostMusicCategoryRel $postMusicCategoryRel,PostMusicCategory $postMusicCategory,PostMusicUser $postMusicUser)
  16. {
  17. $this->postMusicCategoryRel = $postMusicCategoryRel;
  18. $this->postMusicCategory = $postMusicCategory;
  19. $this->postMusicUser = $postMusicUser;
  20. }
  21. //热门音乐列表
  22. public function lists($request)
  23. {
  24. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  25. $music_key = config('constants.MUSIC_LIST');
  26. if (Cache::has($music_key)) {
  27. return Cache::store('redis')->get($music_key);
  28. }
  29. $category_name = '热门';
  30. $postMusicCategoryRel = $this->postMusicCategoryRel
  31. ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
  32. ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
  33. ->select('post_music.*')
  34. ->where('post_music_category.name', 'like', "%{$category_name}%")
  35. ->orderBy('id', 'desc')
  36. ->paginate($perPage);
  37. if (!Cache::has($music_key)) {
  38. Cache::store('redis')->put($music_key, $postMusicCategoryRel, 604800);//一周过期
  39. }
  40. return $postMusicCategoryRel;
  41. }
  42. public function category_list($request)
  43. {
  44. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  45. return $this->postMusicCategory->where('is_open',1)->orderBy('id', 'asc')->paginate($perPage);
  46. }
  47. public function postMusicList($request)
  48. {
  49. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  50. $postMusicList = $this->postMusicCategoryRel
  51. ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
  52. ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
  53. ->select('post_music.*')
  54. ->where(['post_music_category.id' => $request['category_id'], 'post_music_category.is_open' => 1])
  55. ->orderBy('id', 'desc')
  56. ->paginate($perPage);
  57. return $postMusicList;
  58. }
  59. public function create($request)
  60. {
  61. $data = [
  62. 'name' => $request['name'],
  63. 'username' => $request['username'],
  64. 'url' => $request['url'] ?? '',
  65. 'uid' => $request['uid']
  66. ];
  67. $music_create = $this->postMusicUser->create($data);
  68. if (!$music_create) {
  69. return jsonError('上传失败请重试');
  70. }
  71. }
  72. }