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 = {}) {
|
export function useUsers(params: UserListParams = {}) {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: userKeys.list(params),
|
queryKey: userKeys.list(params),
|
||||||
queryFn: async () => {
|
queryFn: () => userService.getUsers(params),
|
||||||
const response = await userService.getUsers(params);
|
|
||||||
return response.data;
|
|
||||||
},
|
|
||||||
staleTime: 30 * 1000, // 30秒后标记为过期
|
staleTime: 30 * 1000, // 30秒后标记为过期
|
||||||
gcTime: 5 * 60 * 1000, // 5分钟后垃圾回收
|
gcTime: 5 * 60 * 1000, // 5分钟后垃圾回收
|
||||||
});
|
});
|
||||||
|
|
@ -35,10 +33,7 @@ export function useUsers(params: UserListParams = {}) {
|
||||||
export function useUserDetail(id: string) {
|
export function useUserDetail(id: string) {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: userKeys.detail(id),
|
queryKey: userKeys.detail(id),
|
||||||
queryFn: async () => {
|
queryFn: () => userService.getUserDetail(id),
|
||||||
const response = await userService.getUserDetail(id);
|
|
||||||
return response.data;
|
|
||||||
},
|
|
||||||
enabled: !!id, // 只有在 id 存在时才查询
|
enabled: !!id, // 只有在 id 存在时才查询
|
||||||
staleTime: 60 * 1000, // 1分钟后标记为过期
|
staleTime: 60 * 1000, // 1分钟后标记为过期
|
||||||
gcTime: 5 * 60 * 1000,
|
gcTime: 5 * 60 * 1000,
|
||||||
|
|
@ -51,10 +46,7 @@ export function useUserDetail(id: string) {
|
||||||
export function useUserStats() {
|
export function useUserStats() {
|
||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: userKeys.stats(),
|
queryKey: userKeys.stats(),
|
||||||
queryFn: async () => {
|
queryFn: () => userService.getUserStats(),
|
||||||
const response = await userService.getUserStats();
|
|
||||||
return response.data;
|
|
||||||
},
|
|
||||||
staleTime: 60 * 1000, // 1分钟后标记为过期
|
staleTime: 60 * 1000, // 1分钟后标记为过期
|
||||||
gcTime: 5 * 60 * 1000,
|
gcTime: 5 * 60 * 1000,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
import apiClient from '@/infrastructure/api/client';
|
import apiClient from '@/infrastructure/api/client';
|
||||||
import { API_ENDPOINTS } from '@/infrastructure/api/endpoints';
|
import { API_ENDPOINTS } from '@/infrastructure/api/endpoints';
|
||||||
import type { ApiResponse } from '@/types';
|
|
||||||
|
|
||||||
/** 用户列表项 */
|
/** 用户列表项 */
|
||||||
export interface UserListItem {
|
export interface UserListItem {
|
||||||
|
|
@ -73,26 +72,27 @@ export interface UserListParams {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户管理服务
|
* 用户管理服务
|
||||||
|
* 注意:apiClient 响应拦截器已解包 response.data,直接返回数据
|
||||||
*/
|
*/
|
||||||
export const userService = {
|
export const userService = {
|
||||||
/**
|
/**
|
||||||
* 获取用户列表
|
* 获取用户列表
|
||||||
*/
|
*/
|
||||||
async getUsers(params: UserListParams = {}): Promise<ApiResponse<UserListResponse>> {
|
async getUsers(params: UserListParams = {}): Promise<UserListResponse> {
|
||||||
return apiClient.get(API_ENDPOINTS.USERS.LIST, { params });
|
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));
|
return apiClient.get(API_ENDPOINTS.USERS.DETAIL(id));
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户统计
|
* 获取用户统计
|
||||||
*/
|
*/
|
||||||
async getUserStats(): Promise<ApiResponse<UserStats>> {
|
async getUserStats(): Promise<UserStats> {
|
||||||
return apiClient.get(API_ENDPOINTS.USERS.STATS);
|
return apiClient.get(API_ENDPOINTS.USERS.STATS);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -100,11 +100,10 @@ export const userService = {
|
||||||
* 导出用户数据
|
* 导出用户数据
|
||||||
*/
|
*/
|
||||||
async exportUsers(params: UserListParams = {}): Promise<Blob> {
|
async exportUsers(params: UserListParams = {}): Promise<Blob> {
|
||||||
const response = await apiClient.get(API_ENDPOINTS.USERS.EXPORT, {
|
return apiClient.get(API_ENDPOINTS.USERS.EXPORT, {
|
||||||
params,
|
params,
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
});
|
});
|
||||||
return response.data as unknown as Blob;
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue