新版仿ok交易所-后端
1
zyy
2025-09-25 0b4c87807860c0bfff0759a5cdc736c80e5f5772
1
17 files modified
95 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/ico/AdminIcoController.java 4 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/task/IcoTask.java 2 ●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java 8 ●●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineService.java 2 ●●●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java 53 ●●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/KlineInitServiceImpl.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline15MinuteJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1DayJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1MinuteJob.java 4 ●●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1MonJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1WeekJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1YearJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline30MinuteJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline4HourJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline5DayJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline5MinuteJob.java 2 ●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline60MinuteJob.java 2 ●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/ico/AdminIcoController.java
@@ -106,7 +106,7 @@
            }
            //更新ico实时价格
            if (model.getUnitAmount().compareTo(BigDecimal.ZERO) >0 &&
            /*if (model.getUnitAmount().compareTo(BigDecimal.ZERO) >0 &&
                    model.getUnitAmount().compareTo(ico.getUnitAmount()) != 0){
                String symbol = ico.getSymbol();
                RequestDataHelper.set("symbol", symbol);
@@ -119,7 +119,7 @@
                realtimeService.updateById(realtime);
                RequestDataHelper.clear();
                DataCache.putRealtime(symbol, realtime);
            }
            }*/
        }
        //新增或编辑表单保存
        icoService.saveOrUpdate(ico);
