MusicRepository.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. $key = config('constants.MUSIC_LIST');
  26. $music_key = sprintf($key, md5($perPage));
  27. if (Cache::has($music_key)) {
  28. return Cache::store('redis')->get($music_key);
  29. }
  30. $category_name = '热门';
  31. $postMusicCategoryRel = $this->postMusicCategoryRel
  32. ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
  33. ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
  34. ->select('post_music.*')
  35. ->where('post_music_category.name', 'like', "%{$category_name}%")
  36. ->orderBy('id', 'desc')
  37. ->paginate($perPage);
  38. if (!Cache::has($music_key)) {
  39. Cache::store('redis')->put($music_key, $postMusicCategoryRel, 604800);//一周过期
  40. }
  41. return $postMusicCategoryRel;
  42. }
  43. public function category_list($request)
  44. {
  45. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  46. return $this->postMusicCategory->where('is_open', 1)->orderBy('sort', 'asc')->paginate($perPage);
  47. }
  48. public function postMusicList($request)
  49. {
  50. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  51. $postMusicList = $this->postMusicCategoryRel
  52. ->join('post_music_category', 'post_music_category.id', '=', 'post_music_category_rel.music_category_id')
  53. ->join('post_music', 'post_music.id', '=', 'post_music_category_rel.mid')
  54. ->select('post_music.*', 'post_music_category_rel.sort')
  55. ->where(['post_music_category.id' => $request['category_id'], 'post_music_category.is_open' => 1])
  56. ->orderBy('post_music_category_rel.sort', 'asc')
  57. ->paginate($perPage);
  58. return $postMusicList;
  59. }
  60. public function create($request)
  61. {
  62. $data = [
  63. 'name' => $request['name'],
  64. 'username' => $request['username'],
  65. 'url' => $request['url'] ?? '',
  66. 'uid' => $request['uid']
  67. ];
  68. $music_create = $this->postMusicUser->create($data);
  69. if (!$music_create) {
  70. return jsonError('上传失败请重试');
  71. }
  72. }
  73. }