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