diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java index c49f1b63..1c7a8b14 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkSyncProcessorImpl.java @@ -330,7 +330,7 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { } boolean inactive = isInactiveUser(user.getStatus()); String username = resolveUsername(user); - if (StrUtil.isBlank(username)) { + if (username == null) { logSkip("人员", user.getId(), "缺少工号与登录账号,跳过同步"); result.increaseSkipped(); continue; @@ -785,8 +785,8 @@ public class IWorkSyncProcessorImpl implements IWorkSyncProcessor { if (StrUtil.isNotBlank(user.getLoginid())) { return user.getLoginid().trim(); } - String workcode = resolveWorkcode(user); - return StrUtil.isNotBlank(workcode) ? workcode : null; + // loginid 为空也继续同步,username 设为空字符串,不再回退工号 + return ""; } /** diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/oauth2/EbanOAuth2ServiceImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/oauth2/EbanOAuth2ServiceImpl.java index fe41228f..91b2a107 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/oauth2/EbanOAuth2ServiceImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/oauth2/EbanOAuth2ServiceImpl.java @@ -72,16 +72,21 @@ public class EbanOAuth2ServiceImpl implements EbanOAuth2Service { throw exception(AUTH_LOGIN_EBAN_TOKEN_INVALID); } - String workcode = StrUtil.trim(StrUtil.blankToDefault(userInfo.getLoginName(), userInfo.getUsername())); - if (StrUtil.isBlank(workcode)) { - log.error("E办OAuth2用户信息缺少工号(loginName),无法匹配账号: {}", JSONUtil.toJsonStr(userInfo)); - throw exception(AUTH_LOGIN_EBAN_TOKEN_INVALID); + String loginName = StrUtil.trim(userInfo.getLoginName()); + AdminUserDO user = null; + if (StrUtil.isNotBlank(loginName)) { + user = userService.getUserByUsername(loginName); } - - AdminUserDO user = userService.getUserByWorkcode(workcode); + // 若未匹配到,再尝试用工号匹配(工号为空则不匹配) if (user == null) { - createLoginLog(null, workcode, LoginLogTypeEnum.LOGIN_SOCIAL, LoginResultEnum.BAD_CREDENTIALS); - log.warn("E办OAuth2用户工号未在系统中找到对应账号: {}", workcode); + String workcode = StrUtil.trim(StrUtil.blankToDefault(userInfo.getLoginName(), userInfo.getUsername())); + if (StrUtil.isNotBlank(workcode)) { + user = userService.getUserByWorkcode(workcode); + } + } + if (user == null) { + createLoginLog(null, loginName, LoginLogTypeEnum.LOGIN_SOCIAL, LoginResultEnum.BAD_CREDENTIALS); + log.warn("E办OAuth2 用户未找到匹配账号,loginName={} workcode={}", loginName, userInfo.getUsername()); throw exception(AUTH_LOGIN_EBAN_USER_NOT_SYNC); }