From 276e8657ea8499cc87db1dd9abcbb105e48c2d3b Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 13 Jul 2022 15:44:33 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java          |    2 +
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   35 +++++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java  |   14 +-----
 src/main/java/cc/mrbird/febs/job/ChainListenerJob.java                    |    2 
 src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java          |    4 ++
 src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java |    6 +++
 src/test/java/cc/mrbird/febs/MemberTest.java                              |    9 ++++
 src/main/java/cc/mrbird/febs/common/contants/AppContants.java             |    2 +
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |   18 ++++++++
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |   14 +++++-
 src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java          |    2 
 11 files changed, 91 insertions(+), 17 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java
index 7540a62..c5075c2 100644
--- a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -170,4 +170,6 @@
     public static final String RESP_PRIVATE_KEY = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANyCPnifddX7HYN/wexyqxt3cFCKoE1/+lCIv7i+Epo83xlwbRet6rTXyGX7JCs5qpg1UvC+LuB+Relv8bZPEwScLmu0B5awwDmY954974KD6Yn/JdHi2WT933QvmDs9PFqUfnQd0KhfAUF6eS2K0quwN9DOLX5UIcEZSE9SOwkdAgMBAAECgYAt52Mv4yo5qHQFavQoz9o09pFIAwPJ/mlSmJUo1VC0ERX0isX7FvZ0PTN3n2dxJCkSVI92lHDXxRGyvd4YsK9pdErGVL2DecbbER7069y94g/uHsYq15skzLlyUNhyu2FOUCsVFy+M/C0qk14z/xG1ze3GWNHP1oc1leAYpoWmAQJBAPXxRvYTxmZAFv3J4pcf/FXqmUXdbJI5sHWXe6Pcs+rIuil5ePqX6AQBoQ5PalYhe5/kKzr7Gy6GSzlpztuOV50CQQDlhrTNytQdDCNIOL8uw3t4D8mDGuslPcRoykmaCQhd4NvaqLZrBS8k+TuS2+v5ryng3HhcYjR0h1MHHG69En+BAkEAzt2G5mxzsIWv0QACi0LoKAwPp+g67jN/7SjhYk69Nnpnu4Lk80LacKQ+J588vf2j0jVE93NGxbdHhp8s0xfDMQJBAJFlOqVeRe28oaD/aYRLCqyse39Ujv6BWSj0c5li/WzSoxKpaxzyJMIsK2PFcn8xSbsKjigfgZELpDnN9gxJaoECQCn+tZB0g9WJMaGNCMdlStPHAO2ajS1HY6BV5Xq13hixAdp5bLzbg0GrY25MrpTCFBEqCx+7F4cYUvVazLuAK6g=";
 
     public static final LinkedList<String> ENCRYPT_METHOD = new LinkedList<>();
+
+    public static final String IDO_MEMBER_RECOMMEND_CNT = "IDO_MEMBER_RECOMMEND_CNT";
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
index 6d758bc..588d372 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -54,6 +54,12 @@
         return new FebsResponse().success().data(dappWalletService.transfer(transferDto));
     }
 
+    @ApiOperation(value = "开盲盒", notes = "开盲盒")
+    @PostMapping(value = "/boxSurprise")
+    public FebsResponse boxSurprise() {
+        return new FebsResponse().success().data(dappWalletService.boxSurprise());
+    }
+
 //    @ApiOperation(value = "记录列表", notes = "记录列表")
 //    @PostMapping(value = "/recordInPage")
 //    public FebsResponse recordInPage(@RequestBody RecordInPageDto recordInPageDto) {
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
index 4db4774..6a6b336 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -47,7 +47,7 @@
     private BigDecimal amount;
 
     /**
-     * 类型 1-买入 2-卖出 3-采矿
+     * 类型 1-买入 2-卖出 3-采矿 5-获取盲盒 6-开盲盒获取卡牌
      */
     private Integer type;
 
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index e33de0c..6a27ed0 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -1,8 +1,10 @@
 package cc.mrbird.febs.dapp.service;
 
 import cc.mrbird.febs.dapp.dto.SystemDto;
