package com.yami.trading.huobi.task; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.yami.trading.bean.rate.domain.ExchangeRate; import com.yami.trading.bean.syspara.domain.Syspara; import com.yami.trading.huobi.hobi.constant.TraderMadeOptions; import com.yami.trading.huobi.hobi.http.HttpHelper; import com.yami.trading.huobi.hobi.http.HttpMethodType; import com.yami.trading.service.rate.ExchangeRateService; import com.yami.trading.service.syspara.SysparaService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.RoundingMode; import java.util.HashMap; import java.util.List; import java.util.Objects; @Component @Slf4j public class ExchangeRateTask { @Autowired private ExchangeRateService exchangeRateService; @Autowired private SysparaService sysparaService; @Value("${exchange.rate}") private String exchangeRateUrl; /** * 每小时执行一次,现在的apikey,一个月只能调用1000次 */ @Scheduled(cron = "0 0 */6 * * ?") public void getExchangeRate() { Syspara syspara = sysparaService.find("auto_exchange_rate"); //配置了汇率同步才同步数据,否则不同步数据 if (Objects.nonNull(syspara) && syspara.getBoolean()) { List rates = exchangeRateService.list(); if (CollectionUtil.isNotEmpty(rates)) { try { String json = HttpHelper.getJSONFromHttpNew(exchangeRateUrl, new HashMap<>(), HttpMethodType.GET); JSONObject resultJson = JSON.parseObject(json); JSONObject dataArray = resultJson.getJSONObject("rates"); for (ExchangeRate rate : rates) { if (Objects.nonNull(dataArray) && Objects.nonNull(dataArray.getBigDecimal(rate.getCurrency()))) { rate.setRata(dataArray.getBigDecimal(rate.getCurrency()).setScale(4, RoundingMode.DOWN)); exchangeRateService.updateById(rate); } } } catch (Exception e) { log.error("采集外汇汇率失败:{} ", e.getMessage()); } } } } public static void main(String[] args) { String json = HttpHelper.getJSONFromHttpNew(TraderMadeOptions.openExchangeRatesRates, new HashMap<>(), HttpMethodType.GET); JSONObject resultJson = JSON.parseObject(json); JSONObject dataArray = resultJson.getJSONObject("rates"); if (Objects.nonNull(dataArray) && Objects.nonNull(dataArray.getBigDecimal("AUD"))) { System.out.println("result" + dataArray.getBigDecimal("AUD").setScale(4, RoundingMode.DOWN)); } } }