From c6ac1561db0b2f1c8e3a799d7f49808f4bae67c7 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 27 May 2025 15:55:58 +0800 Subject: [PATCH] refactor(mall): 优化订单收货类型判断逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 47 insertions(+), 5 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 9321b44..031f3a6 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 @@ -281,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); @@ -300,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(); @@ -699,7 +711,7 @@ orderInfo.setPayOrderNo(payResultStr); orderInfo.setPayMethod("支付宝支付"); - agentProducer.sendOrderReturn(orderInfo.getId()); +// agentProducer.sendOrderReturn(orderInfo.getId()); break; case "3": @@ -843,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)){ @@ -870,7 +896,13 @@ @Transactional(rollbackFor = Exception.class) public void confirmOrder(Long id) { MallMember member = LoginUserUtil.getLoginUser(); - MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); +// MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); + MallOrderInfo orderInfo = this.baseMapper.selectOne( + new LambdaQueryWrapper<MallOrderInfo>() + .eq(MallOrderInfo::getMemberId, member.getId()) + .eq(MallOrderInfo::getId, id) + .last("limit 1") + ); if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); } @@ -878,6 +910,16 @@ if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { throw new FebsException("该状态不能确认收货"); } + if(orderInfo.getDeliveryType().equals(1)){ + 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); if(CollUtil.isNotEmpty(mallRefundEntities)){ -- Gitblit v1.9.1