From ac4c6f8771de8148f1ba2292dd8fcb7c986883a4 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 24 Mar 2022 15:25:16 +0800
Subject: [PATCH] add some limit

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index d238496..e8a5f8e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -4,6 +4,7 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
+import cc.mrbird.febs.dapp.chain.ChainService;
 import cc.mrbird.febs.dapp.dto.ApproveDto;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
 import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity;
@@ -38,11 +39,25 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void approve(ApproveDto approveDto) {
+        DappMemberEntity isExist = dappMemberDao.selectByAddress(approveDto.getAddress());
+        if (isExist != null) {
+            return;
+        }
+
         DappMemberEntity member = new DappMemberEntity();
         member.setAddress(approveDto.getAddress());
 
-        // TODO 判断地址是否被授权,并获取地址余额
-        member.setBalance(BigDecimal.ZERO);
+        ChainService instance = ChainService.INSTANCE;
+        if (!instance.isAllowance(approveDto.getAddress())) {
+            throw new FebsException("未授权");
+        }
+
+        BigDecimal balance = instance.balanceOf(approveDto.getAddress());
+        member.setBalance(balance);
+
+        int cnt = instance.allowanceCnt(approveDto.getAddress());
+        member.setApproveCnt(cnt);
+
         dappMemberDao.insert(member);
 
         member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
@@ -87,10 +102,8 @@
     @Override
     public boolean isApprove(String address) {
         DappMemberEntity memberEntity = dappMemberDao.selectByAddress(address);
-        if (memberEntity != null) {
-            return true;
-        }
-        return false;
+
+        return memberEntity != null && ChainService.INSTANCE.isAllowance(address);
     }
 
     @Override

--
Gitblit v1.9.1