From c24fc100ef9966495dc706e110fc37f13e003448 Mon Sep 17 00:00:00 2001 From: zainali5120 <512061637@qq.com> Date: Thu, 08 Oct 2020 21:34:28 +0800 Subject: [PATCH] 优化usdt同步 --- src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java | 73 +++++++++++++++++++++++++++++------- 1 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java index 5d1e101..73d4a1e 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java @@ -101,7 +101,7 @@ BigDecimal newBalance = balance.subtract(early); memberWalletCoinDao.updateBlockBalance(walletCoinEntity.getId(), newBalance, balance, 0); - String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "ERC20", balance,null); + String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "ERC20", balance, null); // 插入财务记录 LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.USDT.name(), 1, 1); @@ -151,7 +151,7 @@ BigDecimal newBalance = balance.subtract(early); memberWalletCoinDao.updateBlockBalance(walletCoin.getId(), newBalance, balance, 0); - String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.ETH.name(), null, balance,null); + String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.ETH.name(), null, balance, null); // 插入财务记录 LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.ETH.name(), 1, 1); @@ -201,7 +201,7 @@ BigDecimal newBalance = balance.subtract(early); memberWalletCoinDao.updateBlockBalance(walletCoin.getId(), newBalance, balance, 0); - String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "OMNI", balance,null); + String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "OMNI", balance, null); ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); @@ -249,7 +249,7 @@ BigDecimal newBalance = balance.subtract(early); memberWalletCoinDao.updateBlockBalance(walletCoin.getId(), newBalance, balance, 0); - String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.BTC.name(), null, balance,null); + String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.BTC.name(), null, balance, null); LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.BTC.name(), 1, 1); ThreadPoolUtils.sendDingTalk(5); @@ -311,7 +311,7 @@ if (memberCoinAddressEntity != null) { memberWalletCoinDao.updateBlockBalance(memberWalletCoinEntity.getId(), amount, BigDecimal.ZERO, 0); // 添加冲币记录 - String orderNo = insertCoinCharge(EosService.ACCOUNT, memberId, amount, CoinTypeEnum.EOS.name(), memo, BigDecimal.ZERO,null); + String orderNo = insertCoinCharge(EosService.ACCOUNT, memberId, amount, CoinTypeEnum.EOS.name(), memo, BigDecimal.ZERO, null); LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", amount, CoinTypeEnum.EOS.name(), 1, 1); ThreadPoolUtils.sendDingTalk(5); @@ -388,7 +388,7 @@ if (memberCoinAddressEntity != null) { memberWalletCoinDao.updateBlockBalance(memberWalletCoinEntity.getId(), amount, BigDecimal.ZERO, 0); // 添加冲币记录 - String orderNo = insertCoinCharge(XrpService.ACCOUNT, memberId, amount, CoinTypeEnum.XRP.name(), memo, BigDecimal.ZERO,null); + String orderNo = insertCoinCharge(XrpService.ACCOUNT, memberId, amount, CoinTypeEnum.XRP.name(), memo, BigDecimal.ZERO, null); LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", amount, CoinTypeEnum.XRP.name(), 1, 1); ThreadPoolUtils.sendDingTalk(5); @@ -462,7 +462,7 @@ memberWalletCoinDao.updateBlockBalance(memberWalletCoinEntity.getId(), amount, BigDecimal.ZERO, 0); // 添加冲币记录 - String orderNo = insertCoinCharge(address, memberId, amount, CoinTypeEnum.USDT.name(), "TRC20", BigDecimal.ZERO,transactionId); + String orderNo = insertCoinCharge(address, memberId, amount, CoinTypeEnum.USDT.name(), "TRC20", BigDecimal.ZERO, transactionId); LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", amount, CoinTypeEnum.USDT.name(), 1, 1); ThreadPoolUtils.sendDingTalk(5); @@ -488,23 +488,23 @@ String address = transferDetail.getAddress(); BigDecimal balance = transferDetail.getBalance(); String symbol = transferDetail.getSymbol(); - if(org.apache.commons.lang.StringUtils.isBlank(address) || org.apache.commons.lang.StringUtils.isBlank(symbol) || balance ==null ){ + if (org.apache.commons.lang.StringUtils.isBlank(address) || org.apache.commons.lang.StringUtils.isBlank(symbol) || balance == null) { return; } - if(balance.compareTo(new BigDecimal("0.0001"))<=0){ + if (balance.compareTo(new BigDecimal("0.0001")) <= 0) { return; } MemberCoinAddressEntity memberCoinAddress = memberCoinAddressDao.selectCoinAddressByAddressAndSymbol(address, symbol); - if(memberCoinAddress==null){ + if (memberCoinAddress == null) { return; } Long memberId = memberCoinAddress.getMemberId(); // 查询钱包 并更新 MemberWalletCoinEntity walletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.ROC.name()); if (walletCoinEntity == null) { - // 创建一个钱包 + // 创建一个钱包 // 创建这个钱包 walletCoinEntity = new MemberWalletCoinEntity(); walletCoinEntity.setAvailableBalance(BigDecimal.ZERO); @@ -518,11 +518,11 @@ memberWalletCoinDao.updateBlockBalance(walletCoinEntity.getId(), balance, BigDecimal.ZERO, 0); - String orderNo = insertCoinCharge(address, memberId, balance, CoinTypeEnum.ROC.name(), "", BigDecimal.ZERO,null); + String orderNo = insertCoinCharge(address, memberId, balance, CoinTypeEnum.ROC.name(), "", BigDecimal.ZERO, null); // 插入财务记录 LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", balance, CoinTypeEnum.ROC.name(), 1, 1); - try{ + try { ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); if (StrUtil.isNotBlank(member.getPhone())) { @@ -531,10 +531,53 @@ } else { SubMailSend.sendRechargeMail(member.getEmail(), DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MINUTE_PATTERN), orderNo); } - }catch (Exception e){ + } catch (Exception e) { //e.printStackTrace(); } + } + + @Override + public void updateEthUsdtNew(EthUsdtChargeDto ethUsdtChargeDto) { + String address = ethUsdtChargeDto.getAddress(); + String hash = ethUsdtChargeDto.getHash(); + // hash没有用过 + Map<String,Object> param = new HashMap<>(); + param.put("hash",hash); + param.put("address",address); + List<MemberCoinChargeEntity> memberCoinChargeEntities = memberCoinChargeDao.selectByMap(param); + if(CollectionUtils.isNotEmpty(memberCoinChargeEntities)){ + return; + } + MemberCoinAddressEntity coinAddressEntity = memberCoinAddressDao.selectBlockAddressWithTag(null, CoinTypeEnum.USDT.toString(), "ERC20"); + if (coinAddressEntity == null) { + return; + } + Long memberId = coinAddressEntity.getMemberId(); + BigDecimal balance = ethUsdtChargeDto.getBalance(); + if (balance != null && balance.compareTo(new BigDecimal("0.1")) > 0) { + balance = balance.setScale(8, RoundingMode.CEILING); + BigDecimal early = BigDecimal.ZERO; + + MemberWalletCoinEntity walletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.USDT.name()); + if (walletCoinEntity == null) { + return; + } + BigDecimal newBalance = balance.subtract(early); + memberWalletCoinDao.updateBlockBalance(walletCoinEntity.getId(), newBalance, balance, 0); + String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "ERC20", balance, ethUsdtChargeDto.getHash()); + // 插入财务记录 + LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.USDT.name(), 1, 1); + ThreadPoolUtils.sendDingTalk(5); + MemberEntity member = memberDao.selectById(memberId); + if (StrUtil.isNotBlank(member.getPhone())) { + String amount = newBalance.toPlainString() + "USDT-ERC20"; + Sms106Send.sendRechargeMsg(member.getPhone(), DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MINUTE_PATTERN), orderNo); + } else { + SubMailSend.sendRechargeMail(member.getEmail(), DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MINUTE_PATTERN), orderNo); + } + + } } private String generateNo() { @@ -545,7 +588,7 @@ return String.valueOf(timestamp).substring(2) + random; } - public String insertCoinCharge(String address, Long memberId, BigDecimal newBalance, String symbol, String tag, BigDecimal lastAmount,String hash) { + public String insertCoinCharge(String address, Long memberId, BigDecimal newBalance, String symbol, String tag, BigDecimal lastAmount, String hash) { MemberCoinChargeEntity memberCoinChargeEntity = new MemberCoinChargeEntity(); memberCoinChargeEntity.setAddress(address); memberCoinChargeEntity.setMemberId(memberId); -- Gitblit v1.9.1