From ed86dfe43e1815e6803568b137f8984735186b25 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 14 Sep 2022 21:47:48 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 67 +++++++++++++++++++++++++++++++-- 1 files changed, 63 insertions(+), 4 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java index a90f591..1f8da63 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java @@ -56,6 +56,7 @@ private final DappNftActivationDao dappNftActivationDao; private final ChainProducer chainProducer; + private final DappSystemDao dappSystemDao; @Override public WalletInfoVo walletInfo() { @@ -63,10 +64,11 @@ DappMemberEntity memberInfo = dappMemberDao.selectById(member.getId()); WalletInfoVo walletInfo = new WalletInfoVo(); - List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1); + List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1, null); DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId()); DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId()); + DappMineDataEntity mineData = dappSystemDao.selectMineDataForOne(); walletInfo.setDirectCnt(direct.size()); walletInfo.setInviteId(member.getActiveStatus() == 1 ? member.getInviteId() : "-"); walletInfo.setBalance(walletCoin.getAvailableAmount()); @@ -74,7 +76,7 @@ walletInfo.setOutCnt(memberInfo.getOutCnt()); walletInfo.setProfit(dappFundFlowDao.selectProfitAmountByMemberId(member.getId())); walletInfo.setTfcBalance(walletMine.getAvailableAmount()); - + walletInfo.setSafePool(mineData.getSafePool()); return walletInfo; } @@ -121,6 +123,11 @@ @Override public Long transfer(TransferDto transferDto) { DappMemberEntity member = LoginUserUtil.getAppUser(); + + String upgrade = redisUtils.getString("APP_UPGRADE"); + if ("upgrade".equals(upgrade)) { + throw new FebsException("功能升级中"); + } if (transferDto.getType() != 2) { member = dappMemberDao.selectById(member.getId()); @@ -179,6 +186,7 @@ } @Override + @Transactional(rollbackFor = Exception.class) public void withdraw(WithdrawDto withdrawDto) { DappMemberEntity member = LoginUserUtil.getAppUser(); @@ -224,7 +232,7 @@ walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); // 减 } else { - if (amount.compareTo(walletCoin.getAvailableAmount()) < 0) { + if (amount.compareTo(walletCoin.getAvailableAmount()) > 0) { throw new FebsException("Balance Not Enough"); } walletCoin.setTotalAmount(walletCoin.getTotalAmount().subtract(amount)); @@ -248,7 +256,7 @@ walletMine.setTotalAmount(walletMine.getTotalAmount().add(amount)); walletMine.setAvailableAmount(walletMine.getAvailableAmount().add(amount)); } else { - if (amount.compareTo(walletMine.getAvailableAmount()) < 0) { + if (amount.compareTo(walletMine.getAvailableAmount()) > 0) { throw new FebsException("TFC Not Enough"); } walletMine.setTotalAmount(walletMine.getTotalAmount().subtract(amount)); @@ -261,4 +269,55 @@ } } } + + @Override + public void addFrozenAmountWithLock(BigDecimal amount, Long memberId) { + boolean isSuccess = false; + while(!isSuccess) { + DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(memberId); + + walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); + walletCoin.setFrozenAmount(walletCoin.getFrozenAmount().add(amount)); + + int i = dappWalletCoinDao.updateWithLock(walletCoin); + if (i > 0) { + isSuccess = true; + + DappFundFlowEntity frozenAmount = new DappFundFlowEntity(memberId, amount, 9, 2, null, null); + dappFundFlowDao.insert(frozenAmount); + } + } + } + + @Override + public void releaseFrozenAmountWithLock(Long memberId) { + boolean isSuccess = false; + while(!isSuccess) { + DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(memberId); + + if (walletCoin.getFrozenAmount().compareTo(BigDecimal.ZERO) <= 0) { + return; + } + BigDecimal frozen = walletCoin.getFrozenAmount(); + + walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(frozen)); + walletCoin.setFrozenAmount(walletCoin.getFrozenAmount().subtract(frozen)); + + int i = dappWalletCoinDao.updateWithLock(walletCoin); + if (i > 0) { + isSuccess = true; + + DappFundFlowEntity releaseFrozen = new DappFundFlowEntity(memberId, frozen, 10, 2, null, null); + dappFundFlowDao.insert(releaseFrozen); + + DappFundFlowEntity releaseFrozenNegate = new DappFundFlowEntity(memberId, frozen.negate(), 9, 2, null, null); + dappFundFlowDao.insert(releaseFrozenNegate); + } + } + } + + @Override + public DappWalletCoinEntity findByMemberId(Long memberId) { + return dappWalletCoinDao.selectByMemberId(memberId); + } } -- Gitblit v1.9.1