diff --git a/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java b/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java index 07f5849..d8dc338 100644 --- a/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java +++ b/src/main/java/com/gxwebsoft/glt/controller/GltTicketOrderController.java @@ -247,7 +247,11 @@ public class GltTicketOrderController extends BaseController { && gltTicketOrder.getId() != null && gltTicketOrder.getRiderId() != null && gltTicketOrder.getRiderId() > 0) { - gltTicketOrderService.markShopOrderShippedAfterRiderAssigned(gltTicketOrder.getId(), getTenantId()); + gltTicketOrderService.markShopOrderShippedAfterRiderAssigned( + gltTicketOrder.getId(), + getTenantId(), + gltTicketOrder.getRiderId() + ); } return success("修改成功"); } diff --git a/src/main/java/com/gxwebsoft/glt/service/GltTicketOrderService.java b/src/main/java/com/gxwebsoft/glt/service/GltTicketOrderService.java index 3fdb16b..1252f65 100644 --- a/src/main/java/com/gxwebsoft/glt/service/GltTicketOrderService.java +++ b/src/main/java/com/gxwebsoft/glt/service/GltTicketOrderService.java @@ -69,7 +69,7 @@ public interface GltTicketOrderService extends IService { * *

用于后台指派配送员(不走接单接口)等场景的状态兜底同步。

*/ - void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId); + void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId); /** * 配送员开始配送:10 -> 20,并写 sendStartTime。 diff --git a/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java b/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java index 2f13605..770ca87 100644 --- a/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java +++ b/src/main/java/com/gxwebsoft/glt/service/impl/GltTicketOrderServiceImpl.java @@ -225,7 +225,7 @@ public class GltTicketOrderServiceImpl extends ServiceImpl 20已发货 - updateShopOrderDeliveryStatusAfterAccept(id, tenantId, now); + updateShopOrderDeliveryStatusAfterAccept(id, tenantId, riderId, now); return; } @@ -245,18 +245,18 @@ public class GltTicketOrderServiceImpl extends ServiceImpl 0) ? riderId : ticketOrder.getRiderId(); + GltUserTicket userTicket = gltUserTicketService.getOne( new LambdaQueryWrapper() .eq(GltUserTicket::getTenantId, tenantId) @@ -286,9 +288,18 @@ public class GltTicketOrderServiceImpl extends ServiceImpl uw = new LambdaUpdateWrapper() .eq(ShopOrder::getTenantId, tenantId) .eq(ShopOrder::getDeleted, 0) - .and(w -> w.ne(ShopOrder::getDeliveryStatus, 20).or().isNull(ShopOrder::getDeliveryStatus)) + // deliveryStatus 已经是 20 时也可能需要补写/更新 riderId,因此条件包含 riderId 不一致的场景 + .and(w -> { + w.ne(ShopOrder::getDeliveryStatus, 20).or().isNull(ShopOrder::getDeliveryStatus); + if (actualRiderId != null && actualRiderId > 0) { + w.or().ne(ShopOrder::getRiderId, actualRiderId).or().isNull(ShopOrder::getRiderId); + } + }) .set(ShopOrder::getDeliveryStatus, 20) .set(ShopOrder::getUpdateTime, now); + if (actualRiderId != null && actualRiderId > 0) { + uw.set(ShopOrder::getRiderId, actualRiderId); + } if (shopOrderId != null) { uw.eq(ShopOrder::getOrderId, shopOrderId); } else { @@ -305,14 +316,17 @@ public class GltTicketOrderServiceImpl extends ServiceImpl 0) { + qw.eq(ShopOrder::getRiderId, actualRiderId); + } if (shopOrderId != null) { qw.eq(ShopOrder::getOrderId, shopOrderId); } else { qw.eq(ShopOrder::getOrderNo, shopOrderNo); } if (shopOrderService.count(qw) <= 0) { - log.warn("接单成功但同步商城订单发货状态失败 - tenantId={}, ticketOrderId={}, shopOrderId={}, shopOrderNo={}", - tenantId, ticketOrderId, shopOrderId, shopOrderNo); + log.warn("接单/指派成功但同步商城订单发货状态/配送员失败 - tenantId={}, ticketOrderId={}, riderId={}, shopOrderId={}, shopOrderNo={}", + tenantId, ticketOrderId, actualRiderId, shopOrderId, shopOrderNo); } }