From 2924ad6c18dda3706d0c2182228c40e893592bfe Mon Sep 17 00:00:00 2001 From: alger Date: Mon, 24 Mar 2025 22:54:04 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20=E5=A2=9E=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=85=B3=E6=B3=A8=E5=88=97=E8=A1=A8=20=E5=92=8C=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/lang/en-US/user.ts | 21 ++ src/i18n/lang/zh-CN/user.ts | 21 ++ src/preload/index.ts | 2 - src/renderer/api/user.ts | 58 ++- src/renderer/layout/components/SearchBar.vue | 22 ++ src/renderer/router/index.ts | 3 +- src/renderer/router/other.ts | 36 ++ src/renderer/type/user.ts | 14 + src/renderer/utils/request.ts | 10 +- src/renderer/views/user/detail.vue | 376 +++++++++++++++++++ src/renderer/views/user/followers.vue | 241 ++++++++++++ src/renderer/views/user/follows.vue | 237 ++++++++++++ src/renderer/views/user/index.vue | 34 +- 13 files changed, 1059 insertions(+), 16 deletions(-) create mode 100644 src/renderer/router/other.ts create mode 100644 src/renderer/views/user/detail.vue create mode 100644 src/renderer/views/user/followers.vue create mode 100644 src/renderer/views/user/follows.vue diff --git a/src/i18n/lang/en-US/user.ts b/src/i18n/lang/en-US/user.ts index ef1b4f6..b933803 100644 --- a/src/i18n/lang/en-US/user.ts +++ b/src/i18n/lang/en-US/user.ts @@ -13,6 +13,27 @@ export default { title: 'Listening History', playCount: '{count} times' }, + follow: { + title: 'Follow List', + viewPlaylist: 'View Playlist', + noFollowings: 'No Followings', + loadMore: 'Load More', + noSignature: 'This guy is lazy, nothing left' + }, + follower: { + title: 'Follower List', + noFollowers: 'No Followers', + loadMore: 'Load More' + }, + detail: { + playlists: 'Playlists', + records: 'Listening History', + noPlaylists: 'No Playlists', + noRecords: 'No Listening History', + artist: 'Artist', + noSignature: 'This guy is lazy, nothing left', + invalidUserId: 'Invalid User ID' + }, message: { loadFailed: 'Failed to load user page', deleteSuccess: 'Successfully deleted', diff --git a/src/i18n/lang/zh-CN/user.ts b/src/i18n/lang/zh-CN/user.ts index 872a9ce..840d6f6 100644 --- a/src/i18n/lang/zh-CN/user.ts +++ b/src/i18n/lang/zh-CN/user.ts @@ -13,6 +13,27 @@ export default { title: '听歌排行', playCount: '{count}次' }, + follow: { + title: '关注列表', + viewPlaylist: '查看歌单', + noFollowings: '暂无关注', + loadMore: '加载更多', + noSignature: '这个家伙很懒,什么都没留下' + }, + follower: { + title: '粉丝列表', + noFollowers: '暂无粉丝', + loadMore: '加载更多' + }, + detail: { + playlists: '歌单', + records: '听歌排行', + noPlaylists: '暂无歌单', + noRecords: '暂无听歌记录', + artist: '歌手', + noSignature: '这个人很懒,什么都没留下', + invalidUserId: '用户ID无效' + }, message: { loadFailed: '加载用户页面失败', deleteSuccess: '删除成功', diff --git a/src/preload/index.ts b/src/preload/index.ts index 92ba3b2..be1f737 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -26,9 +26,7 @@ const api = { }, // 语言相关 onLanguageChanged: (callback: (locale: string) => void) => { - console.log('注册语言变更监听器'); ipcRenderer.on('language-changed', (_event, locale) => { - console.log('收到语言变更事件:', locale); callback(locale); }); }, diff --git a/src/renderer/api/user.ts b/src/renderer/api/user.ts index 7d9646f..2c4d125 100644 --- a/src/renderer/api/user.ts +++ b/src/renderer/api/user.ts @@ -1,3 +1,4 @@ +import type { IUserDetail, IUserFollow } from '@/type/user'; import request from '@/utils/request'; // /user/detail @@ -6,8 +7,8 @@ export function getUserDetail(uid: number) { } // /user/playlist -export function getUserPlaylist(uid: number) { - return request.get('/user/playlist', { params: { uid } }); +export function getUserPlaylist(uid: number, limit: number = 30, offset: number = 0) { + return request.get('/user/playlist', { params: { uid, limit, offset } }); } // 播放历史 @@ -15,3 +16,56 @@ export function getUserPlaylist(uid: number) { export function getUserRecord(uid: number, type: number = 0) { return request.get('/user/record', { params: { uid, type } }); } + +// 获取用户关注列表 +// /user/follows?uid=32953014 +export function getUserFollows(uid: number, limit: number = 30, offset: number = 0) { + return request.get('/user/follows', { params: { uid, limit, offset } }); +} + +// 获取用户粉丝列表 +export function getUserFollowers(uid: number, limit: number = 30, offset: number = 0) { + return request.post('/user/followeds', { uid, limit, offset }); +} + +// 获取用户账号信息 +export const getUserAccount = () => { + return request({ + url: '/user/account', + method: 'get' + }); +}; + +// 获取用户详情 +export const getUserDetailInfo = (params: { uid: string | number }) => { + return request({ + url: '/user/detail', + method: 'get', + params + }); +}; + +// 获取用户关注列表 +export const getUserFollowsInfo = (params: { + uid: string | number; + limit?: number; + offset?: number; +}) => { + return request<{ + follow: IUserFollow[]; + more: boolean; + }>({ + url: '/user/follows', + method: 'get', + params + }); +}; + +// 获取用户歌单 +export const getUserPlaylists = (params: { uid: string | number }) => { + return request({ + url: '/user/playlist', + method: 'get', + params + }); +}; diff --git a/src/renderer/layout/components/SearchBar.vue b/src/renderer/layout/components/SearchBar.vue index 60c379c..33e3375 100644 --- a/src/renderer/layout/components/SearchBar.vue +++ b/src/renderer/layout/components/SearchBar.vue @@ -1,5 +1,8 @@