From 030e1d50c1f643137220f1ecf1d90ce39174204a Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Sat, 30 May 2026 01:58:54 +0800
Subject: [PATCH] 1
---
trading-order-admin/src/main/java/com/yami/trading/admin/task/contract/ContractApplyOrderHandleJob.java | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/task/contract/ContractApplyOrderHandleJob.java b/trading-order-admin/src/main/java/com/yami/trading/admin/task/contract/ContractApplyOrderHandleJob.java
index c1e8a5f..ac1bb6c 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/task/contract/ContractApplyOrderHandleJob.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/task/contract/ContractApplyOrderHandleJob.java
@@ -48,6 +48,11 @@
List<ContractApplyOrder> list = this.contractApplyOrderService.findSubmitted();
for (int i = 0; i < list.size(); i++) {
ContractApplyOrder order = list.get(i);
+ ContractApplyOrder latest = this.contractApplyOrderService.findByOrderNo(order.getOrderNo());
+ if (latest == null || !ContractApplyOrder.STATE_SUBMITTED.equals(latest.getState())) {
+ continue;
+ }
+ order = latest;
List<Realtime> realtime_list = this.dataService.realtime(order.getSymbol());
Realtime realtime = null;
if (realtime_list.size() > 0) {
@@ -107,6 +112,10 @@
public void handle(ContractApplyOrder applyOrder, Realtime realtime) {
boolean lock = false;
try {
+ applyOrder = this.contractApplyOrderService.findByOrderNo(applyOrder.getOrderNo());
+ if (applyOrder == null || !ContractApplyOrder.STATE_SUBMITTED.equals(applyOrder.getState())) {
+ return;
+ }
if (!ContractLock.add(applyOrder.getOrderNo())) {
return;
}
@@ -152,6 +161,11 @@
}
+ } catch (YamiShopBindException e) {
+ log.error("委托单处理失败 orderNo={}, msg={}", applyOrder.getOrderNo(), e.getMessage());
+ if (isInsufficientFunds(e)) {
+ this.contractApplyOrderService.saveCancel(applyOrder.getPartyId(), applyOrder.getOrderNo());
+ }
} catch (Exception e) {
log.error("error:", e);
} finally {
@@ -163,6 +177,15 @@
}
}
+
+ private boolean isInsufficientFunds(YamiShopBindException e) {
+ if (e.getMessage() == null) {
+ return false;
+ }
+ String msg = e.getMessage().toLowerCase();
+ return msg.contains("not sufficient funds") || msg.contains("余额不足");
+ }
+
public void start(){
new Thread(this, "ContractApplyOrderHandleJob").start();
if (log.isInfoEnabled())
--
Gitblit v1.9.3