From 48731a1c7023dc75fe7357fac5736adcf084e0c2 Mon Sep 17 00:00:00 2001 From: wzy <wzy19931122ai@163.com> Date: Sat, 27 Aug 2022 15:02:10 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 45 insertions(+), 2 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 8552798..c0258d4 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 @@ -64,6 +64,7 @@ WalletInfoVo walletInfo = new WalletInfoVo(); List<DappMemberEntity> direct = dappMemberDao.selectChildMemberDirectOrNot(member.getInviteId(), 1); DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId()); + DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId()); walletInfo.setDirectCnt(direct.size()); walletInfo.setInviteId(member.getInviteId()); @@ -71,6 +72,8 @@ walletInfo.setHasBuy(memberInfo.getActiveStatus()); walletInfo.setOutCnt(memberInfo.getOutCnt()); walletInfo.setProfit(dappFundFlowDao.selectProfitAmountByMemberId(member.getId())); + walletInfo.setTFCbalance(walletMine.getAvailableAmount()); + return walletInfo; } @@ -204,8 +207,13 @@ chainProducer.sendAchieveTreeMsg(member.getId()); } else { + int type = 1; + // 1-认购 2-充值tfc + if (transferDto.getType() == 2) { + type = 6; + } if (transferDto.getId() == null) { - DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), 1, 1, transferDto.getFee(), transferDto.getTxHash()); + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), type, 1, transferDto.getFee(), transferDto.getTxHash()); dappFundFlowDao.insert(fundFlow); return fundFlow.getId(); } @@ -226,7 +234,11 @@ @Override public Map<String, BigDecimal> calPrice(PriceDto priceDto) { - return null; + String priceStr = redisUtils.getString(AppContants.REDIS_KEY_TFC_NEW_PRICE); + + Map<String, BigDecimal> data = new HashMap<>(); + data.put("fee", new BigDecimal(priceStr)); + return data; } @Override @@ -347,7 +359,22 @@ @Override public void withdraw(WithdrawDto withdrawDto) { + DappMemberEntity member = LoginUserUtil.getAppUser(); + updateWalletCoinWithLock(withdrawDto.getAmount().negate(), member.getId()); + updateWalletMineWithLock(withdrawDto.getFee(), member.getId()); + + DappFundFlowEntity feeFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getFee().negate(), 7, 2, null, null); + dappFundFlowDao.insert(feeFlow); + + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getAmount().negate(), 5, 2, withdrawDto.getFee(), null); + dappFundFlowDao.insert(fundFlow); + + String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(member.getAddress(), withdrawDto.getAmount()); + fundFlow.setToHash(hash); + dappFundFlowDao.updateById(fundFlow); + + chainProducer.sendTfcFee(withdrawDto.getFee().toPlainString()); } @Override @@ -365,4 +392,20 @@ } } } + + @Override + public void updateWalletMineWithLock(BigDecimal amount, Long memberId) { + boolean isSuccess = false; + while(!isSuccess) { + DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(memberId); + + walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); + walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); + + int i = dappWalletCoinDao.updateWithLock(walletCoin); + if (i > 0) { + isSuccess = true; + } + } + } } -- Gitblit v1.9.1