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.getId() != null
|
||||||
&& gltTicketOrder.getRiderId() != null
|
&& gltTicketOrder.getRiderId() != null
|
||||||
&& gltTicketOrder.getRiderId() > 0) {
|
&& gltTicketOrder.getRiderId() > 0) {
|
||||||
gltTicketOrderService.markShopOrderShippedAfterRiderAssigned(gltTicketOrder.getId(), getTenantId());
|
gltTicketOrderService.markShopOrderShippedAfterRiderAssigned(
|
||||||
|
gltTicketOrder.getId(),
|
||||||
|
getTenantId(),
|
||||||
|
gltTicketOrder.getRiderId()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return success("修改成功");
|
return success("修改成功");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public interface GltTicketOrderService extends IService<GltTicketOrder> {
|
|||||||
*
|
*
|
||||||
* <p>用于后台指派配送员(不走接单接口)等场景的状态兜底同步。</p>
|
* <p>用于后台指派配送员(不走接单接口)等场景的状态兜底同步。</p>
|
||||||
*/
|
*/
|
||||||
void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId);
|
void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配送员开始配送:10 -> 20,并写 sendStartTime。
|
* 配送员开始配送:10 -> 20,并写 sendStartTime。
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
.update();
|
.update();
|
||||||
if (ok) {
|
if (ok) {
|
||||||
// 接单成功后,同步商城订单发货状态:10未发货 -> 20已发货
|
// 接单成功后,同步商城订单发货状态:10未发货 -> 20已发货
|
||||||
updateShopOrderDeliveryStatusAfterAccept(id, tenantId, now);
|
updateShopOrderDeliveryStatusAfterAccept(id, tenantId, riderId, now);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,18 +245,18 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId) {
|
public void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId) {
|
||||||
updateShopOrderDeliveryStatusAfterAccept(ticketOrderId, tenantId, LocalDateTime.now());
|
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) {
|
if (ticketOrderId == null || tenantId == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 找到关联水票的商城订单(glt_user_ticket.orderId / orderNo)
|
// 找到关联水票的商城订单(glt_user_ticket.orderId / orderNo)
|
||||||
GltTicketOrder ticketOrder = this.lambdaQuery()
|
GltTicketOrder ticketOrder = this.lambdaQuery()
|
||||||
.select(GltTicketOrder::getId, GltTicketOrder::getUserTicketId)
|
.select(GltTicketOrder::getId, GltTicketOrder::getUserTicketId, GltTicketOrder::getRiderId)
|
||||||
.eq(GltTicketOrder::getId, ticketOrderId)
|
.eq(GltTicketOrder::getId, ticketOrderId)
|
||||||
.eq(GltTicketOrder::getTenantId, tenantId)
|
.eq(GltTicketOrder::getTenantId, tenantId)
|
||||||
.eq(GltTicketOrder::getDeleted, 0)
|
.eq(GltTicketOrder::getDeleted, 0)
|
||||||
@@ -266,6 +266,8 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Integer actualRiderId = (riderId != null && riderId > 0) ? riderId : ticketOrder.getRiderId();
|
||||||
|
|
||||||
GltUserTicket userTicket = gltUserTicketService.getOne(
|
GltUserTicket userTicket = gltUserTicketService.getOne(
|
||||||
new LambdaQueryWrapper<GltUserTicket>()
|
new LambdaQueryWrapper<GltUserTicket>()
|
||||||
.eq(GltUserTicket::getTenantId, tenantId)
|
.eq(GltUserTicket::getTenantId, tenantId)
|
||||||
@@ -286,9 +288,18 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
LambdaUpdateWrapper<ShopOrder> uw = new LambdaUpdateWrapper<ShopOrder>()
|
LambdaUpdateWrapper<ShopOrder> uw = new LambdaUpdateWrapper<ShopOrder>()
|
||||||
.eq(ShopOrder::getTenantId, tenantId)
|
.eq(ShopOrder::getTenantId, tenantId)
|
||||||
.eq(ShopOrder::getDeleted, 0)
|
.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::getDeliveryStatus, 20)
|
||||||
.set(ShopOrder::getUpdateTime, now);
|
.set(ShopOrder::getUpdateTime, now);
|
||||||
|
if (actualRiderId != null && actualRiderId > 0) {
|
||||||
|
uw.set(ShopOrder::getRiderId, actualRiderId);
|
||||||
|
}
|
||||||
if (shopOrderId != null) {
|
if (shopOrderId != null) {
|
||||||
uw.eq(ShopOrder::getOrderId, shopOrderId);
|
uw.eq(ShopOrder::getOrderId, shopOrderId);
|
||||||
} else {
|
} else {
|
||||||
@@ -305,14 +316,17 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
.eq(ShopOrder::getTenantId, tenantId)
|
.eq(ShopOrder::getTenantId, tenantId)
|
||||||
.eq(ShopOrder::getDeleted, 0)
|
.eq(ShopOrder::getDeleted, 0)
|
||||||
.eq(ShopOrder::getDeliveryStatus, 20);
|
.eq(ShopOrder::getDeliveryStatus, 20);
|
||||||
|
if (actualRiderId != null && actualRiderId > 0) {
|
||||||
|
qw.eq(ShopOrder::getRiderId, actualRiderId);
|
||||||
|
}
|
||||||
if (shopOrderId != null) {
|
if (shopOrderId != null) {
|
||||||
qw.eq(ShopOrder::getOrderId, shopOrderId);
|
qw.eq(ShopOrder::getOrderId, shopOrderId);
|
||||||
} else {
|
} else {
|
||||||
qw.eq(ShopOrder::getOrderNo, shopOrderNo);
|
qw.eq(ShopOrder::getOrderNo, shopOrderNo);
|
||||||
}
|
}
|
||||||
if (shopOrderService.count(qw) <= 0) {
|
if (shopOrderService.count(qw) <= 0) {
|
||||||
log.warn("接单成功但同步商城订单发货状态失败 - tenantId={}, ticketOrderId={}, shopOrderId={}, shopOrderNo={}",
|
log.warn("接单/指派成功但同步商城订单发货状态/配送员失败 - tenantId={}, ticketOrderId={}, riderId={}, shopOrderId={}, shopOrderNo={}",
|
||||||
tenantId, ticketOrderId, shopOrderId, shopOrderNo);
|
tenantId, ticketOrderId, actualRiderId, shopOrderId, shopOrderNo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user