100 lines
2.9 KiB
TypeScript
100 lines
2.9 KiB
TypeScript
/**
|
|
* 用户详情页面 Hooks
|
|
*/
|
|
|
|
import { useQuery } from '@tanstack/react-query';
|
|
import { userDetailService } from '@/services/userDetailService';
|
|
import type {
|
|
LedgerQueryParams,
|
|
WalletLedgerQueryParams,
|
|
} from '@/types/userDetail.types';
|
|
|
|
// Query Keys
|
|
export const userDetailKeys = {
|
|
all: ['userDetail'] as const,
|
|
fullDetail: (accountSequence: string) => [...userDetailKeys.all, 'fullDetail', accountSequence] as const,
|
|
referralTree: (accountSequence: string, direction: string, depth: number) =>
|
|
[...userDetailKeys.all, 'referralTree', accountSequence, direction, depth] as const,
|
|
plantingLedger: (accountSequence: string, params: LedgerQueryParams) =>
|
|
[...userDetailKeys.all, 'plantingLedger', accountSequence, params] as const,
|
|
walletLedger: (accountSequence: string, params: WalletLedgerQueryParams) =>
|
|
[...userDetailKeys.all, 'walletLedger', accountSequence, params] as const,
|
|
authorizationDetail: (accountSequence: string) =>
|
|
[...userDetailKeys.all, 'authorizationDetail', accountSequence] as const,
|
|
};
|
|
|
|
/**
|
|
* 获取用户完整信息
|
|
*/
|
|
export function useUserFullDetail(accountSequence: string) {
|
|
return useQuery({
|
|
queryKey: userDetailKeys.fullDetail(accountSequence),
|
|
queryFn: () => userDetailService.getFullDetail(accountSequence),
|
|
enabled: !!accountSequence,
|
|
staleTime: 60 * 1000, // 1分钟
|
|
gcTime: 5 * 60 * 1000, // 5分钟
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取推荐关系树
|
|
*/
|
|
export function useReferralTree(
|
|
accountSequence: string,
|
|
direction: 'up' | 'down' | 'both' = 'both',
|
|
depth: number = 1
|
|
) {
|
|
return useQuery({
|
|
queryKey: userDetailKeys.referralTree(accountSequence, direction, depth),
|
|
queryFn: () => userDetailService.getReferralTree(accountSequence, direction, depth),
|
|
enabled: !!accountSequence,
|
|
staleTime: 60 * 1000,
|
|
gcTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取认种分类账
|
|
*/
|
|
export function usePlantingLedger(
|
|
accountSequence: string,
|
|
params: LedgerQueryParams = {}
|
|
) {
|
|
return useQuery({
|
|
queryKey: userDetailKeys.plantingLedger(accountSequence, params),
|
|
queryFn: () => userDetailService.getPlantingLedger(accountSequence, params),
|
|
enabled: !!accountSequence,
|
|
staleTime: 30 * 1000,
|
|
gcTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取钱包分类账
|
|
*/
|
|
export function useWalletLedger(
|
|
accountSequence: string,
|
|
params: WalletLedgerQueryParams = {}
|
|
) {
|
|
return useQuery({
|
|
queryKey: userDetailKeys.walletLedger(accountSequence, params),
|
|
queryFn: () => userDetailService.getWalletLedger(accountSequence, params),
|
|
enabled: !!accountSequence,
|
|
staleTime: 30 * 1000,
|
|
gcTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取授权信息
|
|
*/
|
|
export function useAuthorizationDetail(accountSequence: string) {
|
|
return useQuery({
|
|
queryKey: userDetailKeys.authorizationDetail(accountSequence),
|
|
queryFn: () => userDetailService.getAuthorizationDetail(accountSequence),
|
|
enabled: !!accountSequence,
|
|
staleTime: 60 * 1000,
|
|
gcTime: 5 * 60 * 1000,
|
|
});
|
|
}
|