From f23b33bbb9eaff76cac5b69e3b793fc7910fb0fa Mon Sep 17 00:00:00 2001
From: peternameyakj <908253177@qq.com>
Date: Tue, 30 Jul 2024 11:03:37 +0800
Subject: [PATCH] 新增资金账户以及与交易账户的互转

---
 src/main/java/project/withdraw/internal/WithdrawServiceImpl.java |   73 +++++++++++++++++++++++++-----------
 1 files changed, 50 insertions(+), 23 deletions(-)

diff --git a/src/main/java/project/withdraw/internal/WithdrawServiceImpl.java b/src/main/java/project/withdraw/internal/WithdrawServiceImpl.java
index 3a92816..a8b133c 100644
--- a/src/main/java/project/withdraw/internal/WithdrawServiceImpl.java
+++ b/src/main/java/project/withdraw/internal/WithdrawServiceImpl.java
@@ -10,6 +10,7 @@
 import org.apache.commons.lang3.ObjectUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 
 
@@ -20,10 +21,13 @@
 import kernel.util.StringUtils;
 import kernel.web.ApplicationUtil;
 import project.Constants;
+import project.data.DataService;
 import project.log.MoneyLog;
 import project.log.MoneyLogService;
 import project.party.PartyService;
 import project.party.model.Party;
+import project.redis.RedisHandler;
+import project.redis.interal.RedisHandlerImpl;
 import project.syspara.Syspara;
 import project.syspara.SysparaService;
 import project.tip.TipConstants;
@@ -36,11 +40,8 @@
 import project.user.kyc.KycHighLevel;
 import project.user.kyc.KycHighLevelService;
 import project.user.kyc.KycService;
-import project.wallet.Wallet;
-import project.wallet.WalletExtend;
-import project.wallet.WalletLog;
-import project.wallet.WalletLogService;
-import project.wallet.WalletService;
+import project.wallet.*;
+import project.wallet.internal.WalletGatherServiceImpl;
 import project.wallet.rate.ExchangeRateService;
 import project.withdraw.Withdraw;
 import project.withdraw.WithdrawService;
@@ -66,7 +67,7 @@
 	protected TipService tipService;
 
 	@Override
