| | |
| | | throw new FebsException("Balance Not Enough"); |
| | | } |
| | | |
| | | updateWalletCoinWithLock(transferDto.getAmount().negate(), member.getId()); |
| | | updateWalletCoinWithLock(transferDto.getAmount(), member.getId(), 2); |
| | | |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount().negate(), 1, 2, transferDto.getFee(), transferDto.getTxHash()); |
| | | dappFundFlowDao.insert(fundFlow); |
| | |
| | | public BigDecimal calPrice(PriceDto priceDto) { |
| | | String priceStr = redisUtils.getString(AppContants.REDIS_KEY_TFC_NEW_PRICE); |
| | | |
| | | return priceDto.getAmount().multiply(new BigDecimal("0.1")).divide(new BigDecimal(priceStr), 2, RoundingMode.HALF_UP); |
| | | BigDecimal amount = priceDto.getAmount(); |
| | | if (priceDto.getAmount() == null) { |
| | | amount = BigDecimal.ZERO; |
| | | } |
| | | return amount.multiply(new BigDecimal("0.1")).divide(new BigDecimal(priceStr), 2, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | @Override |
| | |
| | | throw new FebsException("Balance Not Enough"); |
| | | } |
| | | |
| | | updateWalletCoinWithLock(withdrawDto.getAmount().negate(), member.getId()); |
| | | updateWalletMineWithLock(withdrawDto.getFee().negate(), member.getId()); |
| | | DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId()); |
| | | if (walletMine.getAvailableAmount().compareTo(withdrawDto.getFee()) < 0) { |
| | | throw new FebsException("TFC Not Enough"); |
| | | } |
| | | |
| | | updateWalletCoinWithLock(withdrawDto.getAmount(), member.getId(), 2); |
| | | updateWalletMineWithLock(withdrawDto.getFee(), member.getId(), 2); |
| | | |
| | | DappFundFlowEntity feeFlow = new DappFundFlowEntity(member.getId(), withdrawDto.getFee().negate(), 7, 2, null, null); |
| | | dappFundFlowDao.insert(feeFlow); |
| | |
| | | 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 |
| | | public void updateWalletCoinWithLock(BigDecimal amount, Long memberId) { |
| | | public void updateWalletCoinWithLock(BigDecimal amount, Long memberId, int type) { |
| | | boolean isSuccess = false; |
| | | while(!isSuccess) { |
| | | DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(memberId); |
| | | |
| | | walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); |
| | | walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); |
| | | // 加 |
| | | if (type == 1) { |
| | | walletCoin.setTotalAmount(walletCoin.getTotalAmount().add(amount)); |
| | | walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().add(amount)); |
| | | // 减 |
| | | } else { |
| | | if (amount.compareTo(walletCoin.getAvailableAmount()) < 0) { |
| | | throw new FebsException("Balance Not Enough"); |
| | | } |
| | | walletCoin.setTotalAmount(walletCoin.getTotalAmount().subtract(amount)); |
| | | walletCoin.setAvailableAmount(walletCoin.getAvailableAmount().subtract(amount)); |
| | | } |
| | | |
| | | int i = dappWalletCoinDao.updateWithLock(walletCoin); |
| | | if (i > 0) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void updateWalletMineWithLock(BigDecimal amount, Long memberId) { |
| | | public void updateWalletMineWithLock(BigDecimal amount, Long memberId, int type) { |
| | | boolean isSuccess = false; |
| | | while(!isSuccess) { |
| | | DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(memberId); |
| | | |
| | | walletMine.setTotalAmount(walletMine.getTotalAmount().add(amount)); |
| | | walletMine.setAvailableAmount(walletMine.getAvailableAmount().add(amount)); |
| | | if (type == 1) { |
| | | walletMine.setTotalAmount(walletMine.getTotalAmount().add(amount)); |
| | | walletMine.setAvailableAmount(walletMine.getAvailableAmount().add(amount)); |
| | | } else { |
| | | if (amount.compareTo(walletMine.getAvailableAmount()) < 0) { |
| | | throw new FebsException("TFC Not Enough"); |
| | | } |
| | | walletMine.setTotalAmount(walletMine.getTotalAmount().subtract(amount)); |
| | | walletMine.setAvailableAmount(walletMine.getAvailableAmount().subtract(amount)); |
| | | } |
| | | |
| | | int i = dappWalletMineDao.updateWithLock(walletMine); |
| | | if (i > 0) { |