This commit is contained in:
sion
2026-04-06 16:34:02 +08:00
parent 71c8689989
commit 2e34072f45
20 changed files with 2278 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
import { useAxios } from '../../composables/use-axios'
// ==================== Types ====================
export interface KlineConfig {
coinId: number
coinCode: string
coinName: string
simulationEnabled: number // 0 or 1
tradeStartTime: string // HH:mm
tradeEndTime: string // HH:mm
priceMin: number
priceMax: number
currentPrice: number
priceType: number
}
export interface KlineConfigUpdate {
coinCode: string
tradeStartTime?: string
tradeEndTime?: string
priceMin?: number
priceMax?: number
simulationEnabled?: number
}
export interface KlineCandle {
coinCode: string
interval: string
openTime: number
openPrice: number
highPrice: number
lowPrice: number
closePrice: number
volume: number
closeTime: number
}
// ==================== API Functions ====================
/** 获取所有币种K线配置 */
export async function getKlineConfigs(): Promise<KlineConfig[]> {
const { axiosInstance } = useAxios()
const { data } = await axiosInstance.get('/admin/kline/config')
const list: any[] = (data as any)?.data ?? []
return list.map(item => ({
coinId: item.id,
coinCode: item.code,
coinName: item.name,
simulationEnabled: item.simulationEnabled ?? 0,
tradeStartTime: item.tradeStartTime,
tradeEndTime: item.tradeEndTime,
priceMin: item.priceMin,
priceMax: item.priceMax,
currentPrice: item.price,
priceType: item.priceType,
}))
}
/** 保存K线配置 */
export async function saveKlineConfig(config: KlineConfigUpdate): Promise<void> {
const { axiosInstance } = useAxios()
await axiosInstance.post('/admin/kline/config', config)
}
/** 获取K线预览数据用于 echarts */
export async function getKlinePreview(coinCode: string, interval: string = '1h', limit: number = 100): Promise<KlineCandle[]> {
const { axiosInstance } = useAxios()
const { data } = await axiosInstance.get('/admin/kline/preview', { params: { coinCode, interval, limit } })
return (data as any)?.data ?? []
}