From 66e80ddd501b68cdbb7426d92707d9417c828703 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 04 Jan 2024 15:47:19 +0800
Subject: [PATCH] 团队列表

---
 src/main/java/cc/mrbird/febs/mall/entity/MallMemberAmount.java                  |    1 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java   |   67 ++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   26 +++++---
 src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java             |    1 
 src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java           |    2 
 src/main/resources/mapper/modules/MallMemberAmountMapper.xml                    |   23 +++++++
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java        |    2 
 src/main/java/cc/mrbird/febs/mall/dto/ApiTransGfdDto.java                       |   31 ++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java      |    7 ++
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java            |    5 +
 10 files changed, 154 insertions(+), 11 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 8ad44be..eac432f 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java
@@ -5,6 +5,7 @@
 @Getter
 public enum FlowTypeNewEnum {
 
+    GSD(4,"GSD"),
     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 5ffe2ab..33ac295 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 {
 
+    GFA_GSD(24,"GFA兑换GSD"),
+    NFT_GSD(23,"NFT兑换GSD"),
     TEAM_PERK_EQUALS_DONE(22,"平级奖励"),
     TEAM_PERK_DIRECT_DONE(21,"团队奖励"),
 
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 37e9f2f..152263d 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java
@@ -120,6 +120,13 @@
         return iApiMallProductService.outFcm(outFcmDto);
     }
 
+
+    @ApiOperation(value = "FCM-NFT兑换GFD,GFA兑换GFD", notes = "FCM-NFT兑换GFD,GFA兑换GFD")
+    @PostMapping(value = "/transGfd")
+    public FebsResponse transGfd(@RequestBody @Valid ApiTransGfdDto transGfdDto) {
+        return iApiMallProductService.transGfd(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/ApiTransGfdDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiTransGfdDto.java
new file mode 100644
index 0000000..68d3705
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiTransGfdDto.java
@@ -0,0 +1,31 @@
+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 = "ApiTransGfdDto", description = "请求类")
+public class ApiTransGfdDto {
+
+    @Valid
+    @NotNull(message = "数量不能为空")
+    @Min(0)
+    @ApiModelProperty(value = "兑换数量", example = "1")
+    private BigDecimal cnt;
+
+    @NotNull(message = "类型不能为空")
+    @ApiModelProperty(value = "类型 1:NFT兑换GFD 2:GFA兑换GFD", example = "1")
+    private Integer type;
+
+    @NotBlank(message = "交易密码不能为空")
+    @ApiModelProperty(value = "交易密码", example = "1")
+    private String tradePassword;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberAmount.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberAmount.java
index 10f661e..c93e52c 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberAmount.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberAmount.java
@@ -36,4 +36,5 @@
     private BigDecimal fcmCntFrozen;//FCM代币冻结
     private BigDecimal tokenAva;//令牌可用
     private BigDecimal tokenFrozen;//令牌冻结
+    private BigDecimal gsd;//gsd积分-用来商城购物
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java
index 097af8b..a297e5e 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberAmountMapper.java
@@ -17,8 +17,13 @@
     void updateTokenAvaAndTokenFrozenById(@Param("record")MallMemberAmount mallMemberAmount);
 
     void updateTrendsNftById(@Param("record")MallMemberAmount mallMemberAmount);
+    void updateGsdById(@Param("record")MallMemberAmount mallMemberAmount);
 
     void updateFrozenNftById(@Param("record")MallMemberAmount mallMemberAmount);
 
     void updateTrendsNftAndFrozenNftById(@Param("record")MallMemberAmount mallMemberAmount);
+
+    void updateTrendsNftAndGsdById(@Param("record")MallMemberAmount mallMemberAmount);
+
+    void updateFcmCntAvaAndGsdById(@Param("record")MallMemberAmount mallMemberAmount);
 }
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 f444c88..edd1edb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java
@@ -39,4 +39,6 @@
     FebsResponse orderSellRecord(ApiOrderSellInfoDto apiOrderSellInfoDto);
 
     FebsResponse orderBuyRecord(ApiOrderBuyInfoDto apiOrderBuyInfoDto);
+
+    FebsResponse transGfd(ApiTransGfdDto transGfdDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 867f3b5..13c68fa 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -87,6 +87,7 @@
     private final MallProductSellRecordMapper mallProductSellRecordMapper;
 
     private final ICommonService commonService;
+    private final MallMemberAmountMapper mallMemberAmountMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -351,22 +352,25 @@
                 orderInfo.setPayTime(new Date());
                 orderInfo.setPayResult("1");
                 this.baseMapper.updateById(orderInfo);
+                MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(member.getId());
+                mallMemberAmount.setGsd(mallMemberAmount.getGsd().subtract(orderInfo.getAmount()));
+                mallMemberAmountMapper.updateGsdById(mallMemberAmount);
 
-                commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue());
+//                commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue());
                 /**
                  * 插入一条待处理记录
                  * mq处理之后,更新状态
                  */
-                MallMqRecord mallMqRecord = new MallMqRecord();
-                mallMqRecord.setOrderId(orderInfo.getId());
-                mallMqRecord.setState(2);
-                mallMqRecord.setRetryTimes(2);
-                mallMqRecord.setCreateTime(orderInfo.getPayTime());
-                mallMqRecordMapper.insert(mallMqRecord);
-                //发送补贴消息
-                agentProducer.sendPerkMoneyMsg(orderInfo.getId());
-                //发送代理自动升级消息
-                agentProducer.sendAutoLevelUpMsg(member.getId());
+//                MallMqRecord mallMqRecord = new MallMqRecord();
+//                mallMqRecord.setOrderId(orderInfo.getId());
+//                mallMqRecord.setState(2);
+//                mallMqRecord.setRetryTimes(2);
+//                mallMqRecord.setCreateTime(orderInfo.getPayTime());
+//                mallMqRecordMapper.insert(mallMqRecord);
+//                //发送补贴消息
+//                agentProducer.sendPerkMoneyMsg(orderInfo.getId());
+//                //发送代理自动升级消息
+//                agentProducer.sendAutoLevelUpMsg(member.getId());
                 break;
             case "4":
                 if (orderInfo.getOrderType() != 2) {
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 1d12048..c2f8832 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
@@ -699,4 +699,71 @@
         ApiOrderBuyRecordInfoVo apiOrderBuyRecordInfoVo = mallProductBuyRecordMapper.selectByBuyRecordId(productBuyRecordId);
         return new FebsResponse().success().data(apiOrderBuyRecordInfoVo);
     }
+
+    @Override
+    public FebsResponse transGfd(ApiTransGfdDto 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);
+        Integer type = transGfdDto.getType();
+        String orderNo = MallUtils.getOrderNum("GSD");
+        if(1 == type){//NFT兑换GFD
+            BigDecimal trendsNft = mallMemberAmount.getTrendsNft();
+            if(BigDecimal.ZERO.compareTo(trendsNft) >= 0){
+                throw new FebsException("NFT不足");
+            }
+            if(cnt.compareTo(trendsNft) > 0){
+                throw new FebsException("NFT不足");
+            }
+            mallMemberAmount.setTrendsNft(trendsNft.subtract(cnt));
+            mallMemberAmount.setGsd(mallMemberAmount.getGsd().add(cnt));
+            mallMemberAmountMapper.updateTrendsNftAndGsdById(mallMemberAmount);
+            iMallMoneyFlowService.addMoneyFlow(
+                    memberId,
+                    cnt,
+                    MoneyFlowTypeNewEnum.NFT_GSD.getValue(),
+                    orderNo,
+                    mallMember.getId(),
+                    FlowTypeNewEnum.GSD.getValue(),
+                    MoneyFlowTypeNewEnum.NFT_GSD.getDescrition());
+
+        }
+        if(2 == type){//GFA兑换GFD
+            BigDecimal fcmCntAva = mallMemberAmount.getFcmCntAva();
+            if(BigDecimal.ZERO.compareTo(fcmCntAva) >= 0){
+                throw new FebsException("代币不足");
+            }
+            if(cnt.compareTo(fcmCntAva) > 0){
+                throw new FebsException("代币不足");
+            }
+            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 = fcmPrice.multiply(cnt);
+            mallMemberAmount.setFcmCntAva(fcmCntAva.subtract(cnt));
+            mallMemberAmount.setGsd(mallMemberAmount.getGsd().add(gsdCnt));
+            mallMemberAmountMapper.updateFcmCntAvaAndGsdById(mallMemberAmount);
+            iMallMoneyFlowService.addMoneyFlow(
+                    memberId,
+                    cnt,
+                    MoneyFlowTypeNewEnum.GFA_GSD.getValue(),
+                    orderNo,
+                    mallMember.getId(),
+                    FlowTypeNewEnum.GSD.getValue(),
+                    MoneyFlowTypeNewEnum.GFA_GSD.getDescrition());
+
+        }
+        return new FebsResponse().success();
+    }
 }
