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-service/src/main/java/com/yami/trading/service/exchange/job/ExchangeApplyOrderHandleJob.java |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/trading-order-service/src/main/java/com/yami/trading/service/exchange/job/ExchangeApplyOrderHandleJob.java b/trading-order-service/src/main/java/com/yami/trading/service/exchange/job/ExchangeApplyOrderHandleJob.java
index c1264c3..7a50715 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/exchange/job/ExchangeApplyOrderHandleJob.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/exchange/job/ExchangeApplyOrderHandleJob.java
@@ -6,9 +6,9 @@
 import com.yami.trading.bean.purchasing.dto.ExchangeLock;
 import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.common.util.ThreadUtils;
-import com.yami.trading.service.MarketOpenChecker;
 import com.yami.trading.service.data.DataService;
 import com.yami.trading.service.exchange.ExchangeApplyOrderService;
+import com.yami.trading.service.item.ItemPreMarketService;
 import com.yami.trading.service.item.ItemService;
 import com.yami.trading.service.syspara.SysparaService;
 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +31,8 @@
     @Autowired
     ItemService itemService;
     @Autowired
+    ItemPreMarketService itemPreMarketService;
+    @Autowired
     SysparaService sysparaService;
 
     public void start() {
@@ -51,14 +53,25 @@
                     if (bySymbol == null) {
                         throw new YamiShopBindException("当前币对不存在");
                     }
-                    boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(bySymbol.getOpenCloseType());
+                    boolean isOpen = itemService.isOpen(order.getSymbol());
                     if (!isOpen) {
                         continue;
                     }
                     Realtime realtime = this.dataService.realtime(order.getSymbol()).get(0);
+                    Double fillPrice = realtime.getClose();
+                    boolean preMarketActive = itemPreMarketService != null
+                            && itemPreMarketService.isPreMarketTradingActive(order.getSymbol());
+                    if (preMarketActive) {
+                        Double prePrice = itemPreMarketService.getActivePreMarketPrice(order.getSymbol());
+                        if (prePrice != null) {
+                            fillPrice = prePrice;
+                        }
+                    }
                     // 限价单
                     if (ExchangeApplyOrder.ORDER_PRICE_TYPE_LIMIT.equals(order.getOrderPriceType())) {
-                        if (ExchangeApplyOrder.OFFSET_OPEN.equals(order.getOffset())) {
+                        if (preMarketActive) {
+                            this.handle(order, fillPrice);
+                        } else if (ExchangeApplyOrder.OFFSET_OPEN.equals(order.getOffset())) {
                             if (realtime.getClose() <= order.getPrice()) {
                                 this.handle(order, realtime.getClose());
                             }
@@ -70,7 +83,7 @@
                     }
                     // 市价单
                     else {
-                        this.handle(order, realtime.getClose());
+                        this.handle(order, fillPrice);
                     }
                 }
             } catch (Exception e) {

--
Gitblit v1.9.3