fix(user): 修复默认角色创建时租户不存在校验问题
- 增加根据邮箱查询账号的方法,忽略租户隔离 - 引入 TenantService 以校验租户是否存在 - 在创建默认“用户”角色时添加租户存在性校验 - 防止因租户缺失导致外键约束失败异常
This commit is contained in:
@@ -81,6 +81,15 @@ public interface UserMapper extends BaseMapper<User> {
|
|||||||
@InterceptorIgnore(tenantLine = "true")
|
@InterceptorIgnore(tenantLine = "true")
|
||||||
List<User> selectAccountsByPhone(@Param("phone") String phone);
|
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;
|
private OrganizationService organizationService;
|
||||||
@Resource
|
@Resource
|
||||||
private UserRefereeService userRefereeService;
|
private UserRefereeService userRefereeService;
|
||||||
|
@Resource
|
||||||
|
private TenantService tenantService;
|
||||||
|
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
private SyncMessageProducer syncMessageProducer;
|
private SyncMessageProducer syncMessageProducer;
|
||||||
@@ -346,6 +348,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|||||||
role = roleService.getOne(roleQw, false);
|
role = roleService.getOne(roleQw, false);
|
||||||
// If the default "user" role is missing (fresh DB / incomplete init), create it to avoid empty roles.
|
// 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)) {
|
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();
|
Role defaultRole = new Role();
|
||||||
defaultRole.setRoleName("注册用户");
|
defaultRole.setRoleName("注册用户");
|
||||||
defaultRole.setRoleCode("user");
|
defaultRole.setRoleCode("user");
|
||||||
|
|||||||
Reference in New Issue
Block a user