From f61293e97bb2cb21c8f49e88b1ae5a3cbadefb6a Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 25 Dec 2023 16:40:09 +0800
Subject: [PATCH] 富文本框输入版本变化

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   61 +++++++++++++++++++++++++++++-
 1 files changed, 58 insertions(+), 3 deletions(-)

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 e8d3ee8..0852804 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
@@ -82,6 +82,7 @@
     private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
     private final IMallElectronicFenceService iMallElectronicFenceService;
     private final MallElectronicFenceMapper mallElectronicFenceMapper;
+    private final MallMemberWalletMapper mallMemberWalletMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -344,6 +345,11 @@
             throw new FebsException("订单状态不能支付");
         }
 
+        MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(member.getId());
+        if (ObjectUtil.isEmpty(mallMemberWallet)) {
+            throw new FebsException("用户钱包不存在。");
+        }
+
         String payResultStr = "";
         String wxResultStr = "";
         switch (payOrderDto.getType()) {
@@ -373,14 +379,63 @@
                 agentProducer.sendOrderReturn(orderInfo.getId());
                 break;
             case "3":
-                payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance");
+                BigDecimal score = mallMemberWallet.getScore();//积分
+                BigDecimal balance = mallMemberWallet.getBalance();//余额
+
+                //这里将运费定义成折扣总金额
+                /**
+                 * 积分 + 余额 1:1来折扣支付金额
+                 */
+                BigDecimal total = orderInfo.getAmount();
+                BigDecimal totalCarriage = BigDecimal.ZERO;//总折扣金额
+                BigDecimal memberAmount = score.add(balance);//用户积分加余额总数
+                if(memberAmount.compareTo(BigDecimal.ZERO) > 0){
+                    //折扣金额
+                    if(total.compareTo(memberAmount) >= 0){
+                        totalCarriage = memberAmount;
+                    }else{
+                        totalCarriage = total;
+                    }
+                    //减少用户积分和余额
+
+                    BigDecimal avaAmount = totalCarriage;//剩余需要折扣的金额
+                    if(avaAmount.compareTo(memberAmount) >= 0){
+                        //清零用户的积分和余额
+                        mallMemberWallet.setBalance(BigDecimal.ZERO);
+                        mallMemberWallet.setScore(BigDecimal.ZERO);
+                        mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
+                    }else{
+                        /**
+                         * 先扣积分,再扣余额
+                         */
+                        if(avaAmount.compareTo(score) >= 0){
+                            mallMemberWallet.setScore(BigDecimal.ZERO);
+                            avaAmount = avaAmount.subtract(score);
+                        }else{
+                            mallMemberWallet.setScore(score.subtract(avaAmount));
+                            avaAmount = BigDecimal.ZERO;
+                        }
+                        //积分不够
+                        if(avaAmount.compareTo(BigDecimal.ZERO) > 0){
+                            mallMemberWallet.setBalance(balance.subtract(avaAmount));
+                        }else{
+                            mallMemberWallet.setBalance(balance);
+                        }
+                        mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
+                    }
+                }
+                orderInfo.setCarriage(totalCarriage);
+                payResultStr = "支付成功";
+//                payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance");
 
                 orderInfo.setPayOrderNo(orderInfo.getOrderNo());
                 orderInfo.setPayMethod("余额支付");
-                orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+                orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+//                orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
                 orderInfo.setPayTime(new Date());
                 orderInfo.setPayResult(1);
-                orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
+                orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
+//                orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
 
 //                boolean hasTc = false;
 //                // 静态倍数

--
Gitblit v1.9.1