From 09ffce575fbab168997262c8ce20b048f7e047b2 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 01 Aug 2022 11:03:58 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java | 29 ++++++++++++++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 5 +-
src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java | 2 +
src/test/java/cc/mrbird/febs/ChainTest.java | 9 ++++
src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java | 5 ++
src/main/java/cc/mrbird/febs/dapp/enumerate/CardPeriod.java | 36 ++++++++++++++++++
6 files changed, 84 insertions(+), 2 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
index 9e867de..7e11eb8 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
@@ -25,5 +25,7 @@
BigInteger totalSupply();
+ BigInteger totalSupplyNFT();
+
String safeMintNFT(String address);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
index d6e8e84..609cdfd 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -362,6 +362,35 @@
}
@Override
+ public BigInteger totalSupplyNFT() {
+ try {
+ String methodName = "totalSupply";
+ List<Type> inputParameters = new ArrayList<>();
+ List<TypeReference<?>> outputParameters = new ArrayList<>();
+ TypeReference<Uint256> typeReference = new TypeReference<Uint256>() {
+ };
+ outputParameters.add(typeReference);
+ Function function = new Function(methodName, inputParameters, outputParameters);
+ String data = FunctionEncoder.encode(function);
+ Transaction transaction = Transaction.createEthCallTransaction(null, contractAddress, data);
+
+ EthCall ethCall;
+ BigInteger totalSupply = BigInteger.ZERO;
+ try {
+ ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send();
+ List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), function.getOutputParameters());
+ totalSupply = (BigInteger) results.get(0).getValue();
+ return totalSupply;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return BigInteger.ZERO;
+ }
+
+ @Override
public String safeMintNFT(String toAddress) {
String gas = getGas();
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
index 83049f7..61c6595 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
@@ -115,6 +115,11 @@
}
@Override
+ public BigInteger totalSupplyNFT() {
+ return null;
+ }
+
+ @Override
public String safeMintNFT(String address) {
return null;
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/CardPeriod.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/CardPeriod.java
new file mode 100644
index 0000000..556a195
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/CardPeriod.java
@@ -0,0 +1,36 @@
+package cc.mrbird.febs.dapp.enumerate;
+
+/**
+ * 卡牌分期
+ */
+public enum CardPeriod {
+
+ ONE(0,1000, 6),
+ TWO(1001,1500, 9),
+ THREE(2501,1500, 12);
+
+ private int min;
+
+ private int cardCnt;
+
+ private int recommendCnt;
+
+
+
+ CardPeriod(int min, int cardCnt, int recommendCnt) {
+ this.min = min;
+ this.cardCnt = cardCnt;
+ this.recommendCnt = recommendCnt;
+ }
+
+ public int recommendCnt(int totalSupply) {
+ for (CardPeriod value : CardPeriod.values()) {
+ if (value.min <= totalSupply && totalSupply < (value.min + value.cardCnt)) {
+ return value.recommendCnt;
+ }
+ }
+
+ return 0;
+ }
+
+}
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 b71a9db..129bc19 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
@@ -8,6 +8,7 @@
import cc.mrbird.febs.dapp.chain.ContractChainService;
import cc.mrbird.febs.dapp.dto.SystemDto;
import cc.mrbird.febs.dapp.entity.*;
+import cc.mrbird.febs.dapp.enumerate.CardPeriod;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.utils.OnlineTransferUtil;
@@ -644,7 +645,7 @@
return;
}
- DataDictionaryCustom boxRecommendCnt = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.DIC_TYPE_SYSTEM_SETTING, AppContants.DIC_VALUE_BOX_RECOMMEND_CNT);
+ BigInteger totalSupply = ChainService.getInstance(ChainEnum.BSC_NFT_SDC.name()).totalSupplyNFT();
int box = 0;
// 需要第一次购买,才在推荐中加1
Object parentRecommend = redisUtils.hget(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress());
@@ -654,7 +655,7 @@
int i = (int) parentRecommend;
// 如果超过10个,则新增一个盲盒,并重置推荐人数
- if (++i == new Integer(boxRecommendCnt.getValue())) {
+ if (++i == CardPeriod.ONE.recommendCnt(totalSupply.intValue())) {
box = 1;
redisUtils.hset(AppContants.IDO_MEMBER_RECOMMEND_CNT, parent.getAddress(), 0);
} else {
diff --git a/src/test/java/cc/mrbird/febs/ChainTest.java b/src/test/java/cc/mrbird/febs/ChainTest.java
index 88021f8..491acc3 100644
--- a/src/test/java/cc/mrbird/febs/ChainTest.java
+++ b/src/test/java/cc/mrbird/febs/ChainTest.java
@@ -5,6 +5,7 @@
import cc.mrbird.febs.dapp.chain.ContractChainService;
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
import cc.mrbird.febs.dapp.entity.DappOnlineTransferEntity;
+import cc.mrbird.febs.dapp.enumerate.CardPeriod;
import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
import cc.mrbird.febs.dapp.mapper.DappOnlineTransferDao;
import cc.mrbird.febs.dapp.service.DappSystemService;
@@ -119,4 +120,12 @@
public void nftBalanceTest() {
BigDecimal balance = ChainService.getInstance(ChainEnum.BSC_NFT_SDC.name()).balanceOf("0x971c09aa9735eb98459b17ec8b48932d24cbb931");
System.out.println(1);
+ }
+
+ @Test
+ public void nftTotalSupplyTest() {
+ BigInteger bigInteger = ChainService.getInstance(ChainEnum.BSC_NFT_SDC.name()).totalSupplyNFT();
+
+ int i = CardPeriod.ONE.recommendCnt(bigInteger.intValue());
+ System.out.println(i);
}}
--
Gitblit v1.9.1