diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/service/BackDoorLoginService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/service/BackDoorLoginService.java index 9d4a864..9ca184c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/service/BackDoorLoginService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/service/BackDoorLoginService.java @@ -156,12 +156,16 @@ public class BackDoorLoginService { throw new ServiceException("企业账号不存在"); } - if (!UserStatus.OK.getCode().equals(appUser.getDelFlag())) + // HighGo 中 app_user.status 是 CHAR(2),JDBC 会保留定长字段的尾部空格。 + // SQL 比较会将 "0 " 视为 "0",Java 字符串比较则不会;统一 trim,确保 + // 列表筛选与登录时的状态判断使用完全相同的语义。 + String delFlag = StringUtils.trimToEmpty(appUser.getDelFlag()); + String status = StringUtils.trimToEmpty(appUser.getStatus()); + if (!UserStatus.OK.getCode().equals(delFlag)) { throw new ServiceException("企业账号已删除,不能登录"); } - if (StringUtils.isNotBlank(appUser.getStatus()) - && !UserStatus.OK.getCode().equals(appUser.getStatus())) + if (StringUtils.isNotEmpty(status) && !UserStatus.OK.getCode().equals(status)) { throw new ServiceException("企业账号已停用,不能登录"); } diff --git a/ruoyi-admin/src/test/java/com/ruoyi/web/service/BackDoorLoginServiceTest.java b/ruoyi-admin/src/test/java/com/ruoyi/web/service/BackDoorLoginServiceTest.java index ac31a3a..1394654 100644 --- a/ruoyi-admin/src/test/java/com/ruoyi/web/service/BackDoorLoginServiceTest.java +++ b/ruoyi-admin/src/test/java/com/ruoyi/web/service/BackDoorLoginServiceTest.java @@ -200,6 +200,20 @@ class BackDoorLoginServiceTest verify(tokenService, never()).createTokenHourTwo(org.mockito.ArgumentMatchers.any()); } + @Test + void loginCompanyAcceptsPaddedHighGoActiveStatus() + { + AppUser company = activeCompany(66L); + company.setStatus("0 "); + when(sysUserService.selectAppUserById(66L)).thenReturn(company); + when(sysLoginService.loginUserIdApp(company)).thenReturn("company-site-token"); + + CompanyLoginSession session = service.loginCompany(66L); + + assertEquals("company-site-token", session.getToken()); + verify(sysLoginService).loginUserIdApp(company); + } + @Test void loginCompanyRejectsNonCompanyAccount() {