From 22316f91223df0535d67bdc34deeb9d4cb4fbf71 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 05 Jan 2024 15:14:57 +0800
Subject: [PATCH] 团队列表

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java |   63 +++++++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java           |    2 
 src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java         |    2 +
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java      |    2 +
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java    |    7 +++
 src/main/java/cc/mrbird/febs/mall/dto/ApiGfdTransDto.java                     |   30 +++++++++++++++
 6 files changed, 105 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java
index eac432f..381519a 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java
@@ -5,7 +5,7 @@
 @Getter
 public enum FlowTypeNewEnum {
 
-    GSD(4,"GSD"),
+    GSD(4,"GFD"),
     NFT(3,"NFT"),
     TOKEN(2,"门票"),
     FCM_COIN(1,"GFA代币")//
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 e8ba5d0..bf71bad 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,8 @@
 @Getter
 public enum MoneyFlowTypeNewEnum {
 
+    GSD_GFA(26,"GFD兑换GFA"),
+    GSD_NFT(25,"GFD兑换NFT"),
     GFA_GSD(24,"GFA兑换GFD"),
     NFT_GSD(23,"NFT兑换GFD"),
     TEAM_PERK_EQUALS_DONE(22,"平级奖励"),
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java
index 152263d..9e96c3a 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java
@@ -127,6 +127,13 @@
         return iApiMallProductService.transGfd(transGfdDto);
     }
 
+
+    @ApiOperation(value = "FCM-GFD兑换NFT,GFD兑换GFA", notes = "FCM-GFD兑换NFT,GFD兑换GFA")
+    @PostMapping(value = "/gfdTrans")
+    public FebsResponse gfdTrans(@RequestBody @Valid ApiGfdTransDto transGfdDto) {
+        return iApiMallProductService.gfdTrans(transGfdDto);
+    }
+
     @ApiOperation(value = "FCM-NFT提现", notes = "FCM-NFT提现")
     @PostMapping(value = "/outNFT")
     public FebsResponse outNFT(@RequestBody @Valid ApiOutNFTDto outNFTDto) {
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiGfdTransDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiGfdTransDto.java
new file mode 100644
index 0000000..0a06de9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiGfdTransDto.java
@@ -0,0 +1,30 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+@Data
+@ApiModel(value = "ApiGfdTransDto", description = "请求类")
+public class ApiGfdTransDto {
+
+    @Valid
+    @NotNull(message = "数量不能为空")
+    @Min(0)
+    @ApiModelProperty(value = "兑换数量", example = "1")
+    private BigDecimal cnt;
+
+    @NotNull(message = "类型不能为空")
+    @ApiModelProperty(value = "类型 1:GFD兑换NFT, 2:GFD兑换GFA", example = "1")
+    private Integer type;
+
+    @NotBlank(message = "交易密码不能为空")
+    @ApiModelProperty(value = "交易密码", example = "1")
+    private String tradePassword;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java
index edd1edb..a2a32c2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java
@@ -41,4 +41,6 @@
     FebsResponse orderBuyRecord(ApiOrderBuyInfoDto apiOrderBuyInfoDto);
 
     FebsResponse transGfd(ApiTransGfdDto transGfdDto);
+
+    FebsResponse gfdTrans(ApiGfdTransDto transGfdDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
index 73143de..7b39e38 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
@@ -767,4 +767,67 @@
         }
         return new FebsResponse().success();
     }
+
+    @Override
+    @Transactional
+    public FebsResponse gfdTrans(ApiGfdTransDto transGfdDto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        BigDecimal cnt = transGfdDto.getCnt();//兑换数量
+
+        MallMember mallMember = memberMapper.selectById(memberId);
+        String tradePassword = SecureUtil.md5(transGfdDto.getTradePassword());
+        Boolean aBoolean = operationPermissionMemberFrozen(memberId);
+        if(aBoolean){
+            throw new FebsException("用户已冻结");
+        }
+        if(!tradePassword.equals(mallMember.getTradePassword())){
+            throw new FebsException("请输入正确的交易密码");
+        }
+        MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId);
+        BigDecimal gsd = mallMemberAmount.getGsd();
+        if(BigDecimal.ZERO.compareTo(gsd) >= 0){
+            throw new FebsException("积分不足");
+        }
+        if(cnt.compareTo(gsd) > 0){
+            throw new FebsException("积分不足");
+        }
+        Integer type = transGfdDto.getType();
+        String orderNo = MallUtils.getOrderNum("GSD");
+        if(1 == type){//GFD兑换NFT
+            BigDecimal trendsNft = mallMemberAmount.getTrendsNft();
+            mallMemberAmount.setTrendsNft(trendsNft.add(cnt));
+            mallMemberAmount.setGsd(mallMemberAmount.getGsd().subtract(cnt));
+            mallMemberAmountMapper.updateTrendsNftAndGsdById(mallMemberAmount);
+            iMallMoneyFlowService.addMoneyFlow(
+                    memberId,
+                    cnt,
+                    MoneyFlowTypeNewEnum.GSD_NFT.getValue(),
+                    orderNo,
+                    mallMember.getId(),
+                    FlowTypeNewEnum.GSD.getValue(),
+                    MoneyFlowTypeNewEnum.GSD_NFT.getDescrition());
+
+        }
+        if(2 == type){//GFD兑换GFA
+            BigDecimal fcmCntAva = mallMemberAmount.getFcmCntAva();
+            DataDictionaryCustom fcmPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                    DataDictionaryEnum.FCM_PRICE.getType(),
+                    DataDictionaryEnum.FCM_PRICE.getCode());
+            BigDecimal fcmPrice = ObjectUtil.isEmpty(fcmPriceDic) ? new BigDecimal(2) : new BigDecimal(fcmPriceDic.getValue());
+            BigDecimal gsdCnt = cnt.divide(fcmPrice,2,BigDecimal.ROUND_DOWN);
+            mallMemberAmount.setFcmCntAva(fcmCntAva.add(gsdCnt));
+            mallMemberAmount.setGsd(mallMemberAmount.getGsd().subtract(cnt));
+            mallMemberAmountMapper.updateFcmCntAvaAndGsdById(mallMemberAmount);
+            iMallMoneyFlowService.addMoneyFlow(
+                    memberId,
+                    cnt,
+                    MoneyFlowTypeNewEnum.GSD_GFA.getValue(),
+                    orderNo,
+                    mallMember.getId(),
+                    FlowTypeNewEnum.GSD.getValue(),
+                    MoneyFlowTypeNewEnum.GSD_GFA.getDescrition());
+
+        }
+        return new FebsResponse().success();
+    }
 }

--
Gitblit v1.9.1