trading-order-admin/src/main/java/com/yami/trading/admin/task/IcoTask.java
@@ -174,7 +174,7 @@
    /**
     * K线数据修正
     */
    @Scheduled(cron = "0 */5 * * * ?")
    //@Scheduled(cron = "0 */5 * * * ?")
    public void klineInit() {
        List<Item> items = ApplicationContextUtils.getApplicationContext().getBean(ItemService.class).list();
        if (CollectionUtil.isNotEmpty(items)) {
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
@@ -97,11 +97,11 @@
                }
            }
            BigDecimal currentValue = AdjustmentValueCache.getCurrentValue().get(symbol);
            /*BigDecimal currentValue = AdjustmentValueCache.getCurrentValue().get(symbol);
            if (currentValue != null) {
                data.forEach(kline -> {
                    /*logger.info("==currentValue==close:{}, low:{}, high:{}, open:{}, currentValue:{}",
                            kline.getClose(), kline.getLow(), kline.getHigh(), kline.getOpen(), currentValue);*/
                    *//*logger.info("==currentValue==close:{}, low:{}, high:{}, open:{}, currentValue:{}",
                            kline.getClose(), kline.getLow(), kline.getHigh(), kline.getOpen(), currentValue);*//*
                    if (!kline.isAdjusted()){
                        if (kline.getClose().compareTo(kline.getLow()) >= 0 && kline.getClose().compareTo(kline.getHigh()) <= 0) {
                            kline.setClose(kline.getClose().add(currentValue));
@@ -112,7 +112,7 @@
                        kline.setAdjusted(true);
                    }
                });
            }
            }*/
            return Result.succeed(this.build(data, line, symbol));
        } catch (Exception e) {
            logger.error("getKline error", e);
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineService.java
@@ -6,6 +6,8 @@
import java.util.List;
public interface CryptosKlineService {
    public void init(String symbol);
    public void saveInit(String symbol);
    public void saveOne(String symbol, String line);
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java
@@ -7,6 +7,7 @@
import com.yami.trading.common.config.RequestDataHelper;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.common.util.DateUtils;
import com.yami.trading.huobi.data.AdjustmentValueCache;
import com.yami.trading.huobi.data.DataCache;
import com.yami.trading.huobi.hobi.HobiDataService;
import com.yami.trading.service.data.KlineDBService;
@@ -18,6 +19,7 @@
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
@Component
@@ -34,6 +36,19 @@
    private SysparaService sysparaService;
    @Autowired
    private NamedParameterJdbcOperations namedParameterJdbcTemplate;
    @Override
    public void init(String symbol) {
        this.bulid(symbol, Kline.PERIOD_1MIN);
        this.bulid(symbol, Kline.PERIOD_5MIN);
        this.bulid(symbol, Kline.PERIOD_15MIN);
        this.bulid(symbol, Kline.PERIOD_30MIN);
        this.bulid(symbol, Kline.PERIOD_60MIN);
        this.bulid(symbol, Kline.PERIOD_4HOUR);
        this.bulid(symbol, Kline.PERIOD_1DAY);
        this.bulid(symbol, Kline.PERIOD_1MON);
        this.bulid(symbol, Kline.PERIOD_1WEEK);
    }
    @Override
    public void saveInit(String symbol) {
@@ -55,6 +70,19 @@
    }
    public void bulid(String symbol, String line) {
        RequestDataHelper.set("symbol", symbol);
        List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, null,
                0);
        KlineTimeObject model = new KlineTimeObject();
        Collections.sort(list); // 按时间升序
        model.setKline(list);
        model.setLastTime(new Date());
        DataCache.putKline(symbol, line, model);
        RequestDataHelper.clear();
    }
    public void bulidInit(String symbol, String line) {
        RequestDataHelper.set("symbol", symbol);
        List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, null,
@@ -68,6 +96,8 @@
        RequestDataHelper.clear();
    }
    @Override
    public void saveOne(String symbol, String line) {
@@ -87,12 +117,13 @@
        String key = symbol + "_" + line;
        Kline hobiOne = DataCache.getKline_hobi().get(key);
        if (hobiOne == null || lastOne == null) {
        /*if (hobiOne == null || lastOne == null) {
            logger.error("saveOne error, hobiOne is null,symbol [" + symbol + "]");
            // 取不到远程数据,直接退出
            return;
        }
        }*/
        RequestDataHelper.set("symbol", symbol);
        Kline kline = this.bulidKline(realtime, lastOne, hobiOne, line);
        Kline kline = this.bulidKline(realtime, lastOne, null, line);
        kline.setPeriod(line);
        klineDBService.save(kline);
@@ -124,8 +155,17 @@
        if (lastOne != null) {
            kline.setOpen(lastOne.getClose());
            kline.setHigh(lastOne.getHigh());
            kline.setLow(lastOne.getLow());
            if (realtime.getClose().compareTo(kline.getHigh()) > 0) {
                kline.setHigh(realtime.getClose());
            }
            if (realtime.getClose().compareTo(kline.getOpen()) < 0) {
                kline.setLow(realtime.getClose());
            }
        }
        int interval = this.sysparaService.find("data_interval").getInteger().intValue() / 1000;
        /*int interval = this.sysparaService.find("data_interval").getInteger().intValue() / 1000;
        HighLow highLow = null;
        switch (line) {
@@ -169,9 +209,10 @@
        }
        if (highLow != null && highLow.getLow() != null) {
            kline.setLow(highLow.getLow());
        }
        }*/
        kline.setVolume(hobiOne.getVolume());
        //kline.setVolume(hobiOne.getVolume());
        return kline;
    }
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/KlineInitServiceImpl.java
@@ -50,7 +50,7 @@
                    logger.info("当前开始初始化币对单个k线图: {}", symbol);
                    Item bySymbol = itemService.findBySymbol(symbol);
                    if (Item.cryptos.equalsIgnoreCase(bySymbol.getType())) {
                        cryptosKlineService.saveInit(symbol);
                        cryptosKlineService.init(symbol);
                    } else if ("1".equalsIgnoreCase(bySymbol.getFake())) {
                        fakeKlineInitService.saveInit(symbols);
                    } else {
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline15MinuteJob.java
@@ -27,7 +27,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0/15 * ? * *")
    @Scheduled(cron = "1 0/15 * ? * *")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline15MinuteJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1DayJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0/1 * * * ?")
    @Scheduled(cron = "0 1 0 * * ?")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline1DayJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1MinuteJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 * * ? * *")
    @Scheduled(cron = "1 * * ? * *")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline1MinuteJob start ... ");
@@ -37,7 +37,7 @@
        for (int i = 0; i < item_list.size(); i++) {
            Item item = item_list.get(i);
            if (MarketOpenChecker.isMarketOpenByItemCloseType(item.getOpenCloseType()) && item.getType().equals("cryptos")) {
                log.debug("--------------- 5min kline ---------  {}", item.getSymbol());
                //log.debug("--------------- 1min kline ---------  {}", item.getSymbol());
                if (Item.cryptos.equalsIgnoreCase(item.getType())) {
                    cryptosKlineService.saveOne(item.getSymbol(), Kline.PERIOD_1MIN);
                } else {
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1MonJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0 0 1 * ?")
    @Scheduled(cron = "0 1 0 1 * ?")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline1MonJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1WeekJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0 0 ? * 1")
    @Scheduled(cron = "1 0 0 ? * 2")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline1WeekJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline1YearJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0 0 1 1 ?")
    @Scheduled(cron = "1 0 0 1 1 ?")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline1YearJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline30MinuteJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0/30 * ? * *")
    @Scheduled(cron = "1 0/30 * ? * *")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline30MinuteJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline4HourJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0 */4 ? * *")
    @Scheduled(cron = "1 0 */4 ? * *")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline4HourJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline5DayJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0 0 */5 * ?")
    @Scheduled(cron = "1 0 0 */5 * ?")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline5DayJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline5MinuteJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0/5 * ? * *")
    @Scheduled(cron = "1 0/5 * ? * *")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline5MinuteJob start ... ");
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/klinejob/Kline60MinuteJob.java
@@ -28,7 +28,7 @@
    @Autowired
    private CryptosKlineService cryptosKlineService;
    @Scheduled(cron = "0 0 * ? * *")
    @Scheduled(cron = "1 0 * ? * *")
    public void taskJob() {
        StopWatch stopWatch = new StopWatch();
        log.info("Kline60MinuteJob start ... ");