From 1004f3d16011f69894196bfd180ea539b76ba4e7 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 03 Jun 2026 15:27:26 +0800
Subject: [PATCH] 1

---
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/AddressController.java |   95 +++++++++++++++++++++++------------------------
 1 files changed, 46 insertions(+), 49 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/AddressController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/AddressController.java
index a1f645e..0b78bf3 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/AddressController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/AddressController.java
@@ -1,35 +1,26 @@
 package com.yami.trading.admin.controller;
 
-import com.yami.trading.admin.model.LoginModel;
 import com.yami.trading.admin.model.UpdateAddressModel;
 import com.yami.trading.bean.model.ChannelBlockchain;
 import com.yami.trading.common.constants.RedisKeys;
 import com.yami.trading.common.domain.Result;
 import com.yami.trading.common.exception.YamiShopBindException;
-import com.yami.trading.common.util.GoogleAuthenticator;
-import com.yami.trading.security.common.bo.UserInfoInTokenBO;
 import com.yami.trading.security.common.enums.CryptoCurrencyEnum;
-import com.yami.trading.security.common.enums.SysTypeEnum;
-import com.yami.trading.security.common.util.LocalKeyStorageAESUtil;
-import com.yami.trading.security.common.vo.TokenInfoVO;
-import com.yami.trading.sys.model.SysUser;
+import com.yami.trading.service.ChannelBlockchainService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 
 /**
- * @program: trading-order-master
- * @description: 充值地址
- * @create: 2025-08-07 14:44
- **/
+ * 管理后台 - 财务 - 充值地址(ChannelBlockchain 表)
+ */
 @Slf4j
 @RestController
 @RequestMapping("address")
@@ -39,61 +30,62 @@
     @Autowired
     RedisTemplate redisTemplate;
 
-    /**
-     * 地址列表
-     * @return
-     */
+    @Autowired
+    private ChannelBlockchainService channelBlockchainService;
+
+    @ApiOperation("充值地址列表")
     @PostMapping("/list")
-    public Result<?> list() {
-        List<CryptoCurrencyEnum> currencyEnums = CryptoCurrencyEnum.getAll();
-        List<ChannelBlockchain> data = new ArrayList<>();
-        currencyEnums.forEach(f->{
-            try {
-                String address = LocalKeyStorageAESUtil.loadAndDecrypt(f.getName());
-                ChannelBlockchain blockchain = new ChannelBlockchain();
-                blockchain.setBlockchain_name(f.getChain());
-                blockchain.setAddress(address);
-                blockchain.setCoin(f.getCoin());
-                blockchain.setAuto(false);
-                blockchain.setImg(null);
-                data.add(blockchain);
-            } catch (Exception e) {
-                e.getMessage();
-            }
-        });
-        return Result.succeed(data);
+    public Result<List<ChannelBlockchain>> list() {
+        List<ChannelBlockchain> list = channelBlockchainService.list();
+        list.forEach(this::fillBlockchainNameAlias);
+        return Result.succeed(list);
     }
 
+    @ApiOperation("修改充值地址")
     @PostMapping("/update")
-    public Result<?> list(@RequestBody UpdateAddressModel model) {
-        String name = model.getCoin().toLowerCase()+"_"+model.getChain().toLowerCase();
-        try {
-            if(model.getCoin().equals("eth") || model.getCoin().equals("btc")){
-                name = model.getCoin();
+    public Result<ChannelBlockchain> update(@RequestBody UpdateAddressModel model) {
+        if (StringUtils.isNotBlank(model.getUuid())) {
+            ChannelBlockchain existing = channelBlockchainService.getById(model.getUuid());
+            if (existing == null) {
+                throw new YamiShopBindException("充值地址记录不存在");
             }
-            return LocalKeyStorageAESUtil.encryptAndStore(model.getPassword(),model.getAddress(),name);
-        }catch (Exception e){
-            e.getMessage();
+            if (StringUtils.isBlank(model.getAddress())) {
+                throw new YamiShopBindException("充值地址不能为空");
+            }
+            existing.setAddress(model.getAddress().trim());
+            if (StringUtils.isNotBlank(model.getCoin())) {
+                existing.setCoin(model.getCoin().trim().toLowerCase());
+            }
+            if (StringUtils.isNotBlank(model.getChain())) {
+                existing.setBlockchainName(model.getChain().trim());
+            }
+            channelBlockchainService.updateById(existing);
+            fillBlockchainNameAlias(existing);
+            return Result.succeed(existing);
         }
-        return Result.succeed();
+        ChannelBlockchain saved = channelBlockchainService.saveOrUpdateByCoinAndChain(
+                model.getCoin(), model.getChain(), model.getAddress());
+        fillBlockchainNameAlias(saved);
+        return Result.succeed(saved);
     }
 
     /**
-     * u盾地址列表
-     * @return
+     * u盾地址列表(按用户维度,仍走 Redis)
      */
     @GetMapping("/getUDList")
-    public Result<?> getUDList(String partyId) {
+    public Result<List<ChannelBlockchain>> getUDList(String partyId) {
         if (partyId == null || partyId.isEmpty()) {
             return Result.failed("请选择用户");
         }
         List<CryptoCurrencyEnum> currencyEnums = CryptoCurrencyEnum.getAll();
         List<ChannelBlockchain> data = new ArrayList<>();
-        currencyEnums.forEach(currencyEnum->{
+        currencyEnums.forEach(currencyEnum -> {
             try {
-                String address = (String)redisTemplate.opsForValue().get(RedisKeys.BLOCKCHAIN_ADDRESS + partyId + currencyEnum.getName());
+                String address = (String) redisTemplate.opsForValue()
+                        .get(RedisKeys.BLOCKCHAIN_ADDRESS + partyId + currencyEnum.getName());
                 ChannelBlockchain blockchain = new ChannelBlockchain();
                 blockchain.setBlockchain_name(currencyEnum.getChain());
+                blockchain.setBlockchainName(currencyEnum.getChain());
                 blockchain.setAddress(address);
                 blockchain.setCoin(currencyEnum.getCoin());
                 blockchain.setAuto(false);
@@ -106,4 +98,9 @@
         return Result.succeed(data);
     }
 
+    private void fillBlockchainNameAlias(ChannelBlockchain item) {
+        if (item != null && StringUtils.isNotBlank(item.getBlockchainName())) {
+            item.setBlockchain_name(item.getBlockchainName());
+        }
+    }
 }

--
Gitblit v1.9.3