72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
/**
|
|
* 系统账户划转管理 Hooks
|
|
* [2026-01-06] 新增
|
|
*/
|
|
|
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
import { systemWithdrawalService } from '@/services/systemWithdrawalService';
|
|
import type {
|
|
SystemWithdrawalQueryParams,
|
|
SystemWithdrawalRequest,
|
|
} from '@/types/system-withdrawal.types';
|
|
|
|
/** Query Keys */
|
|
export const systemWithdrawalKeys = {
|
|
all: ['systemWithdrawals'] as const,
|
|
accounts: () => [...systemWithdrawalKeys.all, 'accounts'] as const,
|
|
orders: (params: SystemWithdrawalQueryParams) => [...systemWithdrawalKeys.all, 'orders', params] as const,
|
|
accountName: (accountSequence: string) => [...systemWithdrawalKeys.all, 'accountName', accountSequence] as const,
|
|
};
|
|
|
|
/**
|
|
* 获取可划转的系统账户列表
|
|
*/
|
|
export function useSystemWithdrawalAccounts() {
|
|
return useQuery({
|
|
queryKey: systemWithdrawalKeys.accounts(),
|
|
queryFn: () => systemWithdrawalService.getAccounts(),
|
|
staleTime: 5 * 60 * 1000, // 5分钟
|
|
gcTime: 10 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取划转订单列表
|
|
*/
|
|
export function useSystemWithdrawalOrders(params: SystemWithdrawalQueryParams = {}) {
|
|
return useQuery({
|
|
queryKey: systemWithdrawalKeys.orders(params),
|
|
queryFn: () => systemWithdrawalService.getOrders(params),
|
|
staleTime: 30 * 1000, // 30秒
|
|
gcTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取账户名称
|
|
*/
|
|
export function useAccountName(accountSequence: string) {
|
|
return useQuery({
|
|
queryKey: systemWithdrawalKeys.accountName(accountSequence),
|
|
queryFn: () => systemWithdrawalService.getAccountName(accountSequence),
|
|
enabled: !!accountSequence && accountSequence.length > 0,
|
|
staleTime: 10 * 60 * 1000, // 10分钟
|
|
gcTime: 30 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 发起划转请求
|
|
*/
|
|
export function useRequestSystemWithdrawal() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (data: SystemWithdrawalRequest) => systemWithdrawalService.request(data),
|
|
onSuccess: () => {
|
|
// 成功后刷新账户列表和订单列表
|
|
queryClient.invalidateQueries({ queryKey: systemWithdrawalKeys.all });
|
|
},
|
|
});
|
|
}
|