|
@@ -42,7 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import static org.dromara.common.core.constant.Constants.THR;
|
|
|
|
|
|
+import static org.dromara.common.core.constant.Constants.*;
|
|
import static org.dromara.common.core.constant.TenantConstants.*;
|
|
import static org.dromara.common.core.constant.TenantConstants.*;
|
|
import static org.dromara.common.core.enums.UserType.APP_STAFF;
|
|
import static org.dromara.common.core.enums.UserType.APP_STAFF;
|
|
import static org.dromara.common.core.enums.UserType.PC_USER;
|
|
import static org.dromara.common.core.enums.UserType.PC_USER;
|
|
@@ -350,10 +350,30 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
@CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId")
|
|
@CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId")
|
|
@Override
|
|
@Override
|
|
public int updateTenantStatus(SysTenantBo bo) {
|
|
public int updateTenantStatus(SysTenantBo bo) {
|
|
- SysTenant tenant = new SysTenant();
|
|
|
|
- tenant.setId(bo.getId());
|
|
|
|
- tenant.setStatus(bo.getStatus());
|
|
|
|
- return baseMapper.updateById(tenant);
|
|
|
|
|
|
+ SysTenant tenan = new SysTenant();
|
|
|
|
+ //启用账号
|
|
|
|
+ if(SUCCESS.equals(bo.getStatus())){
|
|
|
|
+ //判断是否存在相同名字的租户
|
|
|
|
+ SysTenantBo sbo = new SysTenantBo();
|
|
|
|
+ sbo.setCompanyName(bo.getCompanyName());
|
|
|
|
+ LambdaQueryWrapper<SysTenant> lqw = buildQueryWrapper(bo);
|
|
|
|
+ List<SysTenantVo> sysTenantVos = baseMapper.selectVoList(lqw);
|
|
|
|
+ if(sysTenantVos!=null && sysTenantVos.size()>1){
|
|
|
|
+ throw new ServiceException("存在相同名字租户");
|
|
|
|
+ }
|
|
|
|
+ SysTenant tenant = MapstructUtils.convert(bo.getTenantId(), SysTenant.class);
|
|
|
|
+ List<SysUser> userList = userMapper.selectUserByTenant(tenant.getTenantId(),TENANT_ADMIN_ROLE_KEY);
|
|
|
|
+ for (SysUser sysUser : userList) {
|
|
|
|
+ sysUser.setDelFlag(SUCCESS);
|
|
|
|
+ sysUserTenantMapper.updateByTenantId(tenant.getTenantId(),sysUser.getUserId(),SUCCESS);
|
|
|
|
+ }
|
|
|
|
+ userMapper.updateBatchById(userList);
|
|
|
|
+ tenan.setDelFlag(SUCCESS);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ tenan.setId(bo.getId());
|
|
|
|
+ tenan.setStatus(bo.getStatus());
|
|
|
|
+ return baseMapper.updateById(tenan);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -380,6 +400,22 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
throw new ServiceException("超管租户不能删除");
|
|
throw new ServiceException("超管租户不能删除");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ for (Long id : ids) {
|
|
|
|
+ //查询租户信息
|
|
|
|
+ SysTenant tenant = MapstructUtils.convert(id, SysTenant.class);
|
|
|
|
+ //删除租户管理员账号,判断账号是否只有一个租户
|
|
|
|
+ List<SysUser> userList = userMapper.selectUserByTenant(tenant.getTenantId(),TENANT_ADMIN_ROLE_KEY);
|
|
|
|
+ for (SysUser sysUser : userList) {
|
|
|
|
+ //判断账号是否存在其他租户
|
|
|
|
+ int count = sysUserTenantMapper.selectByUserId(sysUser.getUserId());
|
|
|
|
+ //不删除账号只删除中间表
|
|
|
|
+ sysUserTenantMapper.updateByTenantId(tenant.getTenantId(),sysUser.getUserId(),ONE);
|
|
|
|
+ if(count<=1){
|
|
|
|
+ //删除账号
|
|
|
|
+ userMapper.deleteById(sysUser.getUserId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
}
|
|
}
|
|
|
|
|