From de272f760b766b7b950e92ae3e730f2b8d801b8d Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 31 May 2023 11:13:41 +0800
Subject: [PATCH] twoCoin项目修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |  147 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 115 insertions(+), 32 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 7ef6a95..d0f307c 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
@@ -623,7 +623,7 @@
                 PoolEnum.COIN_A_PRICE.getType(),
                 PoolEnum.COIN_A_PRICE.getCode()
         );
-        BigDecimal coinAPrice = new BigDecimal(StrUtil.isEmpty(coinAPriceDic.getValue()) ? "0" : coinAPriceDic.getValue()).setScale(8,BigDecimal.ROUND_DOWN);
+        BigDecimal coinAPrice = new BigDecimal(StrUtil.isEmpty(coinAPriceDic.getValue()) ? "0" : coinAPriceDic.getValue()).setScale(12,BigDecimal.ROUND_DOWN);
         /**
          * 会员充值USDT买入A币记录的ID
          */
@@ -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(),
+                2,
+                BigDecimal.ZERO,
+                null,
+                chergeRecordId);
+        dappFundFlowDao.insert(amountPerkFundFlow);
+
         //增加业绩
         BigDecimal achieveAmount = dappUsdtPerkEntity.getAchieveAmount();
         achieveAmount = achieveAmount.add(amount);
@@ -740,7 +751,7 @@
         coinAUsdtPriceDic.setValue(coinAUsdtPriceDicCnt.toString());
         dataDictionaryCustomMapper.updateById(coinAUsdtPriceDic);
 
-        BigDecimal divide = coinAUsdtPriceDicCnt.divide(coinACntDicCnt, 8, BigDecimal.ROUND_DOWN);
+        BigDecimal divide = coinAUsdtPriceDicCnt.divide(coinACntDicCnt, 12, BigDecimal.ROUND_DOWN);
         coinAPriceDic.setValue(divide.toString());
         dataDictionaryCustomMapper.updateById(coinAPriceDic);
 
