From 6b090477bc4882144114a0fc2b94532e0e87aa0e Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 30 May 2023 11:45:43 +0800
Subject: [PATCH] twoCoin项目修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |  239 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 210 insertions(+), 29 deletions(-)

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 1c38810..6f82b1f 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
@@ -650,6 +650,17 @@
         BigDecimal amountPerk = dappUsdtPerkEntity.getAmount();
         amountPerk = amountPerk.add(amount.multiply(new BigDecimal(3)));
         dappUsdtPerkEntity.setAmount(amountPerk);
+        //生成一条金本位的三倍额度的资金流水记录
+        DappFundFlowEntity amountPerkFundFlow = new DappFundFlowEntity(
+                memberId,
+                amount.multiply(new BigDecimal(3)),
+                FundFlowEnum.MEMBER_AMOUNT_PERK_TOTAL.getCode(),
+                1,
+                BigDecimal.ZERO,
+                null,
+                chergeRecordId);
+        dappFundFlowDao.insert(amountPerkFundFlow);
+
         //增加业绩
         BigDecimal achieveAmount = dappUsdtPerkEntity.getAchieveAmount();
         achieveAmount = achieveAmount.add(amount);
@@ -809,7 +820,19 @@
                 chergeRecordId);
         dappFundFlowDao.insert(poolAllMemberAFundFlow);
 
-        nodePoolPerk(poolAllMemberAPercentCnt, MemberLevelEnum.MEMBER.getType(), FundFlowEnum.POOL_MEMBER_A_CNT.getCode());
+        BigDecimal poolAllMemberAPercentCntAva = nodePoolPerk(poolAllMemberAPercentCnt, MemberLevelEnum.MEMBER.getType(), FundFlowEnum.POOL_MEMBER_A_CNT.getCode());
+        DappFundFlowEntity poolAllMemberAFundFlowAva = new DappFundFlowEntity(
+                1L,
+                poolAllMemberAPercentCnt.subtract(poolAllMemberAPercentCntAva),
+                FundFlowEnum.POOL_MEMBER_A_CNT.getCode(),
+                2,
+                BigDecimal.ZERO,
+                null,
+                chergeRecordId);
+        dappFundFlowDao.insert(poolAllMemberAFundFlowAva);
+        dappWalletService.updateWalletMineWithLock(poolAllMemberAPercentCnt.subtract(poolAllMemberAPercentCntAva),
+                1L,1);
+
         /**
          * 10%直推
          */
@@ -854,6 +877,19 @@
                 //用户的A币账户增加directAPercentCnt数量
                 dappWalletService.updateWalletMineWithLock(directAPercentFundFlowToMemberFlag,directMemberEntity.getId(),1);
             }
+            if(directAPercentCnt.compareTo(directAPercentFundFlowToMemberFlag) > 0){
+                DappFundFlowEntity directAPercentFundFlowToMemberAva = new DappFundFlowEntity(
+                        1L,
+                        directAPercentCnt.subtract(directAPercentFundFlowToMemberFlag),
+                        FundFlowEnum.DIRECT_A_PERCENT.getCode(),
+                        2,
+                        BigDecimal.ZERO,
+                        null,
+                        chergeRecordId);
+                dappFundFlowDao.insert(directAPercentFundFlowToMemberAva);
+                dappWalletService.updateWalletMineWithLock(directAPercentCnt.subtract(directAPercentFundFlowToMemberFlag),
+                        1L,1);
+            }
         }
         /**
          * 5%节点
@@ -884,7 +920,21 @@
         nodeAPercentPoolDic.setValue(nodeAPercentPoolDicCnt.toString());
         dataDictionaryCustomMapper.updateById(nodeAPercentPoolDic);
 
-        superNodePoolPerk(nodeAPercentCnt, NodeCodeEnum.SUPER_NODE.getCode(), FundFlowEnum.NODE_A_PERCENT_TO_MEMBER.getCode());
+        BigDecimal nodeAPercentCntAva = superNodePoolPerk(nodeAPercentCnt, NodeCodeEnum.SUPER_NODE.getCode(), FundFlowEnum.NODE_A_PERCENT_TO_MEMBER.getCode());
+
+        if(nodeAPercentCnt.compareTo(nodeAPercentCntAva) > 0){
+            DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+                    1L,
+                    nodeAPercentCnt.subtract(nodeAPercentCntAva),
+                    FundFlowEnum.NODE_A_PERCENT_TO_MEMBER.getCode(),
+                    2,
+                    BigDecimal.ZERO,
+                    null,
+                    chergeRecordId);
+            dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+            dappWalletService.updateWalletMineWithLock(nodeAPercentCnt.subtract(nodeAPercentCntAva),
+                    1L,1);
+        }
         /**
          * 5%基金会
          */
