From 09c3fd87f7113f3b4e3066b718f9b9a4b11d821d Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 10 Aug 2023 15:51:15 +0800
Subject: [PATCH] 数据修改

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |   88 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 88 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 1f10d5c..0d10774 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -37,6 +37,7 @@
 import org.web3j.utils.Strings;
 
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -777,6 +778,93 @@
         chainProducer.sendAutoLevelUpTeamMsg(member.getId());
     }
 
+    @Override
+    public FebsResponse packageInfo() {
+        Long memberId = LoginUserUtil.getAppUser().getId();
+        PackageInfoVo packageInfoVo = new PackageInfoVo();
+        DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+        );
+        BigDecimal packageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "0" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        packageInfoVo.setPackageTotalScore(packageTotalScore);
+
+        DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+        );
+        BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        packageInfoVo.setPackageScorePrice(packageScorePrice);
+
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+        BigDecimal balance = dappMemberEntity.getBalance();
+        packageInfoVo.setPackageMemberScore(balance);
+        return new FebsResponse().success().data(packageInfoVo);
+    }
+
+    @Override
+    public FebsResponse salePackage(SalePackageDto salePackageDto) {
+        Long memberId = LoginUserUtil.getAppUser().getId();
+        BigDecimal cnt = salePackageDto.getCnt();
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+        BigDecimal balance = dappMemberEntity.getBalance();
+        if(BigDecimal.ZERO.compareTo(cnt) >= 0){
+            throw new FebsException("资产不足");
+        }
+        if(cnt.compareTo(balance) > 0){
+            throw new FebsException("资产不足");
+        }
+        DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+        );
+        BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        //卖出资产乘以价格获取到预期获取的总额
+        BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+        //资产包卖出划入底池比例
+        DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
+                DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
+        );
+        BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        //划入底池的金额
+        BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+        //生成一条资金流水
+        DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+                memberId,
+                totalAmount.subtract(poorAmount),
+                FundFlowEnum.SALE_PACKAGE.getCode(),
+                DappFundFlowEntity.WITHDRAW_STATUS_ING,
+                poorAmount);
+        dappFundFlowDao.insert(scoreFlow);
+
+
+        //卖出积分直接销毁。
+        DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+        );
+        BigDecimal packageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal avaPackageTotalScore = packageTotalScore.subtract(cnt);
+        packageTotalScoreDic.setValue(avaPackageTotalScore.toString());
+        dataDictionaryCustomMapper.updateById(packageTotalScoreDic);
+        //更新USDT底池
+        DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PACKAGE_POOR.getType(),
+                DataDictionaryEnum.PACKAGE_POOR.getCode()
+        );
+        BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
+        packagePoorDic.setValue(avaPackagePoor.toString());
+        dataDictionaryCustomMapper.updateById(packagePoorDic);
+        //计算当前价格
+        BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 2, BigDecimal.ROUND_DOWN);
+        packageScorePriceDic.setValue(divide.toString());
+        dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+
+        return null;
+    }
+
     public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
         List<List<String>> partitionedList = new ArrayList<>();
         int size = originalList.size();

--
Gitblit v1.9.1