From 2c86d804e005a62591fcc6a78c845d7a295aebcf Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 26 May 2022 19:40:45 +0800
Subject: [PATCH] add dapp login

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
index 79f1205..385c076 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -1,22 +1,62 @@
 package cc.mrbird.febs.dapp.service.impl;
 
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
+import cc.mrbird.febs.dapp.chain.ChainEnum;
+import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.chain.ContractEventService;
 import cc.mrbird.febs.dapp.chain.EthUsdtContract;
+import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
+import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
 import cc.mrbird.febs.dapp.mapper.DappMemberDao;
+import cc.mrbird.febs.dapp.service.DappMemberService;
 import cn.hutool.core.util.StrUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+
 @Slf4j
 @Service
 public class BscUsdtContractEvent implements ContractEventService {
 
+    @Resource
+    private DappMemberService dappMemberService;
+
+    @Resource
+    private DappFundFlowDao dappFundFlowDao;
+
+    private final String ADDRESS = "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25";
+    int decimals = ChainService.getInstance(ChainEnum.BSC_USDT.name()).decimals();
+    int tfcDecimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals();
+
     @Override
     public void compile(EthUsdtContract.TransferEventResponse e) {
+        if (e.to != null && ADDRESS.equals(e.from)) {
+            DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null);
+            if (fromMember == null) {
+                fromMember = dappMemberService.insertMember(e.from, null);
+            }
 
+            BigInteger tokens = e.tokens;
+
+            BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN);
+
+            DappFundFlowEntity fundFlow = new DappFundFlowEntity(fromMember.getId(), amount, 2, null, null, e.log.getTransactionHash());
+            dappFundFlowDao.insert(fundFlow);
+
+            // TODO price
+            BigDecimal newPrice = BigDecimal.valueOf(1);
+
+            BigDecimal transferAmount = amount.multiply(newPrice);
+            String hash = ChainService.getInstance(ChainEnum.BSC_TFC.name()).transfer(e.from, transferAmount);
+            fundFlow.setToHash(hash);
+            dappFundFlowDao.updateById(fundFlow);
+        }
     }
 }

--
Gitblit v1.9.1