From 770a03e01a8ef5e799b1c2c371bc48d22fcbccf1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 04 Sep 2020 14:35:53 +0800 Subject: [PATCH] 20200904 --- src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 152 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 135 insertions(+), 17 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 23915c1..f94fad9 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 @@ -2,7 +2,10 @@ import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + import javax.annotation.Resource; import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; @@ -22,6 +25,7 @@ import com.xcong.excoin.modules.coin.mapper.MemberAccountMoneyChangeMapper; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; import com.xcong.excoin.modules.coin.parameter.vo.AllWalletCoinVo; +import com.xcong.excoin.modules.coin.parameter.vo.ContractSymbolListVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletAgentInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; @@ -180,22 +184,24 @@ //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); - PlatformCnyUsdtExchangeEntity cnyUsdtExchange = cnyUsdtExchangeDao.getCNYAndUSDTOne(); BigDecimal cnyUsdt = cnyUsdtExchange.getValue(); - - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); - if (ObjectUtil.isEmpty(walletContract)) { - return Result.fail(MessageSourceUtils.getString("member_service_0001")); - } - - MemberWalletContractInfoVo memberWalletContractInfoVo = new MemberWalletContractInfoVo(); - memberWalletContractInfoVo.setFrozenBalance(walletContract.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletContractInfoVo.setAvailableBalance(walletContract.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletContractInfoVo.setTotalBalance(walletContract.getTotalBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletContractInfoVo.setTotalRMBBalance(walletContract.getTotalBalance().multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); - + + Map<String, Object> columnMap = new HashMap<String, Object>(); + columnMap.put("member_id", memberId); + columnMap.put("wallet_code", "USDT"); + List<MemberWalletContractEntity> selectByMap = memberWalletContractDao.selectByMap(columnMap); + MemberWalletContractInfoVo memberWalletContractInfoVo = new MemberWalletContractInfoVo(); + if(CollUtil.isNotEmpty(selectByMap)) { + for(MemberWalletContractEntity memberWalletContractEntity : selectByMap) { + memberWalletContractInfoVo.setFrozenBalance(memberWalletContractEntity.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setAvailableBalance(memberWalletContractEntity.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setTotalBalance(memberWalletContractEntity.getTotalBalance().setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setTotalRMBBalance(memberWalletContractEntity.getTotalBalance().multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setWalletCode(memberWalletContractEntity.getWalletCode()+"/USDT"); + } + } + return Result.ok(memberWalletContractInfoVo); } @@ -446,11 +452,10 @@ } @Override - public Result findWalletContractBySymbol() { + public Result findWalletContractBySymbol(String symbol) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbol); BigDecimal availableBalance = walletContract.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); return Result.ok(availableBalance); } @@ -797,4 +802,117 @@ return Result.ok(allWalletCoinVo); } + @Override + public Result getContractSymbolList() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<ContractSymbolListVo> list = memberWalletContractDao.findContractSymbolListBymemberId(memberId); + if(CollUtil.isNotEmpty(list)) { + for(ContractSymbolListVo contractSymbolListVo : list) { + String walletCode = contractSymbolListVo.getWalletCode(); + walletCode = walletCode+"/USDT"; + contractSymbolListVo.setWalletCode(walletCode); + } + } + 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