jeecgboot/JeecgBoot · warning · JeecgBootBizTipException
管理员已拒绝您加入租户,请联系租户管理员
Error message
管理员已拒绝您加入租户,请联系租户管理员
What it means
Thrown during the 'apply to join tenant' flow when an existing SysUserTenant relation is found with status USER_TENANT_REFUSE — an admin previously rejected the user's join request. JeecgBootBizTipException is used so the message is shown verbatim. This is a hard stop; the user cannot self-rejoin without admin action.
Source
Thrown at jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java:243
@CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true)
public Integer joinTenantByHouseNumber(SysTenant sysTenant, String userId) {
LambdaQueryWrapper<SysTenant> query = new LambdaQueryWrapper<>();
query.eq(SysTenant::getHouseNumber,sysTenant.getHouseNumber());
SysTenant one = this.getOne(query);
//需要返回租户id(用于前台更新缓存),返回0则代表当前租户门牌号不存在
if(null == one){
return 0;
}else{
LambdaQueryWrapper<SysUserTenant> relationQuery = new LambdaQueryWrapper<>();
relationQuery.eq(SysUserTenant::getTenantId,one.getId());
relationQuery.eq(SysUserTenant::getUserId,userId);
SysUserTenant relation = userTenantMapper.selectOne(relationQuery);
if(relation != null){
String msg = "";
if(CommonConstant.USER_TENANT_UNDER_REVIEW.equals(relation.getStatus())){
msg = ",状态:审核中";
}else if(CommonConstant.USER_TENANT_REFUSE.equals(relation.getStatus())){
throw new JeecgBootBizTipException("管理员已拒绝您加入租户,请联系租户管理员");
}else if(CommonConstant.USER_TENANT_QUIT.equals(relation.getStatus())){
msg = ",状态:已离职";
}
throw new JeecgBootBizTipException("您已是该租户成员"+msg);
}
//用户加入门牌号审核中状态
SysUserTenant tenant = new SysUserTenant();
tenant.setTenantId(one.getId());
tenant.setUserId(userId);
tenant.setStatus(CommonConstant.USER_TENANT_UNDER_REVIEW);
userTenantMapper.insert(tenant);
// QQYUN-4526【应用】组织加入通知
sendMsgForApplyJoinTenant(userId, one);
return tenant.getTenantId();
}
}
View on GitHub (pinned to 96fb33f5ec)
Solutions
- Contact the tenant administrator to re-issue an invitation or reset the relation status.
- Admin can delete the refused SysUserTenant row so the user can submit a fresh application.
- Admin can update the relation status to under-review to re-open the application.
- If the refusal was erroneous, admin flips status to normal/active to admit the user.
Example fix
// No caller-side fix; this is a policy gate. Admin action required. // Admin reset example (DB or service layer): // UPDATE sys_tenant_user_relation SET status = 'underReview' WHERE user_id=? AND tenant_id=?;
Defensive patterns
Strategy: try-catch
Try / catch
try {
sysTenantService.applyJoinTenant(tenantId);
} catch (JeecgBootBizTipException e) {
if (e.getMessage().contains("已拒绝")) {
return Result.error("您的申请已被拒绝,请联系租户管理员");
}
throw e;
} Prevention
- Admin must reset/delete the refused relation before the user can reapply.
- Frontend should disable re-apply for tenants in 'refused' state.
- Communicate the refusal reason to the user.
When it happens
Trigger: A user applies to join a tenant (the method that builds the under-review relation) but a prior relation row already exists with status = refuse. The branch throws immediately rather than re-creating the application.
Common situations: User was rejected, then immediately tries to apply again; admin rejected then the user retries from another client; stale 'refuse' row not cleared after a policy change.
Related errors
- 你不是当前租户的组织账户管理员或超级管理员,无法进行此操作!
- 手机号用户:{phone} 昵称:{realname},{tenantErrorInfo}
- 您已是该租户成员{msg}
- 您不是当前组织的管理员,无法删除用户!
- 用户没有离职,不允许删除!
AI-assisted analysis of jeecgboot/JeecgBoot@96fb33f5ec (2026-08-14).
Data as JSON: /api/errors/448004e6b1644dd0.
Report an issue: GitHub.