确认收货通知 url 方法改成异步操作,防止微信的api时长限制
This commit is contained in:
parent
c5f5978b41
commit
ff7acb1b73
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 订单确认收货(定时任务用途)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user