确认收货通知 url 方法改成异步操作,防止微信的api时长限制

This commit is contained in:
Jack 2025-11-13 15:40:25 +08:00
parent c5f5978b41
commit ff7acb1b73
2 changed files with 40 additions and 2 deletions

View File

@ -86,7 +86,6 @@ public class LklReceiveNotifyLogServiceImpl extends BaseServiceImpl<LklReceiveNo
try {
log.debug("[LklReceiveNotifyLog] 开始查询拉卡拉确认收货通知记录,订单号={}", orderId);
QueryWrapper<LklReceiveNotifyLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_id", orderId);

View File

@ -385,8 +385,10 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
@Autowired
private ThreadPoolExecutor executor;
@Autowired
private DataSourceTransactionManager transactionManager;
@Autowired
private TransactionDefinition transactionDefinition;
@ -5053,6 +5055,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
log.info("[确认收货] 符合条件的订单数量: eligibleCount={}, totalChecked={}", receive_id_row.size(), order_rows.size());
// 收集需要处理跳转路径的订单ID
List<String> jumpPathOrderIds = new ArrayList<>();
// 处理符合条件的订单
for (ShopOrderBase order_row : order_rows) {
// 只处理符合条件的订单
@ -5076,7 +5080,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
}
/// 服务号确认收货通知跳转链接设置
wxOrderShippingService.setMsgJumpPath(order_id);
jumpPathOrderIds.add(order_row.getOrder_id());
// wxOrderShippingService.setMsgJumpPath(order_id);
BigDecimal order_points_add = order_data_row.getOrder_points_add();
BigDecimal order_double_points_add = order_data_row.getOrder_double_points_add();
@ -5126,6 +5131,11 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
}
}
// 异步批量处理延迟跳转路径设置
if (!jumpPathOrderIds.isEmpty()) {
processOrderJumpPathAsync(jumpPathOrderIds);
}
// 修改订单状态, 随机去一个订单获取店铺编号
ShopOrderBase shopOrderBase = order_rows.stream()
.filter(order -> receive_id_row.contains(order.getOrder_id()))
@ -5176,10 +5186,39 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
}
}
log.info("[确认收货] 处理完成: processedOrders={}", receive_id_row.size());
return true;
}
/**
* 延迟 消息跳转路径设置接口
*
* @param orderIds
*/
private void processOrderJumpPathAsync(List<String> orderIds) {
if (CollectionUtils.isEmpty(orderIds)) {
return;
}
CompletableFuture.runAsync(() -> {
for (String orderId : orderIds) {
try {
// 控制API调用频率
Thread.sleep(300); // 根据实际API限制调整
wxOrderShippingService.setMsgJumpPath(orderId);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.warn("[异步处理] 线程中断订单ID: {}", orderId);
break;
} catch (Exception e) {
log.warn("[异步处理] 消息跳转路径设置失败订单ID: {}, 错误: {}", orderId, e.getMessage());
// 继续处理下一个订单
}
}
}, executor);
}
/**
* 订单确认收货定时任务用途