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