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/vo/MallMemberVo.java                       |    2 ++
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java       |    2 ++
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java     |    1 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   25 +++++++++++++++++++++++--
 4 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index ffdec99..6d7e4d1 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,6 +5,8 @@
 
 @Getter
 public enum DataDictionaryEnum {
+    //卡牌互转手续费
+    FCM_INSIDE_NFT_PERCENT("FCM_INSIDE_NFT_PERCENT","FCM_INSIDE_NFT_PERCENT"),
     //销毁数量 按照比例销毁或者返利给节点
     FCM_DESTORY_TOTAL_PERCENT("FCM_DESTORY_TOTAL_PERCENT","FCM_DESTORY_TOTAL_PERCENT"),
     FCM_DESTORY_POINT_PERCENT("FCM_DESTORY_POINT_PERCENT","FCM_DESTORY_POINT_PERCENT"),
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
index 1112efb..95e17d8 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
@@ -11,6 +11,7 @@
 @Getter
 public enum MoneyFlowTypeNewEnum {
 
+    NFT_TRANS_OUT_FEE(31,"卡牌转出手续费"),
     NFT_TRANS_IN(30,"卡牌转入"),
     NFT_TRANS_OUT(29,"卡牌转出"),
     PERK_POINT(28,"节点收益"),
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(),
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index 16430ae..78b9e28 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -116,5 +116,7 @@
 
     @ApiModelProperty(value = "收益总额")
     private BigDecimal totalPerk;
+    @ApiModelProperty(value = "卡牌互转手续费")
+    private String insideNFTPercent;
 
 }

--
Gitblit v1.9.1