From 5e57de9b12ee136e45ce5754c7fe2e7eb12af05a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 12 Jun 2026 18:35:45 +0800
Subject: [PATCH] 1
---
trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java | 52 +++++++++++++++++++++++++---------------------------
1 files changed, 25 insertions(+), 27 deletions(-)
diff --git a/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java b/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java
index 19d72dc..61b1d63 100644
--- a/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java
+++ b/trading-order-huobi/src/main/java/com/yami/trading/huobi/task/contract/ContractApplyOrderHandleJob.java
@@ -7,13 +7,13 @@
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.common.constants.RedisKeys;
import com.yami.trading.common.constants.RedisLockKeyConstants;
-import com.yami.trading.service.MarketOpenChecker;
import com.yami.trading.common.util.RedisUtil;
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.service.contract.ContractApplyOrderService;
import com.yami.trading.service.contract.ContractLock;
import com.yami.trading.service.contract.ContractOrderService;
import com.yami.trading.service.data.DataService;
+import com.yami.trading.service.item.ItemPreMarketService;
import com.yami.trading.service.item.ItemService;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
@@ -44,6 +44,9 @@
@Autowired
private ItemService itemService;
+
+ @Autowired(required = false)
+ private ItemPreMarketService itemPreMarketService;
@Autowired
private RedissonClient redissonClient;
@@ -78,50 +81,45 @@
continue;
}
- List<Realtime> realtime_list = this.dataService.realtime(order.getSymbol());
- Realtime realtime = null;
- if (realtime_list.size() > 0) {
- realtime = realtime_list.get(0);
- //log.info("---> ContractApplyOrderHandleJob.run symbol:{} 的 realTime 值为:{}", order.getSymbol(), realtime);
- } else {
- log.warn("---> ContractApplyOrderHandleJob.run symbol:{} 的 realTime 值为空", order.getSymbol());
- continue;
- }
-
- // 休市不做撮合
Item bySymbol = itemService.findBySymbol(order.getSymbol());
if (bySymbol == null) {
continue;
}
- boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType());
+ boolean preMarketActive = itemPreMarketService != null
+ && itemPreMarketService.isPreMarketTradingActive(order.getSymbol());
+ boolean isOpen = itemService.isOpen(order.getSymbol());
if (!isOpen) {
- //log.warn("---> ContractApplyOrderHandleJob.run symbol:{} 未open", order.getSymbol());
continue;
}
+ List<Realtime> realtime_list = this.dataService.realtime(order.getSymbol());
+ Realtime realtime = null;
+ if (realtime_list.size() > 0) {
+ realtime = realtime_list.get(0);
+ } else {
+ log.warn("---> ContractApplyOrderHandleJob.run symbol:{} 的 realTime 值为空", order.getSymbol());
+ continue;
+ }
+ if (preMarketActive && itemPreMarketService != null) {
+ Double prePrice = itemPreMarketService.getActivePreMarketPrice(order.getSymbol());
+ if (prePrice != null) {
+ realtime.setClose(prePrice);
+ }
+ }
+
if ("limit".equals(order.getOrderPriceType())) {
- /**
- * 限价单
- */
- if ("buy".equals(order.getDirection())) {
- /**
- * 买涨
- */
+ if (preMarketActive) {
+ processSuccess = this.handle(order, realtime);
+ } else if ("buy".equals(order.getDirection())) {
if (BigDecimal.valueOf(realtime.getClose()).compareTo(order.getPrice()) <= 0) {
processSuccess = this.handle(order, realtime);
}
} else {
- /**
- * 买跌
- */
if (BigDecimal.valueOf(realtime.getClose()).compareTo(order.getPrice()) >= 0) {
processSuccess = this.handle(order, realtime);
}
}
} else {
- /**
- * 非限制,直接进入市场
- */
processSuccess = this.handle(order, realtime);
}
} catch (Exception e) {
--
Gitblit v1.9.3