From cbc6726bb3a9b68881987e47f966237503973234 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 25 May 2022 18:39:21 +0800
Subject: [PATCH] bsc tfc

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

diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
index 0056af6..c8ba7de 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
@@ -1,15 +1,90 @@
 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.DappMemberEntity;
+import cc.mrbird.febs.dapp.mapper.DappMemberDao;
+import cn.hutool.core.util.StrUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.math.BigInteger;
 
 @Service
 public class BscCoinContractEvent implements ContractEventService {
 
+    @Autowired
+    private DappMemberDao dappMemberDao;
+
+    private final String ADDRESS = "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25";
+    int decimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals();
 
     @Override
     public void compile(EthUsdtContract.TransferEventResponse e) {
+        if (e.to != null) {
+            if ("0x0000000000000000000000000000000000000000".equals(e.from)) {
+                return;
+            }
 
+            DappMemberEntity fromMember = dappMemberDao.selectByAddress(e.from, null);
+            if (fromMember == null) {
+                fromMember = insertMember(e.from, null);
+            }
+
+            if (!e.to.equals(ADDRESS)) {
+                DappMemberEntity toMember = dappMemberDao.selectByAddress(e.to, null);
+                if (toMember == null) {
+                    toMember = insertMember(e.to, fromMember.getInviteId());
+                }
+            }
+
+            // 卖币
+            if (e.to.equals(ADDRESS)) {
+                BigInteger tokens = e.tokens;
+            }
+
+        }
+    }
+
+    private DappMemberEntity insertMember(String address, String refererId) {
+        DappMemberEntity member = new DappMemberEntity();
+        member.setAddress(address);
+
+        dappMemberDao.insert(member);
+
+        member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
+        member.setRefererId(refererId);
+        if (StrUtil.isNotBlank(refererId)){
+            boolean flag = false;
+            String parentId = refererId;
+            String ids = "";
+            while (!flag && StringUtils.isNotBlank(parentId)) {
+                if (StrUtil.isBlank(ids)) {
+                    ids += parentId;
+                } else {
+                    ids += ("," + parentId);
+                }
+
+                DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId);
+                if (parentMember == null) {
+                    break;
+                }
+                parentId = parentMember.getRefererId();
+                if(StringUtils.isBlank(parentId)){
+                    break;
+                }
+                if (parentMember.getRefererId().equals(parentMember.getInviteId())) {
+                    flag = true;
+                }
+            }
+            member.setRefererIds(ids);
+        }
+        dappMemberDao.updateById(member);
+
+        return member;
     }
 }

--
Gitblit v1.9.1