From ed4d8807978a6eed32d2b2e1273fdcaa89c6d9a4 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 09 May 2024 17:38:14 +0800
Subject: [PATCH] 合约监听
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 69 ++++++++++++++++++++++++++++++++--
1 files changed, 64 insertions(+), 5 deletions(-)
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 84a5fa7..1161fdd 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
@@ -48,6 +48,7 @@
private final DappAchieveItemMapper dappAchieveItemMapper;
private final ChainProducer chainProducer;
private final AsyncCjService asyncCjService;
+ private final DappMemberFundMapper dappMemberFundMapper;
@Override
public WalletInfoVo walletInfo() {
@@ -80,11 +81,47 @@
BigDecimal zyToday = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHI_YA.getValue(), new Date()).negate();
walletInfo.setZyToday(zyToday);
- BigDecimal ccTotal = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHIYA_CHA_CHU.getValue(),null).negate();
- walletInfo.setCcTotal(ccTotal);
-
- BigDecimal ccToday = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHIYA_CHA_CHU.getValue(), new Date()).negate();
+ QueryWrapper<DappMemberFund> fundQueryWrapper = new QueryWrapper<>();
+ fundQueryWrapper.eq("member_id",memberId);
+ List<DappMemberFund> ccTodays = dappMemberFundMapper.selectList(fundQueryWrapper);
+ BigDecimal ccToday = BigDecimal.ZERO;
+ if(CollUtil.isNotEmpty(ccTodays)){
+ for(DappMemberFund dappMemberFund : ccTodays){
+ BigDecimal usdtCoin = dappMemberFund.getUsdtCoin();
+ BigDecimal coinTarget = dappMemberFund.getCoinTarget();
+ BigDecimal add = coinTarget.add(usdtCoin);
+ ccToday = ccToday.add(add);
+ }
+ }
walletInfo.setCcToday(ccToday);
+
+ List<DappMemberFund> dappMemberFunds = dappMemberFundMapper.selectList(null);
+ walletInfo.setCcTotal(CollUtil.isEmpty(dappMemberFunds) ? BigDecimal.ZERO :
+ dappMemberFunds.stream().map(DappMemberFund::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN));
+
+ List<DappAchieve> dappAchieves = dappAchieveMapper.selectListByMemberId(memberId);
+
+ BigDecimal goldAmountDone = dappAchieveMapper.selectGoldAmountByMemberId(memberId);
+ BigDecimal coinAmountDone = dappAchieveMapper.selectCoinAmountByMemberId(memberId);
+ if(CollUtil.isNotEmpty(dappAchieves)){
+ BigDecimal goldAmount = dappAchieves.stream().map(DappAchieve::getGoldAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
+ BigDecimal coinAmount = dappAchieves.stream().map(DappAchieve::getCoinAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
+ BigDecimal goldAmountAva = goldAmount.subtract(goldAmountDone);//金本位剩余
+ BigDecimal coinAmountAva = coinAmount.subtract(coinAmountDone);//币本位剩余
+ if(goldAmountAva.compareTo(new BigDecimal(0.001)) > 0){
+ walletInfo.setGoldAmount(goldAmountAva);
+ }else{
+ walletInfo.setGoldAmount(BigDecimal.ZERO);
+ }
+ if(coinAmountAva.compareTo(new BigDecimal(0.001)) > 0){
+ walletInfo.setCoinAmount(coinAmountAva);
+ }else{
+ walletInfo.setCoinAmount(BigDecimal.ZERO);
+ }
+ }else{
+ walletInfo.setGoldAmount(BigDecimal.ZERO);
+ walletInfo.setCoinAmount(BigDecimal.ZERO);
+ }
BigDecimal gfaDays = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_DAYS.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
walletInfo.setGfaDays(gfaDays);
@@ -336,9 +373,21 @@
dappAchieve.setAmountMax(achieveOut.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
dappAchieve.setState(DappAchieve.STATUS_ING);
dappAchieve.setAmountDone(BigDecimal.ZERO);
+
+ /**
+ * 计算金本位和币本位
+ * 金本位:数量*价格*70*产矿百分比
+ * 币本位:数量*30*产矿百分比
+ */
+ BigDecimal price = dappAchieve.getPrice();
+ BigDecimal goldAmount = amount.multiply(price).multiply(new BigDecimal("0.7")).multiply(achieveOut).setScale(8, BigDecimal.ROUND_DOWN);
+ BigDecimal coinAmount = amount.multiply(new BigDecimal("0.3")).multiply(achieveOut).setScale(8, BigDecimal.ROUND_DOWN);
+ dappAchieve.setGoldAmount(goldAmount);
+ dappAchieve.setCoinAmount(coinAmount);
dappAchieveMapper.insert(dappAchieve);
asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
+// asyncCjService.calculateAchieve(dappAchieve);
//发送一个延时队列消息。24小时之后产生第一次的质押产出
// chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
@@ -396,7 +445,7 @@
dappMemberEntity.setBalance(balance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
dappMemberDao.updateBalanceWithVersion(dappMemberEntity);
}else{
- if(new BigDecimal("100").compareTo(amount) > 0){
+ if(new BigDecimal("1").compareTo(amount) > 0){
throw new FebsException("最小数量为100");
}
if(usdtBalance.compareTo(amount) < 0){
@@ -425,4 +474,14 @@
return new FebsResponse().success();
}
+
+ @Override
+ public List<DappMemberFund> memberFundList(RecordInPageDto recordInPageDto) {
+ DappMemberEntity member = LoginUserUtil.getAppUser();
+ Page<DappMemberFund> page = new Page<>(recordInPageDto.getPageNum(), recordInPageDto.getPageSize());
+ DappMemberFund dappMemberFund = new DappMemberFund();
+ dappMemberFund.setMemberId(member.getId());
+ IPage<DappMemberFund> records = dappFundFlowDao.memberFundList(page, dappMemberFund);
+ return records.getRecords();
+ }
}
--
Gitblit v1.9.1