From a580b5a79d7d00872455d5d12c4e15b0aaac224c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 18 Mar 2024 11:22:58 +0800
Subject: [PATCH] 抽奖

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 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..a89a75c 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
@@ -315,6 +315,12 @@
 
         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,9 +579,16 @@
                     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");
@@ -587,11 +600,19 @@
                     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