|
|
@@ -1,35 +1,72 @@
|
|
|
import { useQuery } from '@tanstack/react-query';
|
|
|
-import { stockApi } from '../services/api';
|
|
|
+import { stockDataClient } from '@/client/api';
|
|
|
+import { dateNotesClient } from '@/client/api';
|
|
|
import type { StockData, DateMemo } from '../types/index';
|
|
|
import { toast } from 'react-toastify';
|
|
|
import { useEffect } from 'react';
|
|
|
+import type { InferResponseType } from 'hono/client';
|
|
|
+
|
|
|
+// 定义响应类型
|
|
|
+type StockDataListResponse = InferResponseType<typeof stockDataClient.$get, 200>;
|
|
|
+type DateNotesListResponse = InferResponseType<typeof dateNotesClient.$get, 200>;
|
|
|
|
|
|
export function useStockQueries(code?: string) {
|
|
|
// 查询股票历史数据
|
|
|
- const {
|
|
|
- data: stockData = [],
|
|
|
+ const {
|
|
|
+ data: stockDataResponse,
|
|
|
isLoading: isLoadingStock,
|
|
|
error: stockError,
|
|
|
refetch: refetchStock
|
|
|
- } = useQuery<StockData[]>({
|
|
|
+ } = useQuery<StockDataListResponse>({
|
|
|
queryKey: ['stockHistory', code],
|
|
|
- queryFn: () => stockApi.getStockHistory(code),
|
|
|
- enabled: false, // 默认不自动查询
|
|
|
+ queryFn: () => stockDataClient.$get({
|
|
|
+ query: {
|
|
|
+ filters: JSON.stringify(code ? { code } : {}),
|
|
|
+ page: 1,
|
|
|
+ pageSize: 1000
|
|
|
+ }
|
|
|
+ }).then(res => res.json()),
|
|
|
+ enabled: false,
|
|
|
retry: 0,
|
|
|
});
|
|
|
|
|
|
// 查询备忘录数据
|
|
|
- const {
|
|
|
- data: memoData = [],
|
|
|
+ const {
|
|
|
+ data: memoDataResponse,
|
|
|
isLoading: isLoadingMemo,
|
|
|
error: memoError,
|
|
|
refetch: refetchMemo
|
|
|
- } = useQuery<DateMemo[]>({
|
|
|
+ } = useQuery<DateNotesListResponse>({
|
|
|
queryKey: ['memoData', code],
|
|
|
- queryFn: () => stockApi.getMemoData(code),
|
|
|
- enabled: false, // 默认不自动查询
|
|
|
+ queryFn: () => dateNotesClient.$get({
|
|
|
+ query: {
|
|
|
+ filters: JSON.stringify(code ? { code } : {}),
|
|
|
+ page: 1,
|
|
|
+ pageSize: 1000
|
|
|
+ }
|
|
|
+ }).then(res => res.json()),
|
|
|
+ enabled: false,
|
|
|
});
|
|
|
|
|
|
+ // 转换数据格式
|
|
|
+ const stockData = stockDataResponse?.data?.map(item => ({
|
|
|
+ o: String(item.data.o),
|
|
|
+ c: String(item.data.c),
|
|
|
+ h: String(item.data.h),
|
|
|
+ l: String(item.data.l),
|
|
|
+ v: String(item.data.v),
|
|
|
+ d: String(item.data.d),
|
|
|
+ zd: String(item.data.zd),
|
|
|
+ pc: item.data.pc ? String(item.data.pc) : undefined,
|
|
|
+ })) as StockData[] || [];
|
|
|
+
|
|
|
+ const memoData = memoDataResponse?.data?.map(item => ({
|
|
|
+ _id: item.id,
|
|
|
+ 代码: item.code,
|
|
|
+ 日期: item.noteDate,
|
|
|
+ 提示: item.note,
|
|
|
+ })) as DateMemo[] || [];
|
|
|
+
|
|
|
const isLoading = isLoadingStock || isLoadingMemo;
|
|
|
const error = stockError || memoError;
|
|
|
|
|
|
@@ -60,4 +97,4 @@ export function useStockQueries(code?: string) {
|
|
|
error,
|
|
|
fetchData,
|
|
|
};
|
|
|
-}
|
|
|
+}
|