From 9801b75a1efa7bd1ff3bb8144375ea2535362d37 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 10 Dec 2025 16:22:57 +0800
Subject: [PATCH] feat(okxWs): 添加持仓WebSocket更新间隔配置

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java |   35 ++++++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
index 6ac52a9..0392d0d 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
@@ -71,6 +71,9 @@
      * @param redisUtils Redis 工具类实例,用于存储账户相关信息
      */
     public static void handleEvent(JSONObject response, RedisUtils redisUtils) {
+
+
+        log.info("开始执行AccountWs......");
         try {
             JSONArray dataArray = response.getJSONArray(DATA_KEY);
             if (dataArray == null || dataArray.isEmpty()) {
@@ -83,6 +86,7 @@
                     JSONObject accountData = dataArray.getJSONObject(i);
                     JSONArray detailsArray = accountData.getJSONArray(DETAILS_KEY);
                     if (detailsArray == null || detailsArray.isEmpty()) {
+                        log.warn("账户频道{}数据为空",CoinEnums.USDT.getCode());
                         continue;
                     }
 
@@ -95,7 +99,7 @@
                         String eq = detail.getString(EQ_KEY);
 
                         if (StrUtil.isBlank(ccy) || StrUtil.isBlank(availBalStr) || StrUtil.isBlank(cashBalStr)) {
-                            log.warn("账户详情缺失必要字段,跳过处理");
+                            log.warn("账户频道缺失必要字段,跳过处理");
                             continue;
                         }
 
@@ -103,23 +107,32 @@
                         BigDecimal cashBal = parseBigDecimalSafe(cashBalStr);
 
                         if (availBal == null || cashBal == null || cashBal.compareTo(BigDecimal.ZERO) == 0) {
-                            log.warn("无效的账户余额数据,跳过处理");
+                            log.warn("账户频道无效的账户余额数据,跳过处理");
                             continue;
                         }
 
                         // 可用余额 / 现金余额 比例判断是否允许开仓
                         BigDecimal divide = availBal.divide(cashBal, 4, RoundingMode.DOWN);
 
-                        String state;
-                        if (divide.compareTo(KANG_CANG_THRESHOLD) > 0) {
-                            log.info(OrderParamEnums.STATE_1.getName());
-                            state = OrderParamEnums.STATE_1.getValue();
-                        } else if (divide.compareTo(ZHI_SUN_THRESHOLD) > 0) {
-                            log.warn(OrderParamEnums.STATE_2.getName());
-                            state = OrderParamEnums.STATE_2.getValue();
-                        } else {
-                            log.error(OrderParamEnums.STATE_3.getName());
+                        String state = (String) redisUtils.get(InstrumentsWs.INSTRUMENTSWS_CHANNEL + ":" + CoinEnums.HE_YUE.getCode() + ":state");
+                        String out = (String) redisUtils.get(InstrumentsWs.INSTRUMENTSWS_CHANNEL + ":" + CoinEnums.HE_YUE.getCode() + ":out");
+                        if (OrderParamEnums.STATE_4.getValue().equals(state)){
+                            log.info(OrderParamEnums.STATE_4.getName());
+                            state = OrderParamEnums.STATE_4.getValue();
+                        }else if(OrderParamEnums.STATE_3.getValue().equals(state) && OrderParamEnums.OUT_YES.getValue().equals(out)){
+                            log.info(OrderParamEnums.STATE_3.getName());
                             state = OrderParamEnums.STATE_3.getValue();
+                        }else{
+                            if (divide.compareTo(KANG_CANG_THRESHOLD) > 0) {
+                                log.info(OrderParamEnums.STATE_1.getName());
+                                state = OrderParamEnums.STATE_1.getValue();
+                            } else if (divide.compareTo(ZHI_SUN_THRESHOLD) > 0) {
+                                log.warn(OrderParamEnums.STATE_2.getName());
+                                state = OrderParamEnums.STATE_2.getValue();
+                            } else {
+                                log.error(OrderParamEnums.STATE_0.getName());
+                                state = OrderParamEnums.STATE_0.getValue();
+                            }
                         }
 
                         // 根据可用余额计算下单总保证金与每次下单金额

--
Gitblit v1.9.1