From 3d8c9b6f4455b4efd34812c8e66073bebfacfce7 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 05 Jun 2026 11:20:23 +0800
Subject: [PATCH] 1

---
 trading-order-service/src/main/java/com/yami/trading/service/impl/ChannelBlockchainServiceImpl.java |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)

diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/ChannelBlockchainServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/ChannelBlockchainServiceImpl.java
index 60a193e..e030f7c 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/ChannelBlockchainServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/ChannelBlockchainServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.trading.bean.model.ChannelBlockchain;
 import com.yami.trading.dao.user.ChannelBlockchainMapper;
+import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.service.ChannelBlockchainService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -34,6 +35,34 @@
 
     @Override
     public List<ChannelBlockchain> findByCoin(String coin) {
-        return list(Wrappers.<ChannelBlockchain>query().lambda().eq(ChannelBlockchain::getCoin,coin));
+        return list(Wrappers.<ChannelBlockchain>query().lambda().eq(ChannelBlockchain::getCoin, coin));
+    }
+
+    @Override
+    public ChannelBlockchain saveOrUpdateByCoinAndChain(String coin, String blockchainName, String address) {
+        if (StringUtils.isBlank(coin) || StringUtils.isBlank(blockchainName)) {
+            throw new YamiShopBindException("币种和链名称不能为空");
+        }
+        if (StringUtils.isBlank(address)) {
+            throw new YamiShopBindException("充值地址不能为空");
+        }
+        String normalizedCoin = coin.trim().toLowerCase();
+        String normalizedChain = blockchainName.trim();
+        ChannelBlockchain existing = getOne(Wrappers.<ChannelBlockchain>lambdaQuery()
+                .eq(ChannelBlockchain::getCoin, normalizedCoin)
+                .eq(ChannelBlockchain::getBlockchainName, normalizedChain)
+                .last("LIMIT 1"));
+        if (existing != null) {
+            existing.setAddress(address.trim());
+            updateById(existing);
+            return existing;
+        }
+        ChannelBlockchain entity = new ChannelBlockchain();
+        entity.setCoin(normalizedCoin);
+        entity.setBlockchainName(normalizedChain);
+        entity.setAddress(address.trim());
+        entity.setAuto(false);
+        save(entity);
+        return entity;
     }
 }

--
Gitblit v1.9.3