Administrator
2025-12-12 cc2a761ebb4494b7f457092cd1b282f1302d4740
fix(okx): 修复账户WebSocket数据解析空值异常

- 使用 parseStringSafe 方法安全处理 WebSocket 返回的字符串数据
- 避免因空值导致的类型转换异常
- 统一字符串解析逻辑,增强代码健壮性
- 新增 parseStringSafe 工具方法,处理空字符串情况
- 优化账户信息存储逻辑,确保数据完整性
2 files modified
23 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java 10 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/utils/WsMapBuild.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/AccountWs.java
@@ -87,19 +87,19 @@
                        String eqKey = "eq";
                        String ordFrozKey = "ordFroz";
                        String ccy = (String) detail.getString(ccyKey);
                        String ccy = WsMapBuild.parseStringSafe( detail.getString(ccyKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, ccyKey, ccy);
                        String availBal = (String) (detail.getString(availBalKey));
                        String availBal = WsMapBuild.parseStringSafe(detail.getString(availBalKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, availBalKey, availBal);
                        String cashBal = (String)(detail.getString(cashBalKey));
                        String cashBal = WsMapBuild.parseStringSafe(detail.getString(cashBalKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, cashBalKey, cashBal);
                        String eq = (String)(detail.getString(eqKey));
                        String eq = WsMapBuild.parseStringSafe(detail.getString(eqKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, eqKey, eq);
                        String ordFroz = (String)(detail.getString(ordFrozKey));
                        String ordFroz = WsMapBuild.parseStringSafe(detail.getString(ordFrozKey));
                        WsMapBuild.saveStringToMap(ACCOUNTWSMAP, ordFrozKey, ordFroz);
                        BigDecimal cashBalDecimal = WsMapBuild.parseBigDecimalSafe(cashBal);
src/main/java/com/xcong/excoin/modules/okxNewPrice/utils/WsMapBuild.java
@@ -44,4 +44,17 @@
        }
        return new BigDecimal(value).setScale(Integer.parseInt(CoinEnums.TICKSZ.getCode()), RoundingMode.DOWN);
    }
    /**
     * 安全地将字符串解析为 BigDecimal 类型
     *
     * @param value 字符串数值
     * @return 解析后的 BigDecimal 对象,若解析失败则返回 null
     */
    public static String parseStringSafe(String value) {
        if (value == null || value.isEmpty()) {
            return "0";
        }
        return value;
    }
}