diff --git a/src/main/resources/mapper/modules/MallMemberAmountMapper.xml b/src/main/resources/mapper/modules/MallMemberAmountMapper.xml
index 1173316..0b3f92a 100644
--- a/src/main/resources/mapper/modules/MallMemberAmountMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberAmountMapper.xml
@@ -35,6 +35,13 @@
         where id = #{record.id} and revision=#{record.revision}
     </update>
 
+    <update id="updateGsdById">
+        update mall_member_amount
+        set revision = revision + 1,
+            gsd = #{record.gsd}
+        where id = #{record.id} and revision=#{record.revision}
+    </update>
+
     <update id="updateFrozenNftById">
         update mall_member_amount
         set revision = revision + 1,
@@ -50,4 +57,20 @@
         where id = #{record.id} and revision=#{record.revision}
     </update>
 
+    <update id="updateTrendsNftAndGsdById">
+        update mall_member_amount
+        set revision = revision + 1,
+            gsd = #{record.gsd},
+            trends_nft = #{record.trendsNft}
+        where id = #{record.id} and revision=#{record.revision}
+    </update>
+
+    <update id="updateFcmCntAvaAndGsdById">
+        update mall_member_amount
+        set revision = revision + 1,
+            gsd = #{record.gsd},
+            fcm_cnt_ava = #{record.fcmCntAva}
+        where id = #{record.id} and revision=#{record.revision}
+    </update>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1