新版仿ok交易所-后端
zyy
2025-09-10 bd8391d8f7b74077a2404014a052152780b116e4
新币数据调整
10 files modified
69 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/task/InitHandle.java 10 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/task/KlineLoadCache.java 10 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java 2 ●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java 2 ●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java 24 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java 3 ●●●●● patch | view | raw | blame | history
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/DataDBServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java 2 ●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java 6 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/task/InitHandle.java
@@ -121,7 +121,10 @@
        for (Item item : items) {
            Realtime realtime = dataDBService.get(item.getSymbol());
            if (realtime != null) {
                DataCache.putRealtime(item.getSymbol(), realtime);
                //停牌时不更新
                //if (!itemService.isSuspended(item.getSymbol())) {
                    DataCache.putRealtime(item.getSymbol(), realtime);
                //}
            }
        }
@@ -216,7 +219,10 @@
        for (Item item : items) {
            Realtime realtime = dataDBService.get(item.getSymbol());
            if (realtime != null) {
                DataCache.putRealtime(item.getSymbol(), realtime);
                //停牌时不更新
                //if (!itemService.isSuspended(item.getSymbol())) {
                    DataCache.putRealtime(item.getSymbol(), realtime);
                //}
            }
        }
trading-order-admin/src/main/java/com/yami/trading/admin/task/KlineLoadCache.java
@@ -49,7 +49,10 @@
            String symbol = item.getSymbol();
            Realtime realtime = klineService.findLatestRealtime(symbol);
            if (null != realtime) {
                DataCache.putLatestRealTime(symbol, realtime);
                //停牌时不更新
                if (!itemService.isSuspended(symbol)) {
                    DataCache.putLatestRealTime(symbol, realtime);
                }
            }
        }
        
@@ -62,7 +65,10 @@
            }
            DataCache.latestRealTimeMap_60s.put(symbol, list);
            if (CollectionUtil.isNotEmpty(list)) {
                DataCache.putLatestRealTime(symbol, list.get(0));
                //停牌时不更新
                if (!itemService.isSuspended(symbol)) {
                    DataCache.putLatestRealTime(symbol, list.get(0));
                }
            }
        }
        
trading-order-admin/src/main/java/com/yami/trading/admin/task/RealtimeWebsocketServer.java
@@ -93,7 +93,7 @@
            symbol = item.getSymbol();
            item = this.itemService.findBySymbol(symbol);
            //停牌时不更新
            if (itemService.isSuspended(item)) {
            if (itemService.isSuspended(symbol)) {
                return;
            }
            Double currentValue = AdjustmentValueCache.getCurrentValue().get(symbol).doubleValue();
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
@@ -137,7 +137,7 @@
        if (!itemService.isContractTrading(bySymbol)) {
            throw new YamiShopBindException("未开放合约交易");
        }
        if (itemService.isSuspended(bySymbol)) {
        if (itemService.isSuspended(bySymbol.getSymbol())) {
            throw new YamiShopBindException("停牌禁止交易");
        }
trading-order-admin/src/main/java/com/yami/trading/api/controller/KlineController.java
@@ -1,6 +1,8 @@
package com.yami.trading.api.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yami.trading.bean.data.domain.Kline;
import com.yami.trading.bean.ico.domain.Ico;
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.YamiShopBindException;
@@ -9,6 +11,7 @@
import com.yami.trading.huobi.data.internal.KlineService;
import com.yami.trading.service.data.DataService;
import com.yami.trading.service.etf.MarketService;
import com.yami.trading.service.ico.IcoService;
import com.yami.trading.service.item.ItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -21,6 +24,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
/**
 * K线图
@@ -40,6 +44,8 @@
    @Autowired
    @Qualifier("dataService")
    private DataService dataService;
    @Autowired
    private IcoService icoService;
    @ApiOperation(value = "行情")
    @GetMapping(HOBI + "getKline.action")
@@ -55,6 +61,24 @@
            }
            // 数据处理
            List<Kline> data = this.dataService.kline(symbol, line);
            Item item = itemService.findBySymbol(symbol);
            if (item != null) {
                if (item.getType().equals(Item.cryptos) && (item.getCurrencyType() != null && item.getCurrencyType() == 1)) {
                    /*QueryWrapper<Ico> iQuery  = new QueryWrapper<>();
                    iQuery.eq("symbol", symbol);
                    iQuery.eq("symbol_data", item.getSymbolData());
                    Ico ico = icoService.getOne(iQuery);
                    if (ico != null) {
                        long now = ico.getMarketDate().getTime();*/
                        long now = item.getCreateTimeTs() * 1000;
                        data = data.stream().filter(kline -> kline != null
                                        && kline.getTs() != null
                                        && kline.getTs() > now)
                                .collect(Collectors.toList());
                    //}
                }
            }
            if ("1day".equals(line) || "5day".equals(line) || "1mon".equals(line) || "1week".equals(line) || "quarter".equalsIgnoreCase(line)
                    || "year".equalsIgnoreCase(line)) {
                for (Kline datum : data) {
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
@@ -7,6 +7,7 @@
import com.yami.trading.bean.exchange.ExchangeApplyOrder;
import com.yami.trading.bean.exchange.dto.ExchangeSymbolDto;
import com.yami.trading.bean.exchange.dto.SumEtfDto;
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.bean.model.*;
import com.yami.trading.bean.purchasing.dto.ExchangeLock;
import com.yami.trading.bean.syspara.domain.Syspara;
@@ -402,6 +403,8 @@
            String session_token = sessionTokenService.savePut(partyId);
            data.put("session_token", session_token);
            data.put("fee", sysparaService.find("exchange_apply_order_sell_fee").getSvalue());
            Item item = itemService.findBySymbol(symbol);
            data.put("status", item.getStatus() == null || item.getStatus() == 1 ? 1 :0);
        }
        return Result.succeed(data);
    }
trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/DataDBServiceImpl.java
@@ -44,6 +44,11 @@
            log.debug("时间没有变化");
            return;
        }
        //停牌时不更新
        if (itemService.isSuspended(symbol)) {
            return;
        }
        DataCache.putLatestRealTime(symbol, realtime);
        // 最近60s内实时价格集合
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -205,7 +205,7 @@
        if (!itemService.isContractTrading(item)) {
            throw new YamiShopBindException("未开放合约交易");
        }
        if (itemService.isSuspended(item)) {
        if (itemService.isSuspended(item.getSymbol())) {
            throw new YamiShopBindException("停牌禁止交易");
        }
trading-order-service/src/main/java/com/yami/trading/service/exchange/impl/ExchangeApplyOrderServiceImpl.java
@@ -148,6 +148,11 @@
        if (item == null) {
            throw new YamiShopBindException("参数错误");
        }
        if (itemService.isSuspended(order.getSymbol())) {
            throw new YamiShopBindException("停牌禁止交易");
        }
        List<Realtime> realtimes = dataService.realtime(order.getSymbol());
        double close = 1;
        if (realtimes != null && realtimes.size() > 0) {
trading-order-service/src/main/java/com/yami/trading/service/item/ItemService.java
@@ -264,13 +264,13 @@
    /**
     * 是否停牌状态
     * @param item
     * @return
     */
    public boolean isSuspended(Item item) {
        item = getById(item.getUuid());
    public boolean isSuspended(String symbol) {
        Item item = findBySymbol(symbol);
        //虚拟币新币才判断
        if (item.getType().equals(Item.cryptos) && (item.getCurrencyType() != null && item.getCurrencyType() == 1)) {
            item = getById(item.getUuid());
            if (item.getStatus() != null && item.getStatus() == 0) {
                return true;
            }