Administrator
2025-05-19 d3e9f57c91ffc08e090bf8d4b8fcbf60f0d3a86f
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,23 +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(),
                    StrUtil.format(ScoreFlowTypeEnum.PAY.getDesc(),orderInfo.getScoreAmount()),
                    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());
@@ -591,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("余额支付");
@@ -606,7 +622,7 @@
                            ScoreFlowTypeEnum.PAY_BALANCE.getValue(),
                            orderInfo.getOrderNo(),
                            FlowTypeEnum.BALANCE.getValue(),
                            StrUtil.format(ScoreFlowTypeEnum.PAY_BALANCE.getDesc(),orderInfo.getScoreAmount()),
                            StrUtil.format(ScoreFlowTypeEnum.PAY_BALANCE.getDesc(),orderInfo.getAmount()),
                            2
                    );
                    agentProducer.sendOrderCoupon(orderInfo.getId());
@@ -694,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());
    }
@@ -709,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);
@@ -935,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);
            }
        }