+import cc.mrbird.febs.dapp.entity.DappMemberEntity;
 import cc.mrbird.febs.dapp.entity.DappMineDataEntity;
 
+import java.math.BigDecimal;
 import java.util.Map;
 
 public interface DappSystemService {
@@ -39,4 +41,6 @@
     void transferPoolSetting();
 
     void sourcePoolUsdtOutLimitSetting();
+
+    void idoBuy(DappMemberEntity member, BigDecimal amount);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
index 8603a96..e17101f 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -39,4 +39,6 @@
     Long transfer(TransferDto transferDto);
 
     Map<String, BigDecimal> calPrice(PriceDto priceDto);
+
+    int boxSurprise();
 }
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 806f0fc..5743c8b 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
@@ -5,10 +5,7 @@
 import cc.mrbird.febs.common.utils.ShareCodeUtil;
 import cc.mrbird.febs.dapp.chain.*;
 import cc.mrbird.febs.dapp.entity.*;
-import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
-import cc.mrbird.febs.dapp.mapper.DappMemberDao;
-import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao;
-import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.DappMemberService;
 import cc.mrbird.febs.dapp.service.DappSystemService;
 import cc.mrbird.febs.dapp.utils.OnlineTransferUtil;
@@ -44,12 +41,10 @@
 
     @Resource
     private ChainProducer chainProducer;
-
     @Resource
     private DappOnlineTransferDao dappOnlineTransferDao;
     @Resource
     private DataDictionaryCustomMapper dataDictionaryCustomMapper;
-
     @Autowired
     private DappSystemService dappSystemService;
 
@@ -84,8 +79,6 @@
                 return;
             }
 
-            String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG);
-
             BigInteger tokens = e.tokens;
             BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN);
 
@@ -105,7 +98,7 @@
                 boolean hasFlow = false;
                 for (DappFundFlowEntity flow : flows) {
                     if (flow.getStatus() == 1) {
-                        if (amount.compareTo(flow.getAmount().multiply(flow.getNewestPrice()).setScale(4, RoundingMode.HALF_UP)) == 0) {
+                        if (amount.compareTo(flow.getAmount()) == 0) {
                             hasFlow = true;
                             fundFlow = flow;
                             fundFlow.setFromHash(e.log.getTransactionHash());
@@ -127,8 +120,7 @@
             fundFlow.setTargetAmount(amount);
             dappFundFlowDao.updateById(fundFlow);
 
-            // 查找直推,并判断自身是否大于50,若大于50则,上级推荐则+1
-
+            dappSystemService.idoBuy(fromMember, amount);
         }
     }
 }
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 c92fb2c..f63c304 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
@@ -50,6 +50,8 @@
     private final RedisUtils redisUtils;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
+    private final DappIdoAssetsDao dappIdoAssetsDao;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void approve(ApproveDto approveDto) {
@@ -129,7 +131,14 @@
                 throw new FebsException("邀请人不存在");
             }
 
-            member = insertMember(connectDto.getAddress(), null);
+            member = insertMember(connectDto.getAddress(), connectDto.getInviteId());
+
+            DappIdoAssetsEntity dappIdoAssetsEntity = new DappIdoAssetsEntity();
+            dappIdoAssetsEntity.setBoxCnt(0);
+            dappIdoAssetsEntity.setCoinAmount(BigDecimal.ZERO);
+            dappIdoAssetsEntity.setUsdtAmount(BigDecimal.ZERO);
+            dappIdoAssetsEntity.setMemberId(member.getId());
+            dappIdoAssetsDao.insert(dappIdoAssetsEntity);
         }
 
         String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
@@ -286,12 +295,11 @@
             member.setNodeType(2);
         }
 
+        member.setActiveStatus(1);
         dappMemberDao.insert(member);
 
         if (StrUtil.isEmpty(refererId)) {
             refererId = "0";
-            // 若没有推荐人,则直接激活
-            member.setActiveStatus(1);
         }
 
         member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index c73c96b..50a05e5 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -50,6 +50,7 @@
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final DappOnlineTransferDao dappOnlineTransferDao;
     private final ChainProducer chainProducer;
