From 0478dd656cb551b6d94d1b124fcd2ee7987807c5 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Tue, 19 Mar 2024 10:09:06 +0800
Subject: [PATCH] 抽奖

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 60bf5ca..88126a3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -299,6 +299,7 @@
         mallMemberVo.setFcmCntFrozen(mallMemberAmount.getFcmCntFrozen());
         mallMemberVo.setTokenAva(mallMemberAmount.getTokenAva());
         mallMemberVo.setTokenFrozen(mallMemberAmount.getTokenFrozen());
+        mallMemberVo.setTotalPerk(mallMemberAmount.getTotalPerk());
         DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                 DataDictionaryEnum.YU_YUE_START_TIME.getType(),
                 DataDictionaryEnum.YU_YUE_START_TIME.getCode()
@@ -313,8 +314,14 @@
         Integer pickCount = mallProductBuyMapper.selectListByMemberIdAndState(id);
         mallMemberVo.setPickCount(pickCount);
 
-        BigDecimal totalPerk = mallProductBuyMapper.selectTotalPerkByMemberId(mallMember.getId());
-        mallMemberVo.setTotalPerk(totalPerk);
+//        BigDecimal totalPerk = mallProductBuyMapper.selectTotalPerkByMemberId(mallMember.getId());
+//        mallMemberVo.setTotalPerk(totalPerk);
+
+        DataDictionaryCustom insideNFTPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(),
+                DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode()
+        );
+        mallMemberVo.setInsideNFTPercent(insideNFTPercentDic.getValue());
         return new FebsResponse().success().data(mallMemberVo);
     }
 
@@ -573,25 +580,40 @@
                     MoneyFlowTypeNewEnum.TOKEN_INSIDE_IN.getDescrition());
         }
         if(3 == type){
+            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                    DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(),
+                    DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode()
+            );
+            BigDecimal feePercent = new BigDecimal("0.01").multiply(new BigDecimal(dataDictionaryCustom.getValue()));
             if (amount.compareTo(mallMemberAmountLogin.getTrendsNft()) > 0) {
                 throw new FebsException("卡牌不足");
             }
+            BigDecimal fee = amount.multiply(feePercent).setScale(2,BigDecimal.ROUND_DOWN);
+            BigDecimal amountReal = amount.subtract(fee);
             mallMemberAmountLogin.setTrendsNft(mallMemberAmountLogin.getTrendsNft().subtract(amount));
             mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountLogin);
             String orderNo = MallUtils.getOrderNum("NFT");
             mallMoneyFlowService.addMoneyFlow(
                     loginMember.getId(),
-                    amount.negate(),
+                    amountReal.negate(),
                     MoneyFlowTypeNewEnum.NFT_TRANS_OUT.getValue(),
                     orderNo,
                     mallMember.getId(),
                     FlowTypeNewEnum.NFT.getValue(),
                     MoneyFlowTypeNewEnum.NFT_TRANS_OUT.getDescrition());
-            mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(amount));
+            mallMoneyFlowService.addMoneyFlow(
+                    loginMember.getId(),
+                    fee.negate(),
+                    MoneyFlowTypeNewEnum.NFT_TRANS_OUT_FEE.getValue(),
+                    orderNo,
+                    mallMember.getId(),
+                    FlowTypeNewEnum.NFT.getValue(),
+                    MoneyFlowTypeNewEnum.NFT_TRANS_OUT_FEE.getDescrition());
+            mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(amountReal));
             mallMemberAmountMapper.updateTrendsNftById(mallMemberAmount);
             mallMoneyFlowService.addMoneyFlow(
                     mallMember.getId(),
-                    amount,
+                    amountReal,
                     MoneyFlowTypeNewEnum.NFT_TRANS_IN.getValue(),
                     orderNo,
                     loginMember.getId(),

--
Gitblit v1.9.1