From 578e3b34d4cf0df51855b47a91eae4a5d7c92cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Sat, 13 Jun 2026 14:28:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E5=95=86=E4=B8=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2BUG=E4=BF=AE=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...AsyncUserShipperMasterDataSyncService.java | 24 +++++++++++++++++++ .../UserShipperMasterDataSyncService.java | 8 +++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/AsyncUserShipperMasterDataSyncService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/AsyncUserShipperMasterDataSyncService.java index cfb560391..64f370c75 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/AsyncUserShipperMasterDataSyncService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/AsyncUserShipperMasterDataSyncService.java @@ -1,5 +1,7 @@ package com.mhd.user.application.service; +import com.mhd.common.core.constant.SecurityConstants; +import com.mhd.common.core.context.SecurityContextHolder; import com.mhd.common.redis.service.RedisLock; import com.mhd.system.api.model.LoginUser; import lombok.extern.slf4j.Slf4j; @@ -23,12 +25,34 @@ public class AsyncUserShipperMasterDataSyncService { public void syncMasterDataAsync(LoginUser loginUser, String lockKey) { Long organizationId = loginUser.getUserPo().getOrganizationId(); try { + bindLoginUser(loginUser); userShipperMasterDataSyncService.executeSync(loginUser); } catch (Exception e) { log.error("异步同步主数据失败, organizationId={}", organizationId, e); userShipperMasterDataSyncService.markSyncFailed(organizationId, e.getMessage()); } finally { + SecurityContextHolder.remove(); redisLock.unlock(lockKey); } } + + /** + * 异步线程无 HTTP 请求上下文,需手动注入 LoginUser 供 addUser/authShipper 等使用。 + */ + private void bindLoginUser(LoginUser loginUser) { + SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); + if (loginUser.getUserid() != null) { + SecurityContextHolder.setUserId(String.valueOf(loginUser.getUserid())); + } else if (loginUser.getUserPo() != null && loginUser.getUserPo().getUserId() != null) { + SecurityContextHolder.setUserId(String.valueOf(loginUser.getUserPo().getUserId())); + } + if (loginUser.getUsername() != null) { + SecurityContextHolder.setUserName(loginUser.getUsername()); + } else if (loginUser.getUserPo() != null) { + SecurityContextHolder.setUserName(loginUser.getUserPo().getUserAccount()); + } + if (loginUser.getToken() != null) { + SecurityContextHolder.setUserKey(loginUser.getToken()); + } + } } diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java index 7b4fe989c..4269d1cd3 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java @@ -237,10 +237,14 @@ public class UserShipperMasterDataSyncService { } entity.setLastSyncTime(syncTime); entity.setSyncStatus(resultVo.getFailCount() > 0 ? 2 : 1); - entity.setSyncMessage(String.format( + String syncMessage = String.format( "新增%d,更新%d,跳过%d,失败%d;组织NC=%s;跳过明细[组织不匹配:%d,非客户:%d,停用:%d,其他:%d]", resultVo.getAddCount(), resultVo.getUpdateCount(), resultVo.getSkipCount(), resultVo.getFailCount(), - orgNcCode, skipOrgMismatch, skipNotCustomer, skipDisabled, skipOther)); + orgNcCode, skipOrgMismatch, skipNotCustomer, skipDisabled, skipOther); + if (resultVo.getFailCount() > 0 && !resultVo.getErrorMessages().isEmpty()) { + syncMessage += ";" + resultVo.getErrorMessages().get(0); + } + entity.setSyncMessage(syncMessage); entity.setUpdateTime(syncTime); if (entity.getId() == null) { userShipperMdmSyncMapper.insert(entity);