122 lines
3.2 KiB
TypeScript
122 lines
3.2 KiB
TypeScript
/**
|
|
* 授权管理 Hooks
|
|
* 使用 React Query 进行数据获取和缓存管理
|
|
*/
|
|
|
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
import { authorizationService } from '@/services/authorizationService';
|
|
import type {
|
|
QueryAuthorizationsParams,
|
|
RevokeAuthorizationRequest,
|
|
GrantCommunityRequest,
|
|
GrantProvinceCompanyRequest,
|
|
GrantCityCompanyRequest,
|
|
GrantAuthProvinceCompanyRequest,
|
|
GrantAuthCityCompanyRequest,
|
|
} from '@/types/authorization.types';
|
|
|
|
/** Query Keys */
|
|
export const authorizationKeys = {
|
|
all: ['authorizations'] as const,
|
|
list: (params: QueryAuthorizationsParams) =>
|
|
[...authorizationKeys.all, 'list', params] as const,
|
|
};
|
|
|
|
/**
|
|
* 获取授权列表
|
|
*/
|
|
export function useAuthorizations(params: QueryAuthorizationsParams = {}) {
|
|
return useQuery({
|
|
queryKey: authorizationKeys.list(params),
|
|
queryFn: () => authorizationService.getList(params),
|
|
staleTime: 30 * 1000, // 30秒后标记为过期
|
|
gcTime: 5 * 60 * 1000, // 5分钟后垃圾回收
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 撤销授权
|
|
*/
|
|
export function useRevokeAuthorization() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: ({ authorizationId, data }: { authorizationId: string; data: RevokeAuthorizationRequest }) =>
|
|
authorizationService.revoke(authorizationId, data),
|
|
onSuccess: () => {
|
|
// 撤销成功后刷新所有相关列表
|
|
queryClient.invalidateQueries({ queryKey: authorizationKeys.all });
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 授权社区
|
|
*/
|
|
export function useGrantCommunity() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (data: GrantCommunityRequest) => authorizationService.grantCommunity(data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: authorizationKeys.all });
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 授权正式省公司
|
|
*/
|
|
export function useGrantProvinceCompany() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (data: GrantProvinceCompanyRequest) => authorizationService.grantProvinceCompany(data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: authorizationKeys.all });
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 授权正式市公司
|
|
*/
|
|
export function useGrantCityCompany() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (data: GrantCityCompanyRequest) => authorizationService.grantCityCompany(data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: authorizationKeys.all });
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 授权省团队
|
|
*/
|
|
export function useGrantAuthProvinceCompany() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (data: GrantAuthProvinceCompanyRequest) => authorizationService.grantAuthProvinceCompany(data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: authorizationKeys.all });
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 授权市团队
|
|
*/
|
|
export function useGrantAuthCityCompany() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (data: GrantAuthCityCompanyRequest) => authorizationService.grantAuthCityCompany(data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: authorizationKeys.all });
|
|
},
|
|
});
|
|
}
|