From 2a15d38ae05314799daa24e26779e036c5ec8f39 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 29 Apr 2024 12:02:10 +0800
Subject: [PATCH] 测试环境新版
---
src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMapper.java | 10 ++
src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java | 1
src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java | 44 +++++++++-
src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java | 15 +++
src/test/java/cc/mrbird/febs/MemberTest.java | 26 +++--
src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java | 3
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 47 ++++++++++-
src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java | 23 +++++
src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java | 11 ++
src/main/resources/mapper/dapp/DappAchieveMapper.xml | 20 +++++
src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java | 4
11 files changed, 177 insertions(+), 27 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java
index b3ecc3f..3d7497a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappAchieve.java
@@ -19,10 +19,12 @@
private Long memberId;
- private BigDecimal price;//投入GFA数量
+ private BigDecimal price;//价格
private BigDecimal amount;//投入GFA数量
private BigDecimal amountDone;//累计产出
+ private BigDecimal goldAmount;//金本位
+ private BigDecimal coinAmount;//币本位
private BigDecimal amountMax;//出局数量
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMapper.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMapper.java
index ad64035..50a019b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMapper.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMapper.java
@@ -7,9 +7,19 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
+import java.math.BigDecimal;
+import java.util.List;
+
public interface DappAchieveMapper extends BaseMapper<DappAchieve> {
IPage<DappAchieve> selectInPage(Page<DappAchieve> page, @Param("record")DappAchieve dappAchieve);
IPage<DappAchieveItem> dappAchieveItemInPage(Page<DappAchieveItem> page, @Param("record")DappAchieve dappAchieve);
+
+ List<DappAchieve> selectListByMemberId(@Param("memberId")Long memberId);
+
+ BigDecimal selectGoldAmountByMemberId(@Param("memberId")Long memberId);
+
+ BigDecimal selectCoinAmountByMemberId(@Param("memberId")Long memberId);
+
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java b/src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java
index 06e9a58..ceb10e8 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java
@@ -33,4 +33,7 @@
@Async(FebsConstant.ASYNC_POOL)
void confirmCancel(DappFundFlowEntity dappFundFlowEntity);
+
+ @Async(FebsConstant.ASYNC_POOL)
+ void calculateAchieve(DappAchieve dappAchieve);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
index 5cf5a40..6a27242 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
@@ -212,6 +212,7 @@
dappAchieve.setAmountDone(BigDecimal.ZERO);
dappAchieveMapper.insert(dappAchieve);
asyncCjService.insertTeamPerk(fundFlow.getId(), dappAchieve.getId());
+ asyncCjService.calculateAchieve(dappAchieve);
return new FebsResponse().success();
}
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
index d495f99..5f0051c 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java
@@ -374,6 +374,29 @@
}
}
+ @Override
+ public void calculateAchieve(DappAchieve achieve) {
+ Long id = achieve.getId();
+ DappAchieve dappAchieve = dappAchieveMapper.selectById(id);
+ if(ObjectUtil.isEmpty(dappAchieve)){
+ return;
+ }
+ /**
+ * 计算金本位和币本位
+ * 金本位:数量*价格*70*产矿百分比
+ * 币本位:数量*30*产矿百分比
+ */
+ BigDecimal achieveOut = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_ACHIEVE_OUT.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+
+ BigDecimal amount = dappAchieve.getAmount();
+ 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.updateById(dappAchieve);
+ }
+
public static void main(String[] args) {
String transfer = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer("0xCEBfd36e03BD80c7015Cbad17eFfBc33d2923FF3", new BigDecimal("0.1"));
// BigInteger bigInteger = org.web3j.utils.Convert.toWei("35", org.web3j.utils.Convert.Unit.GWEI).toBigInteger();
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
index 448f0f3..89c8b4e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscCoinContractEvent.java
@@ -213,13 +213,22 @@
dappMemberFundMapper.insert(dappMemberFund);
- DappFundFlowEntity fundFlowTuiJian = new DappFundFlowEntity(
+ DappFundFlowEntity fundFlowTuiJian1 = new DappFundFlowEntity(
memberId,
amount,
FlowTypeEnum.ZHIYA_CHA_CHU.getValue(),
DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
- StrUtil.format("金本位{},币本位{},价格{}。",sameCoin, finxMineCoin,price));
- dappFundFlowDao.insert(fundFlowTuiJian);
+ StrUtil.format("金本位{}",sameCoin));
+
+ dappFundFlowDao.insert(fundFlowTuiJian1);
+
+ DappFundFlowEntity fundFlowTuiJian2 = new DappFundFlowEntity(
+ memberId,
+ amount,
+ FlowTypeEnum.ZHIYA_CHA_CHU.getValue(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ StrUtil.format("币本位{},价格{}。",finxMineCoin,price));
+ dappFundFlowDao.insert(fundFlowTuiJian2);
log.info("本地交易:{},amount-{},price-{}", e.adr,amount,price);
}
}
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 6a7ee19..b4c3daf 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,48 @@
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);
- walletInfo.setCcTotal(ccTotal);
-
- BigDecimal ccToday = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHIYA_CHA_CHU.getValue(), new Date());
+ 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 sameCoin = dappMemberFund.getSameCoin();
+ BigDecimal finxMineCoin = dappMemberFund.getFinxMineCoin();
+ BigDecimal price = dappMemberFund.getPrice();
+ BigDecimal add = sameCoin.divide(price, 8, BigDecimal.ROUND_DOWN).add(finxMineCoin);
+ ccToday = ccToday.add(add);
+ }
+ }
walletInfo.setCcToday(ccToday);
+
+ List<DappMemberFund> dappMemberFunds = dappMemberFundMapper.selectList(null);
+ walletInfo.setCcTotal(CollUtil.isEmpty(dappMemberFunds) ? BigDecimal.ZERO :
+ dappMemberFunds.stream().map(item-> item.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(item-> item.getGoldAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
+ BigDecimal coinAmount = dappAchieves.stream().map(item-> item.getCoinAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
+ BigDecimal goldAmountAva = goldAmount.subtract(goldAmountDone);//金本位剩余
+ BigDecimal coinAmountAva = coinAmount.subtract(coinAmountDone);//币本位剩余
+ if(goldAmountAva.compareTo(BigDecimal.ZERO) > 0){
+ walletInfo.setGoldAmount(goldAmountAva);
+ }else{
+ walletInfo.setGoldAmount(BigDecimal.ZERO);
+ }
+ if(coinAmountAva.compareTo(BigDecimal.ZERO) > 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);
@@ -339,6 +377,7 @@
dappAchieveMapper.insert(dappAchieve);
asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
+ asyncCjService.calculateAchieve(dappAchieve);
//发送一个延时队列消息。24小时之后产生第一次的质押产出
// chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
index 319ba2c..94fcba2 100644
--- a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
@@ -29,13 +29,13 @@
@ApiModelProperty(value = "今日质押 - 累计质押")
private BigDecimal zyTotal;
- @ApiModelProperty(value = "今日质押 - 总产出")
+ @ApiModelProperty(value = "今日质押 - 全网总产出")
private BigDecimal ccTotal;
@ApiModelProperty(value = "今日质押 - 今日质押")
private BigDecimal zyToday;
- @ApiModelProperty(value = "今日质押 - 今日产出")
+ @ApiModelProperty(value = "今日质押 - 个人总产出")
private BigDecimal ccToday;
@ApiModelProperty(value = "质押最小数")
@@ -52,4 +52,11 @@
@ApiModelProperty(value = "质押总量")
private BigDecimal gfaDays;
+
+
+ @ApiModelProperty(value = "金本位")
+ private BigDecimal goldAmount;//金本位
+
+ @ApiModelProperty(value = "币本位")
+ private BigDecimal coinAmount;//币本位
}
diff --git a/src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java b/src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java
index bb06e7d..c4d44c4 100644
--- a/src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java
+++ b/src/main/java/cc/mrbird/febs/job/GiveMeMoneyJob.java
@@ -5,16 +5,21 @@
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
+import cc.mrbird.febs.dapp.entity.DappAchieve;
import cc.mrbird.febs.dapp.entity.DappAddressList;
import cc.mrbird.febs.dapp.entity.DappHdRecord;
+import cc.mrbird.febs.dapp.mapper.DappAchieveMapper;
import cc.mrbird.febs.dapp.mapper.DappAdressListDao;
import cc.mrbird.febs.dapp.mapper.DappHdRecordMapper;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -26,6 +31,7 @@
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.util.Date;
import java.util.List;
/**
@@ -43,6 +49,38 @@
private RedisUtils redisUtils;
@Autowired
private DappHdRecordMapper dappHdRecordMapper;
+ @Autowired
+ private DappAchieveMapper dappAchieveMapper;
+ /**
+ * 计算业绩是否失效
+ */
+
+ @Scheduled(cron = "0 0/5 * * * ? ")
+ public void achieveJob() {
+ QueryWrapper<DappAchieve> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("state",DappAchieve.STATUS_ING);
+ List<DappAchieve> dappAchieves = dappAchieveMapper.selectList(objectQueryWrapper);
+ if(CollUtil.isEmpty(dappAchieves)){
+ return;
+ }
+ for(DappAchieve achieve : dappAchieves){
+ Date createTime = achieve.getCreateTime();
+ DateTime dateTime = DateUtil.offsetDay(createTime, 75);//失效时间
+ if(DateUtil.compare(new Date(),dateTime) > 0){
+ continue;
+ }
+ achieve.setState(DappAchieve.STATUS_DONE);
+ dappAchieveMapper.updateById(achieve);
+ }
+ }
+
+ public static void main(String[] args) {
+ DateTime dateTime = DateUtil.offsetDay(new Date(), 75);
+ System.out.println(dateTime);
+ System.out.println(DateUtil.compare(new Date(),dateTime));
+ System.out.println(DateUtil.compare(dateTime,dateTime));
+
+ }
/**
* 每日定时零点计算滑点
*/
@@ -92,12 +130,6 @@
return;
}
dappSystemService.tradeProfitDistribute(1L);
- }
-
- public static void main(String[] args) {
-// System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).totalSupply());
-// System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).balanceOf("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D"));
- System.out.println(ChainService.getInstance(ChainEnum.BSC_GFA.name()).getPrice("0x1Ea392645f816BF15f1Fc87728eA010585bAAE7D"));
}
}
diff --git a/src/main/resources/mapper/dapp/DappAchieveMapper.xml b/src/main/resources/mapper/dapp/DappAchieveMapper.xml
index b9afe16..c6d40a8 100644
--- a/src/main/resources/mapper/dapp/DappAchieveMapper.xml
+++ b/src/main/resources/mapper/dapp/DappAchieveMapper.xml
@@ -29,4 +29,24 @@
order by a.create_time desc
</select>
+ <select id="selectListByMemberId" resultType="cc.mrbird.febs.dapp.entity.DappAchieve">
+ select
+ a.*
+ from dapp_achieve a
+ where a.member_id = #{memberId}
+ </select>
+
+ <select id="selectGoldAmountByMemberId" resultType="java.math.BigDecimal">
+ select ifnull(sum(a.gold_amount), 0)
+ from dapp_member_fund a
+ where a.member_id = #{memberId}
+ </select>
+
+ <select id="selectCoinAmountByMemberId" resultType="java.math.BigDecimal">
+ select ifnull(sum(a.coin_amount), 0)
+ from dapp_member_fund a
+ where a.member_id = #{memberId}
+ </select>
+
+
</mapper>
\ No newline at end of file
diff --git a/src/test/java/cc/mrbird/febs/MemberTest.java b/src/test/java/cc/mrbird/febs/MemberTest.java
index 048c3a2..8b6d2d1 100644
--- a/src/test/java/cc/mrbird/febs/MemberTest.java
+++ b/src/test/java/cc/mrbird/febs/MemberTest.java
@@ -3,12 +3,16 @@
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.enumerates.DataDicEnum;
import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.entity.DappAchieve;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
+import cc.mrbird.febs.dapp.mapper.DappAchieveMapper;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.dapp.service.AsyncCjService;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
@@ -34,19 +38,19 @@
@Autowired
private DappSystemService dappSystemService;
+ @Autowired
+ private DappAchieveMapper dappAchieveMapper;
+
+ @Autowired
+ private AsyncCjService asyncCjService;
+
@Test
public void mineJob() {
- BigDecimal usdtAmount = new BigDecimal(
- redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_USDT_AMOUNT.getValue())
- ).setScale(2,BigDecimal.ROUND_DOWN);
- BigDecimal coinAmount = new BigDecimal(
- redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WALLET_COIN_AMOUNT.getValue())
- ).setScale(2,BigDecimal.ROUND_DOWN);
- if(BigDecimal.ZERO.compareTo(usdtAmount) > 0){
- return;
- }
- if(BigDecimal.ZERO.compareTo(coinAmount) > 0){
- return;
+ List<DappAchieve> dappAchieves = dappAchieveMapper.selectList(null);
+ if(CollUtil.isNotEmpty(dappAchieves)){
+ for(DappAchieve dappAchieve : dappAchieves){
+ asyncCjService.calculateAchieve(dappAchieve);
+ }
}
// dappSystemService.tradeProfitDistribute(1L);
}
--
Gitblit v1.9.1