@@ -929,6 +979,11 @@
         dappFundFlowDao.insert(levelAPercentCntFundFlow);
         chainProducer.sendAntACoinInLevelMsg(levelAPercentCntFundFlow.getId());
 
+        /**
+         * 更新用户为有效用户
+         */
+        dappMemberDao.updateMemberActiveStatus(1,memberId);
+
     }
 
     @Override
@@ -954,6 +1009,14 @@
         dappFundFlowEntity.setFromHash(hash);
         dappFundFlowEntity.setStatus(2);
         dappFundFlowDao.updateById(dappFundFlowEntity);
+    }
+
+    public static void main(String[] args) {
+        String address = AppContants.ADDRESS_A_POOL_PEOJECT;
+        /**
+         * 发起USDT转账
+         */
+        String hash = ChainService.getInstance(ChainEnum.BSC_USDT_A_POOL.name()).transfer(address, new BigDecimal("0.01"));
     }
 
     @Override
@@ -1116,7 +1179,19 @@
                     dappFundFlowDao.updateById(dappFundFlowEntity);
                     BigDecimal subtract = amountTC.subtract(teamIncomePerkTotal);
                     //用户的A币账户增加divide数量
-                    dappWalletService.updateWalletMineWithLock(subtract,1L,1);
+                    if(amountTC.compareTo(teamIncomePerkTotal) > 0){
+                        DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+                                1L,
+                                subtract,
+                                FundFlowEnum.LEVEL_A_PERCENT_CNT_MEMBER.getCode(),
+                                2,
+                                BigDecimal.ZERO,
+                                null,
+                                systemProfitId);
+                        dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+                        dappWalletService.updateWalletMineWithLock(subtract,
+                                1L,1);
+                    }
                 }
             }
         }
@@ -1131,7 +1206,22 @@
         BigDecimal averagePerk = nodePerk.getAveragePerk();
         BigDecimal averagePerkCnt = amountTC.multiply(averagePerk).setScale(4, BigDecimal.ROUND_DOWN);
 
