59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
import type { ApiClient } from '../types';
|
|
import type {
|
|
LoginRequest,
|
|
LoginResponse,
|
|
RegisterRequest,
|
|
RegisterResponse,
|
|
UserProfileUpdateRequest,
|
|
UserProfileUpdateResponse,
|
|
UserFollowRequest,
|
|
UserFollowResponse,
|
|
GetHotAuthorsRequest,
|
|
GetHotAuthorsResponse,
|
|
GetAuthorRankingRequest,
|
|
GetAuthorRankingResponse
|
|
} from '@/types/user';
|
|
|
|
// 用户API服务工厂函数
|
|
export const userApi = (client: ApiClient) => ({
|
|
// 用户登录
|
|
login: (data: LoginRequest): Promise<LoginResponse> => {
|
|
return client.post('/auth/login', data);
|
|
},
|
|
|
|
// 用户注册
|
|
register: (data: RegisterRequest): Promise<RegisterResponse> => {
|
|
return client.post('/auth/register', data);
|
|
},
|
|
|
|
// 获取用户档案
|
|
getProfile: (): Promise<UserProfileUpdateResponse> => {
|
|
return client.get('/user/profile');
|
|
},
|
|
|
|
// 更新用户档案
|
|
updateProfile: (data: UserProfileUpdateRequest): Promise<UserProfileUpdateResponse> => {
|
|
return client.put('/user/profile', data);
|
|
},
|
|
|
|
// 关注用户
|
|
followUser: ({ userId }: UserFollowRequest): Promise<UserFollowResponse> => {
|
|
return client.put(`/user/follow/${userId}`);
|
|
},
|
|
|
|
// 取消关注用户
|
|
unfollowUser: ({ userId }: UserFollowRequest): Promise<UserFollowResponse> => {
|
|
return client.delete(`/user/follow/${userId}`);
|
|
},
|
|
|
|
// 获取热门作者
|
|
getHotAuthors: (params: GetHotAuthorsRequest = {}): Promise<GetHotAuthorsResponse> => {
|
|
return client.get('/user/hot', { params });
|
|
},
|
|
|
|
// 获取作者榜单
|
|
getAuthorRanking: (params: GetAuthorRankingRequest = {}): Promise<GetAuthorRankingResponse> => {
|
|
return client.get('/user/ranking', { params });
|
|
}
|
|
});
|