From f31fc9f42f78de0808e7f4bdc797c5e622df09e3 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 10 Jun 2026 11:22:37 +0800
Subject: [PATCH] 1

---
 trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java |   44 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
index aff60f2..1c7d2f6 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
@@ -145,7 +145,7 @@
         log.info("=============111111===>"+walletType);
         walletExtend.setAmount(Arith.add(walletExtend.getAmount(), amount));
         if (!walletExtendService.updateById(walletExtend)) {
-            throw new YamiShopBindException("操作钱包失败!");
+            throw new YamiShopBindException("Operation of the wallet failed!");
         }
         redisTemplate.opsForValue().set(WalletRedisKeys.WALLET_EXTEND_PARTY_ID + partyId.toString() + walletType, walletExtend);
 
@@ -180,12 +180,12 @@
 
         wallet.setMoney(wallet.getMoney().add(money));
         if(wallet.getMoney().compareTo(BigDecimal.ZERO) < 0){
-            wallet.setMoney(BigDecimal.ZERO);
+            throw new YamiShopBindException("not sufficient funds");
         }
         wallet.setUpdateTime(now);
-        if (wallet.getMoney().doubleValue() <= 0) {
-            throw new YamiShopBindException("余额不足");
-        }
+        /*if (wallet.getMoney().doubleValue() < 0) {
+            throw new YamiShopBindException("Insufficient balance");
+        }*/
         updateById(wallet);
         // 账变日志
         MoneyLog moneyLog = new MoneyLog();
@@ -297,7 +297,7 @@
             close = realtimes.get(0).getClose().doubleValue();
         } else {
             close = 0;
-            //throw new YamiShopBindException("参数错误");
+            //throw new YamiShopBindException("Invalid parameters");
         }
         return close;
     }
@@ -751,11 +751,41 @@
         Wallet wallet = findByUserId(userId);
         wallet.setMoney(new BigDecimal(Arith.add(wallet.getMoney().doubleValue(), amount)));
         if (!updateById(wallet)) {
-            throw new YamiShopBindException("操作钱包失败!");
+            throw new YamiShopBindException("Operation of the wallet failed!");
         }
 
     }
 
+    @Override
+    public Wallet updateToBeCovered(Wallet wallet, BigDecimal amount, Integer type) {
+        amount = amount.abs();
+        if (type == 1) {  //入款
+            if(wallet.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+                BigDecimal availableBalance = amount.subtract(wallet.getAmountToBeCovered());
+                if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
+                    wallet.setMoney(wallet.getMoney().add(availableBalance));
+                    wallet.setAmountToBeCovered(BigDecimal.ZERO);
+                }else {
+                    wallet.setAmountToBeCovered(availableBalance.abs());
+                }
+            } else {
+                wallet.setMoney(wallet.getMoney().add(amount));
+            }
+        } else if (type == 2) { //扣款
+            BigDecimal subtract = amount.subtract(wallet.getMoney());
+            if (subtract.compareTo(BigDecimal.ZERO) > 0) { //资金不足 放入待补
+                wallet.setMoney(BigDecimal.ZERO);
+                wallet.setAmountToBeCovered(wallet.getAmountToBeCovered().add(subtract));
+            } else {
+                wallet.setMoney(subtract.negate());
+            }
+        }
+        if (!updateById(wallet)) {
+            throw new YamiShopBindException("Operation of the wallet failed!");
+        }
+        return wallet;
+    }
+
 
     @Override
     public void updateExtendWithLockAndFreeze(String partyId, String walletType, double amount, double lockAmount, double freezeAmount) {

--
Gitblit v1.9.3