-	public void saveApply(Withdraw withdraw, String channel, String method_id, String googleCode) {
+	public void saveApply(Withdraw withdraw, String channel, String method_id, String googleCode,WalletGatherService walletGatherService) {
 		Party party = this.partyService.cachePartyBy(withdraw.getPartyId(), false);
 		if (Constants.SECURITY_ROLE_TEST.equals(party.getRolename())) {
 			throw new BusinessException(1, "无权限");
@@ -119,16 +120,16 @@
 // 			+withdrawList.get(0).getDeviceIp()+"]不同, 请注意核对!!!");
 // 			}
 // 		}
-
+		System.out.println("打印信息");
 		withdraw.setMethod(channel);
 		if (channel.indexOf("BTC") != -1) {
-			saveApplyOtherChannel(withdraw, "btc");
+			saveApplyOtherChannel(withdraw, "btc",walletGatherService);
 			return;
 		} else if (channel.indexOf("ETH") != -1) {
-			saveApplyOtherChannel(withdraw, "eth");
+			saveApplyOtherChannel(withdraw, "eth",walletGatherService);
 			return;
 		}else  if(channel.indexOf("USDC") !=-1){
-			saveApplyOtherChannel(withdraw, "usdc");
+			saveApplyOtherChannel(withdraw, "usdc",walletGatherService);
 			return;
 		}
 		Kyc party_kyc = this.kycService.get(withdraw.getPartyId().toString());
@@ -153,8 +154,12 @@
 			throw new BusinessException(506, "Your account has been frozen");
 		}
 
-		Wallet wallet = walletService.saveWalletByPartyId(withdraw.getPartyId());
-		if (wallet.getMoney() < withdraw.getVolume()) {
+//		Wallet wallet = walletService.saveWalletByPartyId(withdraw.getPartyId());
+		System.out.println("获取walletGather前");
+		WalletGather walletGather = walletGatherService.getWalletGatherByPartyId(withdraw.getPartyId(),null);
+		System.out.println("获取walletGather后");
+		System.out.println("walletGather-usdt"+walletGather.getUsdtMoney());
+		if (walletGather.getUsdtMoney() < withdraw.getVolume()) {
 			throw new BusinessException(1, "余额不足");
 		}
 
@@ -393,10 +398,12 @@
 
 		withdraw.setQdcode(withdraw_qr);
 
-		double amount_before = wallet.getMoney();
+		double amount_before = walletGather.getUsdtMoney();
 
-		wallet.setMoney(Arith.sub(wallet.getMoney(), withdraw.getVolume()));
-		walletService.update(wallet.getPartyId().toString(), Arith.sub(0, withdraw.getVolume()));
+//		wallet.setMoney(Arith.sub(wallet.getMoney(), withdraw.getVolume()));
+//		walletService.update(wallet.getPartyId().toString(), Arith.sub(0, withdraw.getVolume()));
+		//修改资金账户
+		walletGatherService.update(walletGather.getPartyId().toString(),"usdt",withdraw.getVolume(),"sub");
 
 		withdraw.setId(ApplicationUtil.getCurrentTimeUUID());
 		insertWithdraw(withdraw);
@@ -408,7 +415,7 @@
 		moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
 		moneyLog.setAmount_before(amount_before);
 		moneyLog.setAmount(Arith.sub(0, withdraw.getVolume()));
-		moneyLog.setAmount_after(wallet.getMoney());
+		moneyLog.setAmount_after(Arith.sub(amount_before, withdraw.getVolume()));
 
 		moneyLog.setLog("提现订单[" + withdraw.getOrder_no() + "]");
 		// moneyLog.setExtra(withdraw.getOrder_no());
@@ -523,7 +530,7 @@
 		return userWithdraw;
 	}
 
-	public void saveApplyOtherChannel(Withdraw withdraw, String symbol) {
+	public void saveApplyOtherChannel(Withdraw withdraw, String symbol,WalletGatherService walletGatherService) {
 
 		Party party = this.partyService.cachePartyBy(withdraw.getPartyId(), false);
 		if (Constants.SECURITY_ROLE_TEST.equals(party.getRolename())) {
@@ -550,11 +557,29 @@
 		if (!party.getEnabled()) {
 			throw new BusinessException(506, "Your account has been frozen");
 		}
-
-		WalletExtend walletExtend = walletService.saveExtendByPara(party.getId(), symbol);
-		if (walletExtend.getAmount() < withdraw.getVolume()) {
-			throw new BusinessException(1, "余额不足");
+		double amount_before = 0;
+		WalletGather walletGather = walletGatherService.getWalletGatherByPartyId(withdraw.getPartyId(),null);
+		if("btc".equals(symbol)){
+			if (walletGather.getBtcMoney() < withdraw.getVolume()) {
+				throw new BusinessException(1, "余额不足");
+			}
+			amount_before = walletGather.getBtcMoney();
+		}else if("eth".equals(symbol)){
+			if (walletGather.getEthMoney() < withdraw.getVolume()) {
+				throw new BusinessException(1, "余额不足");
+			}
+			amount_before = walletGather.getBtcMoney();
+		}else if("usdc".equals(symbol)){
+			if (walletGather.getUsdcMoney() < withdraw.getVolume()) {
+				throw new BusinessException(1, "余额不足");
+			}
+			amount_before = walletGather.getBtcMoney();
 		}
+
+//		WalletExtend walletExtend = walletService.saveExtendByPara(party.getId(), symbol);
+//		if (walletExtend.getAmount() < withdraw.getVolume()) {
+//			throw new BusinessException(1, "余额不足");
+//		}
 
 		String withdraw_limit = sysparaService.find("withdraw_limit_" + symbol).getValue();
 		if (withdraw.getVolume() < Double.valueOf(withdraw_limit)) {
@@ -706,9 +731,11 @@
 
 		withdraw.setQdcode(withdraw_qr);
 
-		double amount_before = walletExtend.getAmount();
 
-		walletService.updateExtend(walletExtend.getPartyId().toString(), symbol, Arith.sub(0, withdraw.getVolume()));
+//		walletService.updateExtend(walletExtend.getPartyId().toString(), symbol, Arith.sub(0, withdraw.getVolume()));
+		//修改资金账户
+		walletGatherService.update(walletGather.getPartyId().toString(),symbol,withdraw.getVolume(),"sub");
+
 		withdraw.setId(ApplicationUtil.getCurrentTimeUUID());
 		insertWithdraw(withdraw);
 

--
Gitblit v1.9.3