From a64d6284082665f9a27add91edc0f7dc7e31afb7 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 08 Nov 2022 11:23:00 +0800 Subject: [PATCH] 20221021 --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 80 ++++++++++++++++++++++++++++++++++------ 1 files changed, 68 insertions(+), 12 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 ebebddf..cb9e924 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,7 +64,7 @@ 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()); @@ -123,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()); @@ -201,18 +206,18 @@ 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); + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getAmount().negate(), 5, 1, 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); +// String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(member.getAddress(), withdrawDto.getAmount()); +// fundFlow.setToHash(hash); +// dappFundFlowDao.updateById(fundFlow); - Map<String, Object> map = new HashMap<>(); - map.put("fee", withdrawDto.getFee()); - map.put("address", ChainEnum.BSC_TFC_FEE.getAddress()); - map.put("flow", feeFlow.getId()); - chainProducer.sendTfcFee(JSONObject.toJSONString(map)); +// Map<String, Object> map = new HashMap<>(); +// map.put("fee", withdrawDto.getFee()); +// map.put("address", ChainEnum.BSC_TFC_FEE.getAddress()); +// map.put("flow", feeFlow.getId()); +// chainProducer.sendTfcFee(JSONObject.toJSONString(map)); } @Override @@ -227,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)); @@ -251,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)); @@ -264,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