From c19dc78c41273727339aeea025b3c75c09454c5a Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Dec 2023 11:44:56 +0800
Subject: [PATCH] 富文本框输入版本变化

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java |  154 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 113 insertions(+), 41 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
index 9ed8e8f..e7e5e2f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
@@ -22,6 +22,7 @@
 import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -82,7 +83,7 @@
 
     @Override
     public FebsResponse appMemberInfo(ApiMallAppMemberInfoDto apiMallAppMemberInfoDto) {
-        Long memberId = LoginUserUtil.getLoginUser().getId();
+//        Long memberId = LoginUserUtil.getLoginUser().getId();
         List<ApiMallAppMemberInfoVo> mallMembers = this.baseMapper.selectMemberInfoLikePhone(apiMallAppMemberInfoDto.getPhone());
         return new FebsResponse().success().data(mallMembers);
     }
@@ -123,6 +124,7 @@
         orderInfo.setIsApp(AppContants.IS_APP_ORDER);
         orderInfo.setOrderTime(new Date());
         orderInfo.setMemberId(addOrderDto.getMemberId());
+        orderInfo.setPayResult(2);
         //会员结算
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
         mallOrderInfoMapper.insert(orderInfo);
@@ -167,32 +169,31 @@
                     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);
-                }
+//                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);
         }
@@ -212,6 +213,7 @@
         orderInfo.setIsApp(AppContants.IS_APP_ORDER);
         orderInfo.setOrderTime(new Date());
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
+        orderInfo.setPayResult(2);
         if (CollUtil.isEmpty(addOrderDto.getItems())) {
             throw new FebsException("商品明细不能为空。");
         }
@@ -238,7 +240,13 @@
         }
         orderInfo.setAmount(total);
         mallOrderInfoMapper.updateById(orderInfo);
-        return new FebsResponse().success().message("操作成功");
+
+        Integer cnt = 0;
+        List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectOrderInfoByStatusIsApp(OrderStatusEnum.WAIT_PAY.getValue());
+        if(ObjectUtil.isNotEmpty(mallOrderInfos)){
+            cnt = mallOrderInfos.size();
+        }
+        return new FebsResponse().success().data(cnt).message("操作成功");
     }
 
     @Override
@@ -256,6 +264,7 @@
         orderInfo.setIsApp(AppContants.IS_APP_ORDER);
         orderInfo.setOrderTime(new Date());
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
+        orderInfo.setPayResult(2);
         if (CollUtil.isEmpty(addOrderDto.getItems())) {
             throw new FebsException("商品明细不能为空。");
         }
@@ -305,10 +314,15 @@
 
     @Override
     public FebsResponse getOrder(ApiGetOrderDto apiGetOrderDto) {
-        ApiGetOrderListVo apiGetOrderListVo = mallOrderInfoMapper.getAppOrderByOrderId(apiGetOrderDto.getOrderId());
+        Long orderId = apiGetOrderDto.getOrderId();
+        ApiGetOrderListVo apiGetOrderListVo = mallOrderInfoMapper.getAppOrderByOrderId(orderId);
         if(ObjectUtil.isNotEmpty(apiGetOrderListVo)){
             apiGetOrderListVo.setItems(mallOrderItemMapper.getAppOrderItemByOrderId(apiGetOrderListVo.getId()));
         }
+        mallOrderInfoMapper.deleteById(orderId);
+        QueryWrapper<MallOrderItem> mallOrderItemQuery = new QueryWrapper<>();
+        mallOrderItemQuery.eq("order_id",orderId);
+        mallOrderItemMapper.delete(mallOrderItemQuery);
         return new FebsResponse().success().data(apiGetOrderListVo);
     }
 
@@ -322,19 +336,50 @@
     }
 
     @Override
+    @Transactional
     public FebsResponse wxCodePay(ApiWxCodePayDto wxCodePayDto) {
         Long orderId = wxCodePayDto.getOrderId();
-        String wxPayCode = wxCodePayDto.getWxPayCode();
-        /**
-         * auth_code 扫码支付付款码 微信付款码规则:18位纯数字,前缀以10、11、12、13、14、15开头
-         */
-        String regex = "^(10|11|12|13|14|15)\\d{16}$";
-        boolean flag = wxPayCode.matches(regex);
-        if(!flag){
-            throw new FebsException("请打开微信付款码!");
-        }
-
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
+        if(OrderStatusEnum.FINISH.getValue() == (mallOrderInfo.getStatus())){
+            throw new FebsException("已支付");
+        }
+        BigDecimal amount = mallOrderInfo.getAmount();
+        BigDecimal carriage = mallOrderInfo.getCarriage();
+        //减少用户积分和余额
+        if(ObjectUtil.isNotEmpty(mallOrderInfo.getMemberId())){
+            BigDecimal avaAmount = carriage;//剩余需要折扣的金额
+            if(avaAmount.compareTo(BigDecimal.ZERO) > 0){
+                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallOrderInfo.getMemberId());
+                BigDecimal score = mallMemberWallet.getScore();
+                BigDecimal balance = mallMemberWallet.getBalance();
+                BigDecimal memberAmount = score.add(balance);
+                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);
+                }
+            }
+        }
+        String wxPayCode = wxCodePayDto.getWxPayCode();
         mallOrderInfo.setTakeCode(wxPayCode);
         List<ApiGetOrderOrderItemVo> appOrderItemByOrderId = mallOrderItemMapper.getAppOrderItemByOrderId(orderId);
         if(CollUtil.isEmpty(appOrderItemByOrderId)){
@@ -342,13 +387,40 @@
         }else{
             mallOrderInfo.setName(appOrderItemByOrderId.get(0).getGoodsName());
         }
-        mallOrderInfo.setPayResult("2");
         mallOrderInfoMapper.updateById(mallOrderInfo);
         // 发起付款码支付请求
-        String payResult = xcxCodePayService.pay(mallOrderInfo);
+        String payResult = "支付成功";
+        if(amount.subtract(carriage).compareTo(BigDecimal.ZERO) > 0){
+            /**
+             * auth_code 扫码支付付款码 微信付款码规则:18位纯数字,前缀以10、11、12、13、14、15开头
+             */
+            String regex = "^(10|11|12|13|14|15)\\d{16}$";
+            boolean flag = wxPayCode.matches(regex);
+            if(!flag){
+                throw new FebsException("请打开微信付款码!");
+            }
+            payResult = xcxCodePayService.pay(mallOrderInfo);
+        }
         return new FebsResponse().success().message(payResult);
     }
 
+    @Override
+    public FebsResponse cancelOrder(Long id) {
+        MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
+            throw new FebsException("订单不存在");
+        }
+
+        if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) {
+            throw new FebsException("订单不是待付款, 无法取消");
+        }
+
+        orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
+        orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
+        mallOrderInfoMapper.updateById(orderInfo);
+        return new FebsResponse().success().message("取消成功");
+    }
+
     public String generateAsaToken(String token) {
         RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
         return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);

--
Gitblit v1.9.1