Administrator
2025-05-23 8027634ef66360e745df4f496d4bc4cf227d59c7
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(orderInfo.getTakeUniqueCode());
            if(mallTeamLeader!=null){
                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();
@@ -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)){
@@ -1086,6 +1118,7 @@
        if(CollUtil.isEmpty(mallOrderItemList)){
            return new FebsResponse().fail().message("订单不存在");
        }
        int i = 0;
        for(MallOrderItem mallOrderItem : mallOrderItemList){
            QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
            objectQueryWrapper.eq("member_id",member.getId());
@@ -1106,7 +1139,11 @@
                    mallRefundEntity.setType(3);
                }
                mallRefundEntity.setState(3);
                mallRefundEntity.setAmount(mallOrderItem.getAmount());
                if(i == 0){
                    mallRefundEntity.setAmount(mallOrderItem.getAmount().add(mallOrderInfo.getCarriage()));
                }else{
                    mallRefundEntity.setAmount(mallOrderItem.getAmount());
                }
                mallRefundMapper.insert(mallRefundEntity);
            }else{
                if(mallRefund.getState() == 1){
@@ -1129,6 +1166,7 @@
            apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
            apiLeaderRefundOrderDto.setAgreeState(1);
            iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
            i++;
        }
        return new FebsResponse().success();
    }