From d3e9f57c91ffc08e090bf8d4b8fcbf60f0d3a86f Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 19 May 2025 17:45:15 +0800
Subject: [PATCH] feat(mall): 添加会员等级当前进度相关数据

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   89 ++++++++++++++++++++++++++++++--------------
 1 files changed, 60 insertions(+), 29 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 95d834f..2a89336 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
@@ -109,7 +109,7 @@
             throw new FebsException("请重新选择收货地址信息");
         }
 
-        String orderNo = MallUtils.getOrderNum();
+        String orderNo = MallUtils.getOrderNum("O");
         MallOrderInfo orderInfo = new MallOrderInfo();
         orderInfo.setOrderNo(orderNo);
         orderInfo.setOrderTime(new Date());
@@ -208,13 +208,13 @@
                     }
 
                     MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
-                    // 零撸专区购买
-                    if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
-                        List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
-                        if (CollUtil.isNotEmpty(items)) {
-                            throw new FebsException("无法重复领取同一个商品");
-                        }
-                    }
+                    // todo 纯积分商品一个账号限制购买一次
+//                    if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
+//                        List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
+//                        if (CollUtil.isNotEmpty(items)) {
+//                            throw new FebsException("积分商品一个账号只能购买一次");
+//                        }
+//                    }
 
                     if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                         throw new FebsException(mallGoods.getGoodsName() + "已下架");
@@ -317,6 +317,7 @@
 
         for (AddOrderItemDto item : items) {
             Long skuId = item.getSkuId();
+            Integer cnt = item.getCnt();
             MallGoodsSku sku = skusAll.stream().filter(s -> s.getId().equals(skuId)).findFirst().orElse(null);
             if (ObjectUtil.isNotEmpty(sku)) {
                 Long goodsId = sku.getGoodsId();
@@ -324,7 +325,7 @@
                 if (ObjectUtil.isNotEmpty(mallGoods)) {
                     BigDecimal multi = mallGoods.getStaticProp().divide(BigDecimal.valueOf(100), 4, RoundingMode.HALF_DOWN);
                     //获取该商品该规格的积分
-                    BigDecimal scoreAmount = sku.getOriginalPrice().multiply(multi).setScale(0, RoundingMode.HALF_DOWN);
+                    BigDecimal scoreAmount = sku.getOriginalPrice().multiply(multi).multiply(new BigDecimal(cnt)).setScale(0, RoundingMode.HALF_DOWN);
                     scoreAmountMap.put(skuId, scoreAmount);
                 }
             }
@@ -543,15 +544,23 @@
         if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) {
             throw new FebsException("订单状态不能支付");
         }
-        //先支付积分部分
-        if(orderInfo.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){
-            balanceScorePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore");
-            mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), ScoreFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(),  FlowTypeEnum.PRIZE_SCORE.getValue(), null, 2);
-        }
 
         String payResultStr = "";
         String wxResultStr = "";
         if(orderInfo.getAmount().compareTo(BigDecimal.ZERO) <= 0){
+            //先支付积分部分
+            if(orderInfo.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){
+                balanceScorePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore");
+                mallMoneyFlowService.addMoneyFlow(
+                        member.getId(),
+                        orderInfo.getScoreAmount().negate(),
+                        ScoreFlowTypeEnum.PAY.getValue(),
+                        orderInfo.getOrderNo(),
+                        FlowTypeEnum.PRIZE_SCORE.getValue(),
+                        StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),orderInfo.getScoreAmount()),
+                        2
+                );
+            }
             orderInfo.setPayOrderNo(orderInfo.getOrderNo());
             orderInfo.setPayMethod("积分支付");
             orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
@@ -583,7 +592,22 @@
                     agentProducer.sendOrderReturn(orderInfo.getId());
                     break;
                 case "3":
+
                     payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance");
+
+                    //先支付积分部分
+                    if(orderInfo.getScoreAmount().compareTo(BigDecimal.ZERO) > 0){
+                        balanceScorePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore");
+                        mallMoneyFlowService.addMoneyFlow(
+                                member.getId(),
+                                orderInfo.getScoreAmount().negate(),
+                                ScoreFlowTypeEnum.PAY.getValue(),
+                                orderInfo.getOrderNo(),
+                                FlowTypeEnum.PRIZE_SCORE.getValue(),
+                                StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),orderInfo.getScoreAmount()),
+                                2
+                        );
+                    }
 
                     orderInfo.setPayOrderNo(orderInfo.getOrderNo());
                     orderInfo.setPayMethod("余额支付");
@@ -592,8 +616,15 @@
                     orderInfo.setPayResult("1");
                     orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
 
-                    mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
-
+                    mallMoneyFlowService.addMoneyFlow(
+                            member.getId(),
+                            orderInfo.getAmount().negate(),
+                            ScoreFlowTypeEnum.PAY_BALANCE.getValue(),
+                            orderInfo.getOrderNo(),
+                            FlowTypeEnum.BALANCE.getValue(),
+                            StrUtil.format(ScoreFlowTypeEnum.PAY_BALANCE.getDesc(),orderInfo.getAmount()),
+                            2
+                    );
                     agentProducer.sendOrderCoupon(orderInfo.getId());
                     break;
                 case "4":
@@ -679,11 +710,11 @@
         orderListDto.setMemberId(member.getId());
 //        IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectApiOrderListInPage(page, orderListDto);
         IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectNewApiOrderListInPage(page, orderListDto);
-        if (CollUtil.isNotEmpty(mallOrderInfos.getRecords())) {
-            mallOrderInfos.getRecords().forEach(item -> {
-                item.setItems(mallOrderItemMapper.selectListByOrderId(item.getId()));
-            });
-        }
+//        if (CollUtil.isNotEmpty(mallOrderInfos.getRecords())) {
+//            mallOrderInfos.getRecords().forEach(item -> {
+//                item.setItems(mallOrderItemMapper.selectListByOrderId(item.getId()));
+//            });
+//        }
         return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords());
     }
 
@@ -694,13 +725,13 @@
         if (ObjectUtil.isNull(orderInfo)) {
             throw new FebsException("订单不存在");
         }
-        List<MallOrderItem> items = orderInfo.getItems();
-        if(CollUtil.isNotEmpty(items)){
-            for(MallOrderItem mallOrderItem : items){
-                mallOrderItem.setItemAmount(mallOrderItemMapper.selectById(mallOrderItem.getId()).getAmount());
-                mallOrderItem.setScoreAmount(mallOrderItemMapper.selectById(mallOrderItem.getId()).getScoreAmount());
-            }
-        }
+//        List<MallOrderItem> items = orderInfo.getItems();
+//        if(CollUtil.isNotEmpty(items)){
+//            for(MallOrderItem mallOrderItem : items){
+//                mallOrderItem.setItemAmount(mallOrderItemMapper.selectById(mallOrderItem.getId()).getAmount());
+//                mallOrderItem.setScoreAmount(mallOrderItemMapper.selectById(mallOrderItem.getId()).getScoreAmount());
+//            }
+//        }
 
         OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
 
@@ -920,7 +951,7 @@
                 mallGoodsComment.setSkuName(mallGoodsSku.getSkuName());
                 mallGoodsComment.setStyleId(mallGoodsSku.getStyleId());
                 mallGoodsComment.setStyleName(mallGoodsSku.getStyleName());
-                mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_ENABLE);
+                mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_DISABLED);
                 mallGoodsCommentMapper.insert(mallGoodsComment);
             }
         }

--
Gitblit v1.9.1