Administrator
2025-05-27 09d1fb5dcfa7a8c5fae1c570ec4256d05b82617d
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -209,12 +209,16 @@
                    MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
                    // 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 (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
                        Integer cnt = item.getCnt();
                        if(1 < cnt){
                            throw new FebsException("积分商品限购一件");
                        }
                        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() + "已下架");
@@ -226,6 +230,7 @@
                    }
                    BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                    BigDecimal levelOnePrice = sku.getLevelOnePrice().multiply(BigDecimal.valueOf(item.getCnt()));
                    //是否使用优惠卷
                    if(ObjectUtil.isNotEmpty(addOrderDto.getMemberCouponId())){
                        Long memberCouponId = addOrderDto.getMemberCouponId();
@@ -238,6 +243,7 @@
                        }
                    }
                    orderItem.setAmount(amount);
                    orderItem.setLevelOnePrice(levelOnePrice);
                    orderItem.setScoreAmount(scoreAmountMap.get(item.getSkuId()));
                    orderItem.setCnt(item.getCnt());
                    orderItem.setOrderId(orderInfo.getId());
@@ -275,10 +281,21 @@
        mallMemberCoupon.setState(2);
        mallMemberCouponMapper.updateById(mallMemberCoupon);
        //运费
        BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
        orderInfo.setCarriage(delivaryAmount);
        BigDecimal delivaryAmount = BigDecimal.ZERO;
        if(StrUtil.isEmpty(addOrderDto.getTakeUniqueCode())){
            delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
            orderInfo.setCarriage(delivaryAmount);
        }else{
            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(addOrderDto.getTakeUniqueCode());
            if(ObjectUtil.isEmpty(mallTeamLeader)){
                throw new FebsException("自提点信息异常");
            }
            orderInfo.setCarriage(delivaryAmount);
            orderInfo.setTakeCode(ShareCodeUtil.toSerialCode(orderInfo.getId()) + MallUtils.getRandomNum(10));
            orderInfo.setTakeUniqueCode(mallTeamLeader.getUniqueCode());
            orderInfo.setDeliveryType(1);
        }
        total = total.add(delivaryAmount);
        orderInfo.setAmount(total);
        orderInfo.setScoreAmount(totalScoreAmount);
@@ -294,6 +311,7 @@
        orderInfo.setLatitude(address.getLatitude());
        orderInfo.setLongitude(address.getLongitude());
        this.baseMapper.updateById(orderInfo);
        //过期时间修改成24小时
        agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(),  24 * 60 * 60 * 1000L);
        return orderInfo.getId();
@@ -693,7 +711,7 @@
                    orderInfo.setPayOrderNo(payResultStr);
                    orderInfo.setPayMethod("支付宝支付");
                    agentProducer.sendOrderReturn(orderInfo.getId());
//                    agentProducer.sendOrderReturn(orderInfo.getId());
                    break;
                case "3":
@@ -837,7 +855,21 @@
//            }
//        }
        OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
        if(StrUtil.isNotEmpty(orderInfo.getTakeUniqueCode())){
            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode());
            if(ObjectUtil.isNotEmpty(mallTeamLeader)){
                orderDetailVo.setLeaderName(mallTeamLeader.getName());
                orderDetailVo.setLeaderPhone(mallTeamLeader.getPhone());
                orderDetailVo.setAddressPic(mallTeamLeader.getAddressPic());
                orderDetailVo.setAddressArea(mallTeamLeader.getAddressArea());
                orderDetailVo.setDetailAddress(mallTeamLeader.getDetailAddress());
                orderDetailVo.setLeaderLongitude(mallTeamLeader.getLongitude());
                orderDetailVo.setLeaderLatitude(mallTeamLeader.getLatitude());
            }
        }
        MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
        if(ObjectUtil.isNotEmpty(expressInfo)){
@@ -871,6 +903,16 @@
        if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) {
            throw new FebsException("该状态不能确认收货");
        }
        if(1 == orderInfo.getDeliveryType()){
            List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectList(
                    new LambdaQueryWrapper<MallOrderItem>()
                            .eq(MallOrderItem::getOrderId, id)
                            .eq(MallOrderItem::getLeaderState, 0)
            );
            if(CollUtil.isNotEmpty(mallOrderItems)){
                throw new FebsException("请先核销"+mallOrderItems.get(0).getGoodsName());
            }
        }
        List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(null, orderInfo.getId(), 3);
@@ -1134,6 +1176,7 @@
            apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
            apiLeaderRefundOrderDto.setAgreeState(1);
            iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
            i++;
        }
        return new FebsResponse().success();
    }