fix(admin-web): 修复用户数据获取时 response.data undefined 问题
apiClient 响应拦截器已经解包了 response.data,service 和 hooks 层 不需要再次访问 .data 属性,否则会得到 undefined。 修复: - useUsers/useUserDetail/useUserStats hooks 直接返回 service 结果 - userService 返回类型改为直接数据类型而非 ApiResponse 包装 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
d38e627a0a
commit
f832a1bc74
|
|
@ -16,14 +16,12 @@ export const userKeys = {
|
|||
|
||||
/**
|
||||
* 获取用户列表
|
||||
* 注意:apiClient 响应拦截器已解包 response.data,直接返回数据
|
||||
*/
|
||||
export function useUsers(params: UserListParams = {}) {
|
||||
return useQuery({
|
||||
queryKey: userKeys.list(params),
|
||||
queryFn: async () => {
|
||||
const response = await userService.getUsers(params);
|
||||
return response.data;
|
||||
},
|
||||
queryFn: () => userService.getUsers(params),
|
||||
staleTime: 30 * 1000, // 30秒后标记为过期
|
||||
gcTime: 5 * 60 * 1000, // 5分钟后垃圾回收
|
||||
});
|
||||
|
|
@ -35,10 +33,7 @@ export function useUsers(params: UserListParams = {}) {
|
|||
export function useUserDetail(id: string) {
|
||||
return useQuery({
|
||||
queryKey: userKeys.detail(id),
|
||||
queryFn: async () => {
|
||||
const response = await userService.getUserDetail(id);
|
||||
return response.data;
|
||||
},
|
||||
queryFn: () => userService.getUserDetail(id),
|
||||
enabled: !!id, // 只有在 id 存在时才查询
|
||||
staleTime: 60 * 1000, // 1分钟后标记为过期
|
||||
gcTime: 5 * 60 * 1000,
|
||||
|
|
@ -51,10 +46,7 @@ export function useUserDetail(id: string) {
|
|||
export function useUserStats() {
|
||||
return useQuery({
|
||||
queryKey: userKeys.stats(),
|
||||
queryFn: async () => {
|
||||
const response = await userService.getUserStats();
|
||||
return response.data;
|
||||
},
|
||||
queryFn: () => userService.getUserStats(),
|
||||
staleTime: 60 * 1000, // 1分钟后标记为过期
|
||||
gcTime: 5 * 60 * 1000,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
import apiClient from '@/infrastructure/api/client';
|
||||
import { API_ENDPOINTS } from '@/infrastructure/api/endpoints';
|
||||
import type { ApiResponse } from '@/types';
|
||||
|
||||
/** 用户列表项 */
|
||||
export interface UserListItem {
|
||||
|
|
@ -73,26 +72,27 @@ export interface UserListParams {
|
|||
|
||||
/**
|
||||
* 用户管理服务
|
||||
* 注意:apiClient 响应拦截器已解包 response.data,直接返回数据
|
||||
*/
|
||||
export const userService = {
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
async getUsers(params: UserListParams = {}): Promise<ApiResponse<UserListResponse>> {
|
||||
async getUsers(params: UserListParams = {}): Promise<UserListResponse> {
|
||||
return apiClient.get(API_ENDPOINTS.USERS.LIST, { params });
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取用户详情
|
||||
*/
|
||||
async getUserDetail(id: string): Promise<ApiResponse<UserDetail>> {
|
||||
async getUserDetail(id: string): Promise<UserDetail> {
|
||||
return apiClient.get(API_ENDPOINTS.USERS.DETAIL(id));
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取用户统计
|
||||
*/
|
||||
async getUserStats(): Promise<ApiResponse<UserStats>> {
|
||||
async getUserStats(): Promise<UserStats> {
|
||||
return apiClient.get(API_ENDPOINTS.USERS.STATS);
|
||||
},
|
||||
|
||||
|
|
@ -100,11 +100,10 @@ export const userService = {
|
|||
* 导出用户数据
|
||||
*/
|
||||
async exportUsers(params: UserListParams = {}): Promise<Blob> {
|
||||
const response = await apiClient.get(API_ENDPOINTS.USERS.EXPORT, {
|
||||
return apiClient.get(API_ENDPOINTS.USERS.EXPORT, {
|
||||
params,
|
||||
responseType: 'blob',
|
||||
});
|
||||
return response.data as unknown as Blob;
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue