fix(user): 修复默认角色创建时租户不存在校验问题
- 增加根据邮箱查询账号的方法,忽略租户隔离 - 引入 TenantService 以校验租户是否存在 - 在创建默认“用户”角色时添加租户存在性校验 - 防止因租户缺失导致外键约束失败异常
This commit is contained in:
@@ -81,6 +81,15 @@ public interface UserMapper extends BaseMapper<User> {
|
||||
@InterceptorIgnore(tenantLine = "true")
|
||||
List<User> selectAccountsByPhone(@Param("phone") String phone);
|
||||
|
||||
/**
|
||||
* 根据邮箱查询所有账号(忽略租户隔离)
|
||||
*
|
||||
* @param email 邮箱
|
||||
* @return List<User>
|
||||
*/
|
||||
@InterceptorIgnore(tenantLine = "true")
|
||||
List<User> selectAccountsByEmail(@Param("email") String email);
|
||||
|
||||
/**
|
||||
* 根据手机号统计账号数量(忽略租户隔离)
|
||||
*
|
||||
|
||||
@@ -54,6 +54,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> 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<UserMapper, User> 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");
|
||||
|
||||
Reference in New Issue
Block a user