From ce4cc9c4b21025e27a791bb122106527da01a7f6 Mon Sep 17 00:00:00 2001 From: wuKong Date: Sun, 4 Jan 2026 11:19:29 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(social):=20=E8=A7=A3=E5=86=B3=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=B0=8F=E7=A8=8B=E5=BA=8F=E8=AE=A2=E5=8D=95=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E4=BF=A1=E6=81=AF=E4=B8=8A=E4=BC=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=B7=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 ObjectUtil 和 CompletableFuture 依赖 - 针对错误代码 10060001 实现延迟重试机制 - 在支付回调与订单信息上传间增加 1 秒延时处理 - 添加延迟重试后的日志记录和异常处理 - 优化错误处理流程以应对时间差导致的上传失败 --- .../social/SocialClientServiceImpl.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java index fc81be23b..428b7b680 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java @@ -14,6 +14,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; @@ -65,6 +66,8 @@ import java.time.ZonedDateTime; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; @@ -371,6 +374,27 @@ public class SocialClientServiceImpl implements SocialClientService { try { WxMaOrderShippingInfoBaseResponse response = service.getWxMaOrderShippingService().upload(request); if (response.getErrCode() != 0) { + if (ObjectUtil.equals(response.getErrCode(),10060001)) { + // 错误代码:10060001, 错误信息:支付单不存在 + // 收到支付回调时同步订单到微信,很大概率会出现10060001 + // 应对支付回调与订单信息上传之间的时间差 + CompletableFuture.delayedExecutor(1000, TimeUnit.MILLISECONDS) + .execute(() -> { + try { + WxMaOrderShippingInfoBaseResponse delayedResponse = + service.getWxMaOrderShippingService().upload(request); + if (delayedResponse.getErrCode() != 0) { + log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, delayedResponse); + return; + } + log.info("[uploadWxaOrderShippingInfo][上传微信小程序发货信息成功:request({}) response({})]", request, delayedResponse); + } catch (WxErrorException ex) { + log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({})]", request, + ex); + } + }); + return; + } log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, response); throw exception(SOCIAL_CLIENT_WEIXIN_MINI_APP_ORDER_UPLOAD_SHIPPING_INFO_ERROR, response.getErrMsg()); } From a5052b7dc96f8712d7ab1e9efb6edaa784460b1c Mon Sep 17 00:00:00 2001 From: wuKong Date: Sun, 4 Jan 2026 11:22:35 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor(social):=20=E6=9B=BF=E6=8D=A2=20Ob?= =?UTF-8?q?jectUtil=20=E4=B8=BA=20ObjUtil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 cn.hutool.core.util.ObjectUtil 的导入 - 将 ObjectUtil.equals 替换为 ObjUtil.equals - 保持相同的功能逻辑和错误处理 --- .../module/system/service/social/SocialClientServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java index 428b7b680..51e958eca 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java @@ -14,7 +14,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.ObjUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; @@ -374,7 +373,7 @@ public class SocialClientServiceImpl implements SocialClientService { try { WxMaOrderShippingInfoBaseResponse response = service.getWxMaOrderShippingService().upload(request); if (response.getErrCode() != 0) { - if (ObjectUtil.equals(response.getErrCode(),10060001)) { + if (ObjUtil.equals(response.getErrCode(),10060001)) { // 错误代码:10060001, 错误信息:支付单不存在 // 收到支付回调时同步订单到微信,很大概率会出现10060001 // 应对支付回调与订单信息上传之间的时间差 From 712d1fbdd531e621d213296ecd8df5d8593947fa Mon Sep 17 00:00:00 2001 From: wuKong Date: Sun, 4 Jan 2026 16:48:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?style(social):=20=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E4=BF=A1=E6=81=AF=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除多余的换行和缩进使代码更紧凑 - 保持原有的异步延迟执行逻辑不变 - 优化代码可读性和格式规范 --- .../social/SocialClientServiceImpl.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java index 51e958eca..b15db7055 100644 --- a/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java +++ b/yudao-module-system/yudao-module-system-server/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java @@ -377,21 +377,18 @@ public class SocialClientServiceImpl implements SocialClientService { // 错误代码:10060001, 错误信息:支付单不存在 // 收到支付回调时同步订单到微信,很大概率会出现10060001 // 应对支付回调与订单信息上传之间的时间差 - CompletableFuture.delayedExecutor(1000, TimeUnit.MILLISECONDS) - .execute(() -> { - try { - WxMaOrderShippingInfoBaseResponse delayedResponse = - service.getWxMaOrderShippingService().upload(request); - if (delayedResponse.getErrCode() != 0) { - log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, delayedResponse); - return; - } - log.info("[uploadWxaOrderShippingInfo][上传微信小程序发货信息成功:request({}) response({})]", request, delayedResponse); - } catch (WxErrorException ex) { - log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({})]", request, - ex); + CompletableFuture.delayedExecutor(1000, TimeUnit.MILLISECONDS).execute(() -> { + try { + WxMaOrderShippingInfoBaseResponse delayedResponse = service.getWxMaOrderShippingService().upload(request); + if (delayedResponse.getErrCode() != 0) { + log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, delayedResponse); + return; } - }); + log.info("[uploadWxaOrderShippingInfo][上传微信小程序发货信息成功:request({}) response({})]", request, delayedResponse); + } catch (WxErrorException ex) { + log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({})]", request, ex); + } + }); return; } log.error("[uploadWxaOrderShippingInfo][上传微信小程序发货信息失败:request({}) response({})]", request, response);