From f10afe3a9aab4e962b3ec456b8a707163e11f9bd Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Mar 2024 19:22:58 +0800
Subject: [PATCH] 滑点
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 119 +++++++-------
src/main/resources/mapper/dapp/DappFundFlowDao.xml | 2
src/main/resources/templates/febs/views/dapp/member-money-flow.html | 13 +
src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java | 3
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 7
src/main/java/cc/mrbird/febs/dapp/service/impl/AsyncCjServiceImpl.java | 289 ++++++++++++++++++++++++++++++++++-
src/main/resources/templates/febs/views/dapp/member-zhi-ya.html | 2
src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java | 3
8 files changed, 358 insertions(+), 80 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
index 833a672..b058285 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
@@ -4,9 +4,10 @@
@Getter
public enum FlowTypeEnum {
+ HUA_DIAN_TUANDUI_USDT(9,"滑点奖励USDT"),
DAI_BI_OUT(8,"USDT提现"),
USDT_OUT(7,"代币提现"),
- HUA_DIAN_TUANDUI(6,"滑点奖励"),
+ HUA_DIAN_TUANDUI_DAIBI(6,"滑点奖励代币"),
TUAN_DUI_FAIL(5,"奖励失效"),
ZHIYA_CHA_CHU(4,"质押产币"),
HUA_DIAN_GEREN(3,"质押滑点奖励"),
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 5d5c941..2d35eef 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/AsyncCjService.java
@@ -23,4 +23,7 @@
@Async(FebsConstant.ASYNC_POOL)
void insertTeamPerk(Long flowId, Long achieveId);
+
+ @Async(FebsConstant.ASYNC_POOL)
+ void tradeProfitDistribute();
}
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 a217463..a2bc8c7 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
@@ -23,9 +23,8 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
@Slf4j
@Service
@@ -40,6 +39,7 @@
private final DappAchieveMapper dappAchieveMapper;
private final DappAchieveItemMapper dappAchieveItemMapper;
private final ChainProducer chainProducer;
+ private final DappHdRecordMapper dappHdRecordMapper;
@Override
public void redisCacheUpdate(String key, Object value, long time) {
@@ -108,12 +108,12 @@
BigDecimal tuanDuiPerkTimes = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_PERCENT.getValue()));
BigDecimal tuanDuiPercent = new BigDecimal("0.01")
.multiply(tuanDuiPerkTimes
- .setScale(2,BigDecimal.ROUND_DOWN));
+ .setScale(4,BigDecimal.ROUND_DOWN));
- BigDecimal tuanDuiPerkTotal = tuanDuiPercent.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN);
+ BigDecimal tuanDuiPerkTotal = tuanDuiPercent.multiply(amount).setScale(4,BigDecimal.ROUND_DOWN);
Integer tuanDuiLevel = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL.getValue()));
//分成【团队的所占比例】的份数
- BigDecimal tuanDuiPerk = tuanDuiPerkTotal.divide(tuanDuiPerkTimes, 2, BigDecimal.ROUND_DOWN);
+ BigDecimal tuanDuiPerk = tuanDuiPerkTotal.divide(tuanDuiPerkTimes, 4, BigDecimal.ROUND_DOWN);
//团队奖励对象
HashMap<Integer, DappMemberEntity> objectObjectHashMap = new HashMap<>();//累计奖励的用户集合
Long refMemberId = memberId;//循环的上级用户ID
@@ -147,21 +147,24 @@
DappMemberEntity refMember = entry.getValue();
BigDecimal perkPercent = BigDecimal.ZERO;
if(key == 0){
- perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(2, BigDecimal.ROUND_DOWN);
+ perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(4, BigDecimal.ROUND_DOWN);
}
if(key == 1){
- perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(2, BigDecimal.ROUND_DOWN);
+ perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(4, BigDecimal.ROUND_DOWN);
}
if(key == 2){
- perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(2, BigDecimal.ROUND_DOWN);
+ perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(4, BigDecimal.ROUND_DOWN);
}
if(key == 3){
- perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(2, BigDecimal.ROUND_DOWN);
+ perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_YI.getValue())).setScale(4, BigDecimal.ROUND_DOWN);
}
if(key == 4){
- perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_WU.getValue())).setScale(2, BigDecimal.ROUND_DOWN);
+ perkPercent = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_TUAN_DUI_LEVEL_WU.getValue())).setScale(4, BigDecimal.ROUND_DOWN);
}
- BigDecimal realPerk = tuanDuiPerk.multiply(perkPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal realPerk = tuanDuiPerk.multiply(perkPercent).setScale(4, BigDecimal.ROUND_DOWN);
+ if(BigDecimal.ZERO.compareTo(realPerk) >= 0){
+ continue;
+ }
QueryWrapper<DappAchieve> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("member_id",refMember.getId());
@@ -220,7 +223,7 @@
}
BigDecimal gfaDays = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_DAYS.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
//更新每日限额的质押总数
- gfaDays = gfaDays.add(flow.getAmount()).setScale(2,BigDecimal.ROUND_DOWN);
+ gfaDays = gfaDays.add(flow.getAmount()).setScale(4,BigDecimal.ROUND_DOWN);
dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
DataDicEnum.GFA_DAYS.getValue(),
DataDicEnum.GFA_DAYS.getValue(),
@@ -228,4 +231,264 @@
);
this.redisCacheUpdate(DataDicEnum.GFA_DAYS.getValue(),gfaDays.toString(),0);
}
+
+ @Override
+ public void tradeProfitDistribute() {
+ /**
+ * 获取滑点钱包的代币余额A和U余额B
+ * 获取最新一条的记录C,然后A-C.A,B-C.B,获得这段时间内的滑点新增D
+ * 用D来进行划定分配
+ * 并且生成一条新的记录dappHdRecord,用来下次分配参照
+ */
+
+ //当天实际当天滑点
+
+ BigDecimal gfaPrice = new BigDecimal(
+ redisUtils.getString(DataDicEnum.GFA_PRICE.getValue())
+ ).setScale(2,BigDecimal.ROUND_DOWN);
+ 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;
+ }
+ BigDecimal usdtAmountReal = usdtAmount;
+ BigDecimal coinAmountReal = coinAmount;
+ //生成一条记录
+ DappHdRecord dappHdRecordAdd = new DappHdRecord();
+ dappHdRecordAdd.setPrice(gfaPrice);
+ dappHdRecordAdd.setUsdtEvery(usdtAmountReal);
+ dappHdRecordAdd.setUsdtAmount(usdtAmountReal);
+ dappHdRecordAdd.setCoinEvery(coinAmountReal);
+ dappHdRecordAdd.setCoinAmount(coinAmountReal);
+ dappHdRecordMapper.insert(dappHdRecordAdd);
+
+ /**
+ * 5%滑奖分配:
+ * 1%用自身质押
+ * 3%用于团队业绩计算
+ * 1%用于布道者奖励
+ */
+ int selfPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_SELF.getValue()));
+ int teamPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_TEAM.getValue()));
+ int workPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WORK.getValue()));
+ //平分份数
+ BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent);
+ //每一份有多少
+ BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 4, BigDecimal.ROUND_DOWN);
+ //每一份有多少
+ BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 4, BigDecimal.ROUND_DOWN);
+ //1%用自身质押
+ selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin);
+ //3%用于团队业绩计算
+ teamHdPerk(teamPercent,divideEveryUsdt,divideEveryCoin);
+ }
+
+ public void teamHdPerk(int teamPercent,BigDecimal divideEveryUsdt,BigDecimal divideEveryCoin){
+ //3%用于团队业绩计算
+ BigDecimal teamPercentMultiply = new BigDecimal(teamPercent);
+ BigDecimal multiplyDivideEveryUsdt = divideEveryUsdt.multiply(teamPercentMultiply);
+ BigDecimal multiplyDivideEveryCoin = divideEveryCoin.multiply(teamPercentMultiply);
+
+ List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectList(null);//获取全部成员
+ if(CollUtil.isEmpty(dappMemberEntities)){
+ return;
+ }
+ //如果没有进行中的质押,直接返回
+ QueryWrapper<DappAchieve> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("state",DappAchieve.STATUS_ING);
+ List<DappAchieve> dappAchieves = dappAchieveMapper.selectList(objectQueryWrapper);
+ if(CollUtil.isEmpty(dappAchieves)){
+ return;
+ }
+ //可以获取奖励的用户
+ Map<Long, BigDecimal> memberPerkMap = new HashMap<>();
+ //总团队业绩
+ BigDecimal memberPerkTotal = BigDecimal.ZERO;
+ //获取全部会员
+ Set<Long> allMembers = dappMemberEntities.stream().map(DappMemberEntity::getId).collect(Collectors.toSet());
+ //获取正在质押的会员ID
+ Set<Long> achieveMembers = dappAchieves.stream().map(DappAchieve::getMemberId).collect(Collectors.toSet());
+ Collection<Long> intersection = CollUtil.intersection(allMembers, achieveMembers);
+ for(Long memberId : intersection){
+ /**
+ * 获取每一个成员的四级直推
+ */
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ String inviteId = dappMemberEntity.getInviteId();
+ List<String> inviteIds = new ArrayList<>();
+ inviteIds.add(inviteId);
+ //每一个账号的往下四级直推
+ List<DappMemberEntity> downMembersList = new ArrayList<>();
+ int teamLevel = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_LEVEL.getValue()));
+ while(teamLevel >= 1){
+ //获取直推用户
+ List<DappMemberEntity> downMembers = dappMemberDao.selectChildMemberDirectOrNotInlist(inviteIds);
+ if(CollUtil.isEmpty(downMembers)){
+ teamLevel = 0;
+ }
+ CollUtil.addAll(downMembersList,downMembers);
+ List<String> collect = downMembers.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList());
+ inviteIds.clear();
+ inviteIds.addAll(collect);
+ teamLevel = teamLevel -1;
+ }
+ if(CollUtil.isEmpty(downMembersList)){
+ continue;
+ }
+ Set<Long> collect = downMembersList.stream().map(DappMemberEntity::getId).collect(Collectors.toSet());
+ QueryWrapper<DappAchieve> queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("member_id",collect);
+ queryWrapper.eq("state",DappAchieve.STATUS_ING);
+ List<DappAchieve> dappAchieveSumList = dappAchieveMapper.selectList(queryWrapper);
+ //个人团队总业绩
+ BigDecimal teamAchieveMemberSum = dappAchieveSumList.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ if(BigDecimal.ZERO.compareTo(teamAchieveMemberSum) >= 0){
+ continue;
+ }
+ memberPerkTotal = memberPerkTotal.add(teamAchieveMemberSum);
+ memberPerkMap.put(memberId,teamAchieveMemberSum);
+ }
+ if(BigDecimal.ZERO.compareTo(memberPerkTotal) >= 0){
+ return;
+ }
+
+ BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(memberPerkTotal,4,BigDecimal.ROUND_DOWN);
+ BigDecimal everyCoin = multiplyDivideEveryCoin.divide(memberPerkTotal,4,BigDecimal.ROUND_DOWN);
+ Set<Long> set = memberPerkMap.keySet(); // 得到所有key的集合
+ for (Long memberId : set) {
+ //当前生效中的团队业绩
+ BigDecimal amountMember = memberPerkMap.get(memberId);
+ //这个人实际可以分到的数量USDT
+ BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(4, BigDecimal.ROUND_DOWN);
+ //这个人实际可以分到的数量COIN
+ BigDecimal multiplyCoin = divideEveryCoin.multiply(everyCoin).setScale(4, BigDecimal.ROUND_DOWN);
+
+ createFlow(
+ multiplyUsdt,
+ memberId,
+ FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getValue(),
+ FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getDescrition(),
+ 4,
+ 1,
+ ChainEnum.BSC_TFC_REWARD.name(),
+ DataDicEnum.USDT_COIN.getValue(),
+ 2);
+ createFlow(
+ multiplyCoin,
+ memberId,
+ FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getValue(),
+ FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getDescrition(),
+ 4,
+ 1,
+ ChainEnum.BSC_TFC_REWARD.name(),
+ DataDicEnum.USDT_COIN.getValue(),
+ 1);
+
+ }
+ }
+
+ public void selfHdPerk(int selfPercent,BigDecimal divideEveryUsdt,BigDecimal divideEveryCoin){
+ QueryWrapper<DappAchieve> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("state",DappAchieve.STATUS_ING);
+ List<DappAchieve> dappAchieves = dappAchieveMapper.selectList(objectQueryWrapper);
+ if(CollUtil.isEmpty(dappAchieves)){
+ return;
+ }
+ BigDecimal selfPercentMultiply = new BigDecimal(selfPercent);
+ BigDecimal multiplyDivideEveryUsdt = divideEveryUsdt.multiply(selfPercentMultiply);
+ BigDecimal multiplyDivideEveryCoin = divideEveryCoin.multiply(selfPercentMultiply);
+ //当前生效中的质押总数
+ BigDecimal amountMemberTotal = dappAchieves.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ if(BigDecimal.ZERO.compareTo(amountMemberTotal) >= 0){
+ return;
+ }
+ BigDecimal everyUsdt = multiplyDivideEveryUsdt.divide(amountMemberTotal,4,BigDecimal.ROUND_DOWN);
+ BigDecimal everyCoin = multiplyDivideEveryCoin.divide(amountMemberTotal,4,BigDecimal.ROUND_DOWN);
+
+ Map<Long, List<DappAchieve>> collect = dappAchieves.stream().collect(Collectors.groupingBy(DappAchieve::getMemberId));
+ Set<Long> set = collect.keySet(); // 得到所有key的集合
+ for (Long memberId : set) {
+ //当前每个人生效中的质押总数
+ BigDecimal amountMember = collect.get(memberId).stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ //这个人实际可以分到的数量USDT
+ BigDecimal multiplyUsdt = amountMember.multiply(everyUsdt).setScale(4, BigDecimal.ROUND_DOWN);
+ //这个人实际可以分到的数量COIN
+ BigDecimal multiplyCoin = divideEveryCoin.multiply(everyCoin).setScale(4, BigDecimal.ROUND_DOWN);
+
+ createFlow(
+ multiplyUsdt,
+ memberId,
+ FlowTypeEnum.HUA_DIAN_GEREN.getValue(),
+ FlowTypeEnum.HUA_DIAN_GEREN.getDescrition(),
+ 4,
+ 1,
+ ChainEnum.BSC_TFC_REWARD.name(),
+ DataDicEnum.USDT_COIN.getValue(),
+ 2);
+ createFlow(
+ multiplyCoin,
+ memberId,
+ FlowTypeEnum.HUA_DIAN_GEREN.getValue(),
+ FlowTypeEnum.HUA_DIAN_GEREN.getDescrition(),
+ 4,
+ 1,
+ ChainEnum.BSC_TFC_REWARD.name(),
+ DataDicEnum.GFA_COIN.getValue(),
+ 1);
+ }
+ }
+
+ /**
+ * 插入流水记录,增加转账记录,发送线上转账的消息
+ * @param multiplyUsdt
+ * @param memberId
+ * @param type
+ * @param description
+ * @param typeTransfer
+ * @param targetType
+ * @param chainEnumName
+ * @param coinType
+ */
+ public void createFlow(BigDecimal multiplyUsdt,Long memberId,Integer type,String description,Integer typeTransfer,
+ Integer targetType,String chainEnumName,String coinType,Integer typeadd){
+ if (BigDecimal.ZERO.compareTo(multiplyUsdt) < 0) {
+ DappFundFlowEntity fundFlowTuiJian = new DappFundFlowEntity(
+ memberId,
+ multiplyUsdt,
+ type,
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ description);
+ dappFundFlowDao.insert(fundFlowTuiJian);
+
+ Integer systemFlag = Integer.parseInt(redisUtils.getString(DataDicEnum.GFA_ZHUAN_ZHANG_KAI_GUAN.getValue()));
+ if (1 == systemFlag) {
+ //生成转账记录
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ if (ObjectUtil.isNotEmpty(dappMemberEntity)) {
+ OnlineTransferUtil.addTransfer(
+ dappMemberEntity.getAddress(),
+ multiplyUsdt,
+ typeTransfer,//挖矿
+ targetType,//普通账户
+ chainEnumName,
+ coinType,
+ fundFlowTuiJian.getId().toString());
+ Map<String, String> map = new HashMap<>();
+ map.put("batchNo", fundFlowTuiJian.getId().toString());
+ map.put("type", AppContants.SYMBOL_FLOW_TYPE_BATCH);
+ //发送链上转账消息
+ chainProducer.sendOnlineTransfer(JSONObject.toJSONString(map));
+ }
+ }else{
+ this.updateAmount(typeadd,memberId,multiplyUsdt);
+ }
+ }
+ }
}
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 738b7b9..f3bbf97 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
@@ -163,60 +163,61 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void tradeProfitDistribute(Long id) {
- /**
- * 获取滑点钱包的代币余额A和U余额B
- * 获取最新一条的记录C,然后A-C.A,B-C.B,获得这段时间内的滑点新增D
- * 用D来进行划定分配
- * 并且生成一条新的记录dappHdRecord,用来下次分配参照
- */
-
- //当天实际当天滑点
-
- BigDecimal gfaPrice = new BigDecimal(
- redisUtils.getString(DataDicEnum.GFA_PRICE.getValue())
- ).setScale(2,BigDecimal.ROUND_DOWN);
- 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;
- }
- BigDecimal usdtAmountReal = usdtAmount;
- BigDecimal coinAmountReal = coinAmount;
- //生成一条记录
- DappHdRecord dappHdRecordAdd = new DappHdRecord();
- dappHdRecordAdd.setPrice(gfaPrice);
- dappHdRecordAdd.setUsdtEvery(usdtAmountReal);
- dappHdRecordAdd.setUsdtAmount(usdtAmountReal);
- dappHdRecordAdd.setCoinEvery(coinAmountReal);
- dappHdRecordAdd.setCoinAmount(coinAmountReal);
- dappHdRecordMapper.insert(dappHdRecordAdd);
-
- /**
- * 5%滑奖分配:
- * 1%用自身质押
- * 3%用于团队业绩计算
- * 1%用于布道者奖励
- */
- int selfPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_SELF.getValue()));
- int teamPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_TEAM.getValue()));
- int workPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WORK.getValue()));
- //平分份数
- BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent);
- //每一份有多少
- BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
- //每一份有多少
- BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
- //1%用自身质押
- selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin);
- //3%用于团队业绩计算
- teamHdPerk(teamPercent,divideEveryUsdt,divideEveryCoin);
+ asyncCjService.tradeProfitDistribute();
+// /**
+// * 获取滑点钱包的代币余额A和U余额B
+// * 获取最新一条的记录C,然后A-C.A,B-C.B,获得这段时间内的滑点新增D
+// * 用D来进行划定分配
+// * 并且生成一条新的记录dappHdRecord,用来下次分配参照
+// */
+//
+// //当天实际当天滑点
+//
+// BigDecimal gfaPrice = new BigDecimal(
+// redisUtils.getString(DataDicEnum.GFA_PRICE.getValue())
+// ).setScale(2,BigDecimal.ROUND_DOWN);
+// 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;
+// }
+// BigDecimal usdtAmountReal = usdtAmount;
+// BigDecimal coinAmountReal = coinAmount;
+// //生成一条记录
+// DappHdRecord dappHdRecordAdd = new DappHdRecord();
+// dappHdRecordAdd.setPrice(gfaPrice);
+// dappHdRecordAdd.setUsdtEvery(usdtAmountReal);
+// dappHdRecordAdd.setUsdtAmount(usdtAmountReal);
+// dappHdRecordAdd.setCoinEvery(coinAmountReal);
+// dappHdRecordAdd.setCoinAmount(coinAmountReal);
+// dappHdRecordMapper.insert(dappHdRecordAdd);
+//
+// /**
+// * 5%滑奖分配:
+// * 1%用自身质押
+// * 3%用于团队业绩计算
+// * 1%用于布道者奖励
+// */
+// int selfPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_SELF.getValue()));
+// int teamPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_TEAM.getValue()));
+// int workPercent = Convert.toInt(redisUtils.getString(DataDicEnum.GFA_HUA_DIAN_WORK.getValue()));
+// //平分份数
+// BigDecimal totalPercent = new BigDecimal(selfPercent + teamPercent + workPercent);
+// //每一份有多少
+// BigDecimal divideEveryUsdt = usdtAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
+// //每一份有多少
+// BigDecimal divideEveryCoin = coinAmountReal.divide(totalPercent, 2, BigDecimal.ROUND_DOWN);
+// //1%用自身质押
+// selfHdPerk(selfPercent,divideEveryUsdt,divideEveryCoin);
+// //3%用于团队业绩计算
+// teamHdPerk(teamPercent,divideEveryUsdt,divideEveryCoin);
}
public void teamHdPerk(int teamPercent,BigDecimal divideEveryUsdt,BigDecimal divideEveryCoin){
@@ -299,8 +300,8 @@
createFlow(
multiplyUsdt,
memberId,
- FlowTypeEnum.HUA_DIAN_TUANDUI.getValue(),
- FlowTypeEnum.HUA_DIAN_TUANDUI.getDescrition(),
+ FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getValue(),
+ FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getDescrition(),
4,
1,
ChainEnum.BSC_TFC_REWARD.name(),
@@ -309,8 +310,8 @@
createFlow(
multiplyCoin,
memberId,
- FlowTypeEnum.HUA_DIAN_TUANDUI.getValue(),
- FlowTypeEnum.HUA_DIAN_TUANDUI.getDescrition(),
+ FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getValue(),
+ FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getDescrition(),
4,
1,
ChainEnum.BSC_TFC_REWARD.name(),
@@ -656,7 +657,7 @@
}
//发送一个延时队列消息。24小时之后产生下一次的质押产出
- chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
+// chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
}
}
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 60534a8..b58d543 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
@@ -69,8 +69,9 @@
walletInfo.setTzCoin(tzCoin);
BigDecimal hdCoinGeren = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_GEREN.getValue(),null);
- BigDecimal hdCoinTuandui = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI.getValue(),null);
- walletInfo.setHdCoin(hdCoinGeren.add(hdCoinTuandui));
+ BigDecimal hdCoinTuandui = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getValue(),null);
+ BigDecimal hdCoinTuanduiUSDT = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getValue(),null);
+ walletInfo.setHdCoin(hdCoinGeren.add(hdCoinTuandui).add(hdCoinTuanduiUSDT));
BigDecimal zyTotal = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHI_YA.getValue(),null).negate();
walletInfo.setZyTotal(zyTotal);
@@ -311,7 +312,7 @@
asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
//发送一个延时队列消息。24小时之后产生第一次的质押产出
- chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
+// chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
} else {
dappFundFlowDao.deleteById(transferDto.getId());
}
diff --git a/src/main/resources/mapper/dapp/DappFundFlowDao.xml b/src/main/resources/mapper/dapp/DappFundFlowDao.xml
index 29423cc..7897071 100644
--- a/src/main/resources/mapper/dapp/DappFundFlowDao.xml
+++ b/src/main/resources/mapper/dapp/DappFundFlowDao.xml
@@ -110,7 +110,7 @@
a.create_time createTime
from dapp_fund_flow a
where
- a.type in (2,3,6)
+ a.type in (2,3,5,6,9)
and a.member_id=#{record.memberId}
order by a.create_time desc
</select>
diff --git a/src/main/resources/templates/febs/views/dapp/member-money-flow.html b/src/main/resources/templates/febs/views/dapp/member-money-flow.html
index fc595ad..98fa1b1 100644
--- a/src/main/resources/templates/febs/views/dapp/member-money-flow.html
+++ b/src/main/resources/templates/febs/views/dapp/member-money-flow.html
@@ -17,7 +17,10 @@
<option value="3">质押滑点奖励</option>
<option value="4">质押产币</option>
<option value="5">奖励失效</option>
- <option value="6">滑点奖励</option>
+ <option value="6">滑点奖励代币</option>
+ <option value="7">代币提现</option>
+ <option value="8">USDT提现</option>
+ <option value="9">滑点奖励USDT</option>
</select>
</div>
</div>
@@ -86,7 +89,13 @@
{{# } else if(d.type === 5) { }}
<span class="layui-badge febs-bg-red">奖励失效</span>
{{# } else if(d.type === 6) { }}
- <span class="layui-badge febs-bg-green">滑点奖励</span>
+ <span class="layui-badge febs-bg-blue">滑点奖励代币</span>
+ {{# } else if(d.type === 7) { }}
+ <span class="layui-badge febs-bg-red">代币提现</span>
+ {{# } else if(d.type === 8) { }}
+ <span class="layui-badge febs-bg-red">USDT提现</span>
+ {{# } else if(d.type === 9) { }}
+ <span class="layui-badge febs-bg-green">滑点奖励USDT</span>
{{# } else { }}
{{# } }}
</script>
diff --git a/src/main/resources/templates/febs/views/dapp/member-zhi-ya.html b/src/main/resources/templates/febs/views/dapp/member-zhi-ya.html
index 1952103..65cb8e5 100644
--- a/src/main/resources/templates/febs/views/dapp/member-zhi-ya.html
+++ b/src/main/resources/templates/febs/views/dapp/member-zhi-ya.html
@@ -117,7 +117,7 @@
{field: 'address', title: '用户地址', minWidth: 400,align:'center'},
{templet: '#beState', title: '状态', minWidth: 180,align:'center'},
{field: 'amount', title: '质押数量', minWidth: 100,align:'center'},
- {field: 'amountDone', title: '累计产出', minWidth: 100,align:'center'},
+ // {field: 'amountDone', title: '累计产出', minWidth: 100,align:'center'},
{field: 'amountMax', title: '出局数量', minWidth: 100,align:'center'},
{field: 'amountDay', title: '每日产出', minWidth: 100,align:'center'},
{field: 'createTime', title: '质押时间', minWidth: 300,align:'center'},
--
Gitblit v1.9.1