From b426757e13490d9d88a75faf7ba94455b890f582 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sat, 04 Apr 2026 23:10:20 +0800
Subject: [PATCH] 1

---
 trading-order-service/src/main/java/com/yami/trading/service/item/ItemUserOptionalService.java                 |    6 +++++-
 trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java                            |    1 +
 trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java |   23 ++++++++++++++++++++++-
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java
index 6b4cbd3..04cf27b 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiChannelBlockchainController.java
@@ -1,5 +1,6 @@
 package com.yami.trading.api.controller.exchange;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.qrcode.QrCodeUtil;
 import cn.hutool.extra.qrcode.QrConfig;
@@ -68,6 +69,13 @@
 
     @Autowired
     RechargeBlockchainOrderService rechargeBlockchainOrderService;
+
+    private String normalizeChainKey(String value) {
+        if (value == null) {
+            return "";
+        }
+        return value.replace("-", "").replace("_", "").replace(" ", "").toUpperCase(Locale.ROOT);
+    }
 
     /**
      * 获取所有链地址
@@ -170,6 +178,9 @@
             Map<String, List<CryptoCurrencyEnum>> allGroupedByCoin = CryptoCurrencyEnum.getAllGroupedByCoin();
             List<CryptoCurrencyEnum> currencyEnums = allGroupedByCoin.get(coin);
             List<Coin> coinList = udunClient.listSupportCoin(false);
+            if (CollectionUtil.isEmpty(currencyEnums) || CollectionUtil.isEmpty(coinList)) {
+                return Result.succeed(data);
+            }
 
                 /*boolean change = false;
                 try {
@@ -213,7 +224,17 @@
                 }*/
             currencyEnums.forEach((currencyEnum) -> {
                 String coinName = currencyEnum.getName();
-                Coin c = coinList.stream().filter(x -> x.getName().equals(coinName)).findFirst().orElse(null);
+                String normalizedCoinName = normalizeChainKey(coinName);
+                Coin c = coinList.stream().filter(x ->
+                        normalizedCoinName.equals(normalizeChainKey(x.getName()))
+                                || normalizedCoinName.equals(normalizeChainKey(x.getCoinType()))
+                                || normalizedCoinName.equals(normalizeChainKey(x.getSymbol()))
+                                || (normalizeChainKey(currencyEnum.getCoin()).equals(normalizeChainKey(x.getCoinType()))
+                                && normalizeChainKey(currencyEnum.getChain()).contains("BSC")
+                                && (normalizeChainKey(x.getName()).contains("BSC")
+                                || normalizeChainKey(x.getMainCoinType()).contains("BSC")
+                                || normalizeChainKey(x.getSymbol()).contains("BSC")))
+                ).findFirst().orElse(null);
                 if (c != null) {
                     ChannelBlockchain rechargeAddressVo = new ChannelBlockchain();
                     //创建地址
diff --git a/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java b/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
index 0e67292..0383b1f 100644
--- a/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
+++ b/trading-order-common/src/main/java/com/yami/trading/common/constants/Constants.java
@@ -547,6 +547,7 @@
 		 */
 		BLOCKCHAIN_COINS_NAME.put("ERC20", "ERC20");
 		BLOCKCHAIN_COINS_NAME.put("TRC20", "TRC20");
+		BLOCKCHAIN_COINS_NAME.put("BSC", "BSC");
 		/**
 		 * usdt
 		 */
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/item/ItemUserOptionalService.java b/trading-order-service/src/main/java/com/yami/trading/service/item/ItemUserOptionalService.java
index e86b9f1..01cd609 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/item/ItemUserOptionalService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/item/ItemUserOptionalService.java
@@ -62,6 +62,10 @@
         List<ItemUserOptionalDTO> models = wrapper.toDTO(list(queryWrapper));
         for(ItemUserOptionalDTO dto: models){
             Item bySymbol = itemService.findBySymbol(dto.getSymbol());
+            if (bySymbol == null) {
+                log.warn("自选项 {} 对应的产品不存在,已跳过详情填充", dto.getSymbol());
+                continue;
+            }
             dto.setName(bySymbol.getName());
             List<Realtime> realtimes = dataService.realtime(dto.getSymbol());
             if(!CollectionUtil.isEmpty(realtimes)){
@@ -72,7 +76,7 @@
                 dto.setVolumeRatio(realtime.getVolumeRatio());
                 dto.setType(bySymbol.getType());
             }else{
-                log.error("{} 实时价格是空", bySymbol.getSymbol());
+                log.error("{} 实时价格是空", dto.getSymbol());
             }
         }
         return models;

--
Gitblit v1.9.3