From 2a2ac5a37d02d9ca46c7163571e2bfedddea91b2 Mon Sep 17 00:00:00 2001 From: memorydream <34763046+memorydream@users.noreply.github.com> Date: Sun, 19 Jun 2022 20:51:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=81=E4=BA=BA=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E6=AD=8C=E5=8D=95=20(#1665)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 私人推荐歌单 * update --- src/api/playlist.js | 5 ++++- src/utils/playList.js | 39 +++++++++++++++++++++++++++++++++++++++ src/views/explore.vue | 12 ++++-------- src/views/home.vue | 11 +++++------ src/views/playlist.vue | 4 ++++ 5 files changed, 56 insertions(+), 15 deletions(-) diff --git a/src/api/playlist.js b/src/api/playlist.js index 58f6b98..08177ea 100644 --- a/src/api/playlist.js +++ b/src/api/playlist.js @@ -26,7 +26,10 @@ export function dailyRecommendPlaylist(params) { return request({ url: '/recommend/resource', method: 'get', - params, + params: { + params, + timestamp: Date.now(), + }, }); } /** diff --git a/src/utils/playList.js b/src/utils/playList.js index f476f28..d135fc3 100644 --- a/src/utils/playList.js +++ b/src/utils/playList.js @@ -1,5 +1,11 @@ import router from '../router'; import state from '../store/state'; +import { + recommendPlaylist, + dailyRecommendPlaylist, + getPlaylistDetail, +} from '@/api/playlist'; +import { isAccountLoggedIn } from '@/utils/auth'; export function hasListSource() { return !state.player.isPersonalFM && state.player.playlistSource.id !== 0; @@ -20,3 +26,36 @@ export function getListSourcePath() { return `/${state.player.playlistSource.type}/${state.player.playlistSource.id}`; } } + +export async function getRecommendPlayList(limit, removePrivateRecommand) { + if (isAccountLoggedIn()) { + const playlists = await Promise.all([ + dailyRecommendPlaylist(), + recommendPlaylist({ limit }), + ]); + let recommend = playlists[0].recommend ?? []; + if (recommend.length) { + if (removePrivateRecommand) recommend = recommend.slice(1); + await replaceRecommendResult(recommend); + } + return recommend.concat(playlists[1].result).slice(0, limit); + } else { + const response = await recommendPlaylist({ limit }); + return response.result; + } +} + +async function replaceRecommendResult(recommend) { + for (let r of recommend) { + if (specialPlaylist.indexOf(r.id) > -1) { + const data = await getPlaylistDetail(r.id, true); + const playlist = data.playlist; + if (playlist) { + r.name = playlist.name; + r.picUrl = playlist.coverImgUrl; + } + } + } +} + +const specialPlaylist = [3136952023, 2829883282, 2829816518, 2829896389]; diff --git a/src/views/explore.vue b/src/views/explore.vue index 2e5057b..ef190df 100644 --- a/src/views/explore.vue +++ b/src/views/explore.vue @@ -66,13 +66,9 @@