-        nodePoolPerk(averagePerkCnt, MemberLevelEnum.NODE_3.getType(), FundFlowEnum.DAO_3_NODE_PERK.getCode());
+        BigDecimal averagePerkCntAva = nodePoolPerk(averagePerkCnt, MemberLevelEnum.NODE_3.getType(), FundFlowEnum.DAO_3_NODE_PERK.getCode());
+
+        //用户的A币账户增加divide数量
+        if(averagePerkCnt.compareTo(averagePerkCntAva) > 0){
+            DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+                    1L,
+                    averagePerkCnt.subtract(averagePerkCntAva),
+                    FundFlowEnum.DAO_3_NODE_PERK.getCode(),
+                    2,
+                    BigDecimal.ZERO,
+                    null,
+                    systemProfitId);
+            dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+            dappWalletService.updateWalletMineWithLock(averagePerkCnt.subtract(averagePerkCntAva),
+                    1L,1);
+        }
         //生成流水记录
         DappFundFlowEntity nodeThreeFundFlow = new DappFundFlowEntity(
                 1L,
@@ -1158,7 +1248,21 @@
         BigDecimal averagePerkFour = nodeFourDicPerk.getAveragePerk();
         BigDecimal averagePerkFourCnt = amountTC.multiply(averagePerkFour).setScale(4, BigDecimal.ROUND_DOWN);
 
-        nodePoolPerk(averagePerkFourCnt, MemberLevelEnum.NODE_4.getType(), FundFlowEnum.DAO_4_NODE_PERK.getCode());
+        BigDecimal averagePerkFourCntAva = nodePoolPerk(averagePerkFourCnt, MemberLevelEnum.NODE_4.getType(), FundFlowEnum.DAO_4_NODE_PERK.getCode());
+        //用户的A币账户增加divide数量
+        if(averagePerkFourCnt.compareTo(averagePerkFourCntAva) > 0){
+            DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+                    1L,
+                    averagePerkFourCnt.subtract(averagePerkFourCntAva),
+                    FundFlowEnum.DAO_4_NODE_PERK.getCode(),
+                    2,
+                    BigDecimal.ZERO,
+                    null,
+                    systemProfitId);
+            dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+            dappWalletService.updateWalletMineWithLock(averagePerkFourCnt.subtract(averagePerkFourCntAva),
+                    1L,1);
+        }
         DappFundFlowEntity nodeFourFundFlow = new DappFundFlowEntity(
                 1L,
                 averagePerkFourCnt,
@@ -1183,7 +1287,21 @@
         BigDecimal averagePerkFive = nodeFiveDicPerk.getAveragePerk();
         BigDecimal averagePerkFiveCnt = amountTC.multiply(averagePerkFive).setScale(4, BigDecimal.ROUND_DOWN);
 
-        nodePoolPerk(averagePerkFiveCnt, MemberLevelEnum.NODE_5.getType(), FundFlowEnum.DAO_5_NODE_PERK.getCode());
+        BigDecimal averagePerkFiveCntAva = nodePoolPerk(averagePerkFiveCnt, MemberLevelEnum.NODE_5.getType(), FundFlowEnum.DAO_5_NODE_PERK.getCode());
+        //用户的A币账户增加divide数量
+        if(averagePerkFiveCnt.compareTo(averagePerkFiveCntAva) > 0){
+            DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+                    1L,
+                    averagePerkFiveCnt.subtract(averagePerkFiveCntAva),
+                    FundFlowEnum.DAO_5_NODE_PERK.getCode(),
+                    2,
+                    BigDecimal.ZERO,
+                    null,
+                    systemProfitId);
+            dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+            dappWalletService.updateWalletMineWithLock(averagePerkFiveCnt.subtract(averagePerkFiveCntAva),
+                    1L,1);
+        }
         DappFundFlowEntity nodeFiveFundFlow = new DappFundFlowEntity(
                 1L,
                 averagePerkFiveCnt,
@@ -1210,7 +1328,21 @@
         BigDecimal nodeFiveEquals = new BigDecimal(nodeFiveEqualsDic.getValue());
         BigDecimal nodeFiveEqualsCnt = amountTC.multiply(nodeFiveEquals).setScale(4, BigDecimal.ROUND_DOWN);
 
-        nodePoolEqualsPerk(nodeFiveEqualsCnt, MemberLevelEnum.NODE_5.getType(), FundFlowEnum.DAO_5_NODE_EQUALS_PERK.getCode());
+        BigDecimal nodeFiveEqualsCntAva = nodePoolEqualsPerk(nodeFiveEqualsCnt, MemberLevelEnum.NODE_5.getType(), FundFlowEnum.DAO_5_NODE_EQUALS_PERK.getCode());
+        //用户的A币账户增加divide数量
+        if(nodeFiveEqualsCnt.compareTo(nodeFiveEqualsCntAva) > 0){
+            DappFundFlowEntity nodeAPercentFundFlowAva = new DappFundFlowEntity(
+                    1L,
+                    nodeFiveEqualsCnt.subtract(nodeFiveEqualsCntAva),
+                    FundFlowEnum.DAO_5_NODE_EQUALS_PERK.getCode(),
+                    2,
+                    BigDecimal.ZERO,
+                    null,
+                    systemProfitId);
+            dappFundFlowDao.insert(nodeAPercentFundFlowAva);
+            dappWalletService.updateWalletMineWithLock(nodeFiveEqualsCnt.subtract(nodeFiveEqualsCntAva),
+                    1L,1);
+        }
         DappFundFlowEntity nodeFiveEqualsFundFlow = new DappFundFlowEntity(
                 1L,
                 nodeFiveEqualsCnt,
@@ -1375,6 +1507,7 @@
 
     @Override
     public void selectAndInsertDics() {
+        selectAndInsertDic(PoolEnum.ANDAO_MEMBER_TO_MENBER_PERCENT.getType(),PoolEnum.ANDAO_MEMBER_TO_MENBER_PERCENT.getCode(),"0.2","ANDAO互转20%");
         selectAndInsertDic(PoolEnum.TRANSFER_A_AUSD_PRICE.getType(),PoolEnum.TRANSFER_A_AUSD_PRICE.getCode(),"0.01","AUSD价格");
         selectAndInsertDic(PoolEnum.TRANSFER_A_AUSD_PERCENT.getType(),PoolEnum.TRANSFER_A_AUSD_PERCENT.getCode(),"0.1","买入A,10%的AUSD比例");
         selectAndInsertDic(PoolEnum.WALLET_COIN_OUT_PERCENT.getType(),PoolEnum.WALLET_COIN_OUT_PERCENT.getCode(),"0.3","30%回流底池溢价");
@@ -1448,7 +1581,11 @@
             return;
         }
         //金额
-        BigDecimal amount = dappFundFlowEntity.getAmount();
+        BigDecimal amount = dappFundFlowEntity.getAmount().setScale(4,BigDecimal.ROUND_DOWN).negate();
+        log.info("amount:{}",amount);
+        if(BigDecimal.ZERO.compareTo(amount) >= 0){
+            return;
+        }
 
         Long memberId = dappFundFlowEntity.getMemberId();
         DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
@@ -1458,14 +1595,14 @@
          * 发起USDT转账
          */
         log.info("amount:{},address:{}",amount,address);
-//        String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL.name()).transfer(address, amount);
-//        if(StrUtil.isEmpty(hash)){
-//            return;
-//        }
-//        log.info("{},{}",id,hash);
-//        dappFundFlowEntity.setFromHash(hash);
-//        dappFundFlowEntity.setStatus(2);
-//        dappFundFlowDao.updateById(dappFundFlowEntity);
+        String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL.name()).transfer(address, amount);
+        if(StrUtil.isEmpty(hash)){
+            return;
+        }
+        log.info("{},{}",id,hash);
+        dappFundFlowEntity.setFromHash(hash);
+        dappFundFlowEntity.setStatus(2);
+        dappFundFlowDao.updateById(dappFundFlowEntity);
     }
 
     @Override
