feat(order): 更新订单配送状态同步逻辑以支持配送员ID传递
- 在markShopOrderShippedAfterRiderAssigned方法中添加riderId参数 - 修改updateShopOrderDeliveryStatusAfterAccept方法以接收并处理配送员ID - 更新查询逻辑以包含配送员ID字段的选择 - 添加实际配送员ID的判断逻辑,优先使用传入的配送员ID - 修改配送状态更新条件,包含配送员ID不一致的场景 - 在更新配送状态的同时设置配送员ID - 添加配送员ID查询条件到最终验证查询中 - 更新警告日志信息以包含配送员ID相关信息
This commit is contained in:
@@ -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("修改成功");
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public interface GltTicketOrderService extends IService<GltTicketOrder> {
|
||||
*
|
||||
* <p>用于后台指派配送员(不走接单接口)等场景的状态兜底同步。</p>
|
||||
*/
|
||||
void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId);
|
||||
void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId);
|
||||
|
||||
/**
|
||||
* 配送员开始配送:10 -> 20,并写 sendStartTime。
|
||||
|
||||
@@ -225,7 +225,7 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
||||
.update();
|
||||
if (ok) {
|
||||
// 接单成功后,同步商城订单发货状态:10未发货 -> 20已发货
|
||||
updateShopOrderDeliveryStatusAfterAccept(id, tenantId, now);
|
||||
updateShopOrderDeliveryStatusAfterAccept(id, tenantId, riderId, now);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -245,18 +245,18 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId) {
|
||||
updateShopOrderDeliveryStatusAfterAccept(ticketOrderId, tenantId, LocalDateTime.now());
|
||||
public void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId) {
|
||||
updateShopOrderDeliveryStatusAfterAccept(ticketOrderId, tenantId, riderId, LocalDateTime.now());
|
||||
}
|
||||
|
||||
private void updateShopOrderDeliveryStatusAfterAccept(Integer ticketOrderId, Integer tenantId, LocalDateTime now) {
|
||||
private void updateShopOrderDeliveryStatusAfterAccept(Integer ticketOrderId, Integer tenantId, Integer riderId, LocalDateTime now) {
|
||||
if (ticketOrderId == null || tenantId == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 找到关联水票的商城订单(glt_user_ticket.orderId / orderNo)
|
||||
GltTicketOrder ticketOrder = this.lambdaQuery()
|
||||
.select(GltTicketOrder::getId, GltTicketOrder::getUserTicketId)
|
||||
.select(GltTicketOrder::getId, GltTicketOrder::getUserTicketId, GltTicketOrder::getRiderId)
|
||||
.eq(GltTicketOrder::getId, ticketOrderId)
|
||||
.eq(GltTicketOrder::getTenantId, tenantId)
|
||||
.eq(GltTicketOrder::getDeleted, 0)
|
||||
@@ -266,6 +266,8 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
||||
return;
|
||||
}
|
||||
|
||||
Integer actualRiderId = (riderId != null && riderId > 0) ? riderId : ticketOrder.getRiderId();
|
||||
|
||||
GltUserTicket userTicket = gltUserTicketService.getOne(
|
||||
new LambdaQueryWrapper<GltUserTicket>()
|
||||
.eq(GltUserTicket::getTenantId, tenantId)
|
||||
@@ -286,9 +288,18 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
||||
LambdaUpdateWrapper<ShopOrder> uw = new LambdaUpdateWrapper<ShopOrder>()
|
||||
.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<GltTicketOrderMapper,
|
||||
.eq(ShopOrder::getTenantId, tenantId)
|
||||
.eq(ShopOrder::getDeleted, 0)
|
||||
.eq(ShopOrder::getDeliveryStatus, 20);
|
||||
if (actualRiderId != null && actualRiderId > 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user