@@ -998,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
@@ -1460,25 +1479,26 @@
     public BigDecimal superNodePoolPerk(BigDecimal nodeFivePoolDicCnt, String code, int code1) {
         BigDecimal realPerkAmount = BigDecimal.ZERO;
         //获取type级别的会员
-        List<DappMemberNodeEntity> dappMemberNodeEntities = dappMemberNodeMapper.selectNodeByNodeCode(NodeCodeEnum.SUPER_NODE.getCode());
+//        List<DappMemberNodeEntity> dappMemberNodeEntities = dappMemberNodeMapper.selectNodeByNodeCode(NodeCodeEnum.SUPER_NODE.getCode());
+        List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectByNodetype();
         //每日补贴总数
 //        BigDecimal nodePerk = nodeFivePoolDicCnt.multiply(AppContants.NODE_PERK_PERCENT);
         BigDecimal nodePerk = nodeFivePoolDicCnt;
-        if(CollUtil.isNotEmpty(dappMemberNodeEntities)){
+        if(CollUtil.isNotEmpty(dappMemberEntities)){
             //每人的补贴
-            BigDecimal averagePerk = nodePerk.divide(new BigDecimal(dappMemberNodeEntities.size()), 4, BigDecimal.ROUND_DOWN);
+            BigDecimal averagePerk = nodePerk.divide(new BigDecimal(dappMemberEntities.size()), 4, BigDecimal.ROUND_DOWN);
 
-            for(DappMemberNodeEntity dappMemberNodeEntity : dappMemberNodeEntities){
+            for(DappMemberEntity dappMemberEntitie : dappMemberEntities){
 
                 DappFundFlowEntity fundFlowToMember = new DappFundFlowEntity(
-                        dappMemberNodeEntity.getMemberId(),
+                        dappMemberEntitie.getId(),
                         averagePerk,
                         code1,
                         2,
                         BigDecimal.ZERO);
                 dappFundFlowDao.insert(fundFlowToMember);
                 //用户的A币账户增加memberGetACnt数量
-                dappWalletService.updateWalletMineWithLock(averagePerk,dappMemberNodeEntity.getMemberId(),1);
+                dappWalletService.updateWalletMineWithLock(averagePerk,dappMemberEntitie.getId(),1);
 
                 realPerkAmount = realPerkAmount.add(averagePerk);
             }
@@ -1488,6 +1508,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%回流底池溢价");
@@ -1561,7 +1582,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);
@@ -1636,11 +1661,29 @@
         DataDictionaryCustom coinAPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                 PoolEnum.COIN_A_PRICE.getType(),
                 PoolEnum.COIN_A_PRICE.getCode());
-        BigDecimal coinAPrice = coinAUsdt.divide(coinACnt,8,BigDecimal.ROUND_DOWN);
+
+        BigDecimal coinAPrice = coinAUsdt.divide(coinACnt,12,BigDecimal.ROUND_DOWN);
         coinAPriceDic.setValue(coinAPrice.toString());
         dataDictionaryCustomMapper.updateById(coinAPriceDic);
-
-        chainProducer.sendAntKLineMsg(0);
+        /**
+         * 增加K线数据
+         */
+        DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
+        dappAKlineEntity.setType(0);
+        /**
+         * 获取最新一条小时或者分钟的数据
+         */
+        DappAKlineEntity oldOne = dappAKlineMapper.selectOneByType();
+        if(ObjectUtil.isNotEmpty(oldOne)){
+            dappAKlineEntity.setOpenPrice(oldOne.getClosePrice());
+            dappAKlineEntity.setLowestPrice(oldOne.getClosePrice());
+        }else{
+            dappAKlineEntity.setOpenPrice(coinAPrice);
+            dappAKlineEntity.setLowestPrice(coinAPrice);
+        }
+        dappAKlineEntity.setHighestPrice(coinAPrice);
+        dappAKlineEntity.setClosePrice(coinAPrice);
+        dappAKlineMapper.insert(dappAKlineEntity);
     }
 
     @Override
@@ -1696,11 +1739,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.selectOneByTypeAsc();
+        }
+        DappAKlineEntity maxRecord = dappAKlineMapper.selectOneByType();
+        List<DappAKlineEntity> dappAKlineEntities = dappAKlineMapper.selectListByIds(minRecord.getId(),maxRecord.getId());
 
         DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
         dappAKlineEntity.setType(1);
@@ -1722,12 +1769,7 @@
             dappAKlineEntity.setHighestPrice(coinAPrice);
             dappAKlineEntity.setLowestPrice(coinAPrice);
         }
-        DappAKlineEntity oldOne = dappAKlineMapper.selectOneByType();
-        if(ObjectUtil.isNotEmpty(oldOne)){
-            dappAKlineEntity.setClosePrice(oldOne.getClosePrice());
-        }else{
-            dappAKlineEntity.setClosePrice(coinAPrice);
-        }
+        dappAKlineEntity.setClosePrice(coinAPrice);
         dappAKlineMapper.insert(dappAKlineEntity);
 
         chainProducer.sendAntKLineMsg(1);
@@ -1888,6 +1930,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
      */
@@ -1906,22 +1987,24 @@
         DappAKlineEntity oldOne = dappAKlineMapper.selectOneByType();
         if(ObjectUtil.isNotEmpty(oldOne)){
             dappAKlineEntity.setOpenPrice(oldOne.getClosePrice());
+            dappAKlineEntity.setLowestPrice(oldOne.getClosePrice());
+        }else{
+            dappAKlineEntity.setOpenPrice(coinAPrice);
+            dappAKlineEntity.setLowestPrice(coinAPrice);
         }
-        dappAKlineEntity.setOpenPrice(coinAPrice);
-        dappAKlineEntity.setLowestPrice(coinAPrice);
         dappAKlineEntity.setHighestPrice(coinAPrice);
         dappAKlineEntity.setClosePrice(coinAPrice);
         dappAKlineMapper.insert(dappAKlineEntity);
 
     }
 
-    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