From 89571c81a4909f5dcbb8b8da4ac7bb2eba3ef26d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sat, 18 Jul 2026 11:18:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(user):=20=E4=BF=AE=E5=A4=8D=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E8=A7=92=E8=89=B2=E5=88=9B=E5=BB=BA=E6=97=B6=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E4=B8=8D=E5=AD=98=E5=9C=A8=E6=A0=A1=E9=AA=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加根据邮箱查询账号的方法,忽略租户隔离 - 引入 TenantService 以校验租户是否存在 - 在创建默认“用户”角色时添加租户存在性校验 - 防止因租户缺失导致外键约束失败异常 --- .../com/gxwebsoft/common/system/mapper/UserMapper.java | 9 +++++++++ .../common/system/service/impl/UserServiceImpl.java | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java index b889d0f..0dce068 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java @@ -81,6 +81,15 @@ public interface UserMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") List selectAccountsByPhone(@Param("phone") String phone); + /** + * 根据邮箱查询所有账号(忽略租户隔离) + * + * @param email 邮箱 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List selectAccountsByEmail(@Param("email") String email); + /** * 根据手机号统计账号数量(忽略租户隔离) * diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java index 2f5e20d..a5332f6 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java @@ -54,6 +54,8 @@ public class UserServiceImpl extends ServiceImpl implements Us private OrganizationService organizationService; @Resource private UserRefereeService userRefereeService; + @Resource + private TenantService tenantService; @Autowired(required = false) private SyncMessageProducer syncMessageProducer; @@ -346,6 +348,10 @@ public class UserServiceImpl extends ServiceImpl implements Us role = roleService.getOne(roleQw, false); // If the default "user" role is missing (fresh DB / incomplete init), create it to avoid empty roles. if (role == null && addUser.getTenantId() != null && "user".equals(roleCode)) { + // 校验租户是否存在,否则插入 sys_role 会因外键约束失败(tenant_id 引用 sys_tenant) + if (tenantService.getById(addUser.getTenantId()) == null) { + throw new BusinessException("租户不存在(tenantId=" + addUser.getTenantId() + "),无法创建默认角色"); + } Role defaultRole = new Role(); defaultRole.setRoleName("注册用户"); defaultRole.setRoleCode("user");