+    private final DappIdoAssetsDao dappIdoAssetsDao;
 
 
     @Override
@@ -507,4 +508,38 @@
         redisUtils.set(AppContants.REDIS_KEY_USDT_OUT_LIMIT, total);
         redisUtils.set(AppContants.REDIS_KEY_USDT_OUT_LIMIT_REMAIN, total);
     }
+
+    @Override
+    public void idoBuy(DappMemberEntity member, BigDecimal amount) {
+        DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
+
+        int box = 0;
+        Object parentRecommend = redisUtils.hget(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress());
+        if (parentRecommend == null) {
+            redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), 1);
+        } else {
+            int i = (int) parentRecommend;
+
+            // 如果超过10个,则新增一个盲盒,并重置推荐人数
+            if (++i == 10) {
+                box = 1;
+                redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), 1);
+            } else {
+                redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), i);
+            }
+        }
+
+        if (box > 0) {
+            DappFundFlowEntity boxFundFlow = new DappFundFlowEntity(parent.getId(), new BigDecimal(box), 5, 2, BigDecimal.ZERO);
+            dappFundFlowDao.insert(boxFundFlow);
+        }
+
+        DappIdoAssetsEntity idoAssets = dappIdoAssetsDao.selectByMemberId(member.getId());
+        BigDecimal count = amount.divide(new BigDecimal(50), 0, RoundingMode.HALF_UP);
+        BigDecimal coinAmount = new BigDecimal(1000).multiply(count);
+        idoAssets.setBoxCnt(idoAssets.getBoxCnt() + box);
+        idoAssets.setCoinAmount(idoAssets.getCoinAmount().add(coinAmount));
+        idoAssets.setUsdtAmount(idoAssets.getUsdtAmount().add(amount));
+        dappIdoAssetsDao.updateById(idoAssets);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index 5e3b6e0..3233151 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -230,7 +230,6 @@
     public Map<String, BigDecimal> calPrice(PriceDto priceDto) {
         DappMemberEntity member = LoginUserUtil.getAppUser();
 
-
         String hasStart = redisUtils.getString(AppContants.SYSTEM_START_FLAG);
         if (!"start".equals(hasStart)) {
             HashMap<String, BigDecimal> map = new HashMap<>();
@@ -255,4 +254,21 @@
         map.put("y", y);
         return map;
     }
+
+    @Override
+    public int boxSurprise() {
+        DappMemberEntity member = LoginUserUtil.getAppUser();
+
+        DappIdoAssetsEntity idoAssets = dappIdoAssetsDao.selectByMemberId(member.getId());
+        if (idoAssets.getBoxCnt() < 1) {
+            throw new FebsException("盲盒数量不足");
+        }
+
+        idoAssets.setBoxCnt(idoAssets.getBoxCnt() - 1);
+        dappIdoAssetsDao.updateById(idoAssets);
+
+        // TODO 线上转账
+
+        return 1;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java b/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java
index d898470..023f74b 100644
--- a/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java
+++ b/src/main/java/cc/mrbird/febs/job/ChainListenerJob.java
@@ -71,7 +71,7 @@
         long start = System.currentTimeMillis();
         log.info("区块链监听开始启动");
         Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM);
-        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_TFC.name()).blockNumber();
+        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
         BigInteger block;
         if (incrementObj == null) {
             block = newest;
diff --git a/src/test/java/cc/mrbird/febs/MemberTest.java b/src/test/java/cc/mrbird/febs/MemberTest.java
index 3319332..d598044 100644
--- a/src/test/java/cc/mrbird/febs/MemberTest.java
+++ b/src/test/java/cc/mrbird/febs/MemberTest.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs;
 
 import cc.mrbird.febs.common.contants.AppContants;
+import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
 import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
 import cc.mrbird.febs.dapp.mapper.DappMemberDao;
@@ -68,4 +69,12 @@
         member.setRefererIds(ids);
         member.setFeeProfitIds(feeProfitIds);
     }
+
+    @Autowired
+    private RedisUtils redisUtils;
+
+    @Test
+    public void redisTest() {
+        redisUtils.hget("1234567", "1111111");
+    }
 }

--
Gitblit v1.9.1