@@ -1583,11 +1720,15 @@
         );
 
         BigDecimal coinAPrice = new BigDecimal(dataDictionaryCustom.getValue());
-        DateTime dateTime = DateUtil.offsetHour(DateUtil.date(), -1);
-        String format = DateUtil.format(dateTime, "yyyy-MM-dd HH");
-        List<String> dataDayStrList = new ArrayList<>();
-        dataDayStrList.add(format);
-        List<DappAKlineEntity> dappAKlineEntities = dappAKlineMapper.selectListByTypeAndHour(dataDayStrList);
+        /**
+         * 查询出上一条更新的小时数据
+         */
+        DappAKlineEntity minRecord = dappAKlineMapper.selectOneHourByType();
+        if(ObjectUtil.isEmpty(minRecord)){
+            minRecord = dappAKlineMapper.selectOneByType();
+        }
+        DappAKlineEntity maxRecord = dappAKlineMapper.selectOneByType();
+        List<DappAKlineEntity> dappAKlineEntities = dappAKlineMapper.selectListByIds(minRecord.getId(),maxRecord.getId());
 
         DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
         dappAKlineEntity.setType(1);
@@ -1775,6 +1916,45 @@
 
     }
 
+    @Override
+    public void antKLineABMsg(Long id) {
+        log.info("{}",id);
+        //获取对应的流水记录
+        DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectInfoById(id);
+        if(ObjectUtil.isEmpty(dappFundFlowEntity)){
+            return;
+        }
+        Long memberId = dappFundFlowEntity.getMemberId();
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+        if(ObjectUtil.isEmpty(dappMemberEntity)){
+            return;
+        }
+        DappFundFlowEntity dappFundFlow = dappFundFlowDao.selectById(id);
+        //金额
+        BigDecimal amount = dappFundFlow.getAmount();
+        //目标地址
+        String address = null;
+        if(5 == dappFundFlowEntity.getType()){
+            address = AppContants.ADDRESS_A_POOL_PEOJECT;
+        }else if(6 == dappFundFlowEntity.getType()){
+            address = AppContants.ADDRESS_B_POOL_PEOJECT;
+        }else{
+            return;
+        }
+        /**
+         * 发起USDT转账
+         */
+        String hash = ChainService.getInstance(ChainEnum.BSC_USDT_A_POOL.name()).transfer(address, amount);
+        if(StrUtil.isEmpty(hash)){
+            return;
+        }
+        log.info("{},{}",id,hash);
+        dappFundFlow.setFromHash(hash);
+        dappFundFlow.setStatus(2);
+        dappFundFlowDao.updateById(dappFundFlow);
+
+    }
+
     /**
      * 生成当前分钟的k线数据,type为0
      */
@@ -1793,8 +1973,9 @@
         DappAKlineEntity oldOne = dappAKlineMapper.selectOneByType();
         if(ObjectUtil.isNotEmpty(oldOne)){
             dappAKlineEntity.setOpenPrice(oldOne.getClosePrice());
+        }else{
+            dappAKlineEntity.setOpenPrice(coinAPrice);
         }
-        dappAKlineEntity.setOpenPrice(coinAPrice);
         dappAKlineEntity.setLowestPrice(coinAPrice);
         dappAKlineEntity.setHighestPrice(coinAPrice);
         dappAKlineEntity.setClosePrice(coinAPrice);
@@ -1802,13 +1983,13 @@
 
     }
 
-    public static void main(String[] args) {
-
-        int month = DateUtil.dayOfMonth(DateUtil.date());
-        String s = DateUtil.dayOfWeekEnum(DateUtil.date()).toChinese();
-        System.out.println(s);
-        System.out.println(month);
-    }
+//    public static void main(String[] args) {
+//
+//        int month = DateUtil.dayOfMonth(DateUtil.date());
+//        String s = DateUtil.dayOfWeekEnum(DateUtil.date()).toChinese();
+//        System.out.println(s);
+//        System.out.println(month);
+//    }
 
     /**
      * 判断直推人数是否达标

--
Gitblit v1.9.1