package com.accounting.service; import com.accounting.dto.K780Response; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @Slf4j @Component public class K780ApiClient { private static final String API_BASE_URL = "https://sapi.k780.com"; private static final String APP = "finance.gold_price"; private static final String APP_KEY = "78346"; private static final String SIGN = "1b502c535927b66d9b888a6d4701bf72"; private static final String FORMAT = "json"; private final RestTemplate restTemplate; private final ObjectMapper objectMapper; public K780ApiClient() { this.restTemplate = new RestTemplate(); this.objectMapper = new ObjectMapper(); } /** * 从K780 API获取黄金价格 * @param goldId 黄金品种ID * @return K780Response */ public K780Response fetchGoldPrice(String goldId) { try { String url = String.format("%s/?app=%s&goldid=%s&appkey=%s&sign=%s&format=%s", API_BASE_URL, APP, goldId, APP_KEY, SIGN, FORMAT); log.info("Fetching gold price from K780 API: {}", url); String response = restTemplate.getForObject(url, String.class); K780Response k780Response = objectMapper.readValue(response, K780Response.class); log.info("K780 API response: {}", k780Response); return k780Response; } catch (Exception e) { log.error("Failed to fetch gold price from K780 API", e); throw new RuntimeException("获取黄金价格失败: " + e.getMessage(), e); } } }