From 965450925b22fb9166687caa5bb663cd846cba14 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 21 Aug 2020 14:56:14 +0800
Subject: [PATCH] 20200821

---
 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
index a3b8549..1ce5f47 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -813,4 +813,102 @@
 		return Result.ok(list);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Result contractInTransfer(BigDecimal balance, String symbolIn, String symbolOut) {
+		//获取用户ID
+        Long memberId = LoginUserUtils.getAppLoginUser().getId();
+        //转入转出不能是同一账户
+        if(symbolIn.equals(symbolOut)) {
+        	return Result.fail(MessageSourceUtils.getString("member_service_0098"));
+        }
+        if (balance.compareTo(BigDecimal.ZERO) <= 0) {
+    		return Result.fail(MessageSourceUtils.getString("member_service_0004"));
+    	}
+        
+        MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbolOut);
+    	BigDecimal availableBalance = walletContract.getAvailableBalance();
+    	// 扣币
+    	BigDecimal availableSubtract = availableBalance.subtract(balance);
+    	if (availableSubtract.compareTo(BigDecimal.ZERO) < 0) {
+    		return Result.fail(MessageSourceUtils.getString("member_service_0007"));
+    	}
+    	BigDecimal totalBalance = walletContract.getTotalBalance();
+    	BigDecimal totalSubtract = totalBalance.subtract(balance);
+    	
+    	walletContract.setAvailableBalance(availableSubtract);
+    	walletContract.setTotalBalance(totalSubtract);
+    	int updateWalletCoinById = memberWalletContractDao.updateById(walletContract);
+    	if (updateWalletCoinById < 1) {
+    		return Result.fail(MessageSourceUtils.getString("member_service_0096"));
+    	}
+    	
+    	//更新合约全仓模式下的订单权益
+        MemberEntity memberEntity = memberDao.selectById(memberId);
+        String symbols = symbolOut+"/USDT";
+        ThreadPoolUtils.sendWholeForceClosingPrice(symbols, memberEntity);
+        
+        // 加币
+        // 查询合约账户
+        MemberWalletContractEntity walletContractIn = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbolIn);
+        BigDecimal availableBalanceIn = walletContractIn.getAvailableBalance();
+        BigDecimal addIn = availableBalanceIn.add(balance);
+        walletContractIn.setAvailableBalance(addIn);
+        BigDecimal totalBalanceIn = walletContractIn.getTotalBalance();
+        BigDecimal totalBigDecimalIn = totalBalanceIn.add(balance);
+        walletContractIn.setTotalBalance(totalBigDecimalIn);
+        int updateWalletContractById = memberWalletContractDao.updateById(walletContractIn);
+        if (updateWalletContractById < 1) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0096"));
+        }
+        
+        //更新合约全仓模式下的订单权益
+        String symbolIns = symbolIn+"/USDT";
+        ThreadPoolUtils.sendWholeForceClosingPrice(symbolIns, memberEntity);
+        
+        //添加币币资金划转历史记录
+        MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange();
+        memberAccountRecord.setContent("转出至合约"+symbolIn+"账户");
+        memberAccountRecord.setMemberId(memberId);
+        memberAccountRecord.setAmount(balance.negate());
+        memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER);
+        memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT);
+        memberAccountMoneyChangeDao.insert(memberAccountRecord);
+
+        //添加合约资金划转历史记录
+        memberAccountRecord.setContent("由合约"+symbolOut+"账户转入至合约"+symbolIn+"账户");
+        memberAccountRecord.setAmount(balance);
+        memberAccountMoneyChangeDao.insert(memberAccountRecord);
+        
+        return Result.ok(MessageSourceUtils.getString("member_service_0006"));
+	}
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+
 }

--
Gitblit v1.9.1