Commit 9c738debc00378c9df5e6a45847b325e6caf186c

Authored by xp.Huang
1 parent ed7c4c12

fix: [DEFECT-1521] 删除租户时,同时删除用户与角色的关系映射

... ... @@ -766,6 +766,32 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE
766 766 }
767 767 }
768 768
  769 + @Override
  770 + @Transactional
  771 + public boolean deleteUserAndRoleMapping(List<String> userIds,String tenantId) {
  772 + if(StringUtils.isEmpty(tenantId) || null == userIds || userIds.isEmpty()){
  773 + return false;
  774 + }
  775 + boolean result;
  776 + result = baseMapper.delete(new LambdaQueryWrapper<SysUserEntity>().eq(SysUserEntity::getTenantId,tenantId).in(
  777 + SysUserEntity::getId,userIds))> MagicNumber.ZERO;
  778 + if(result){
  779 + result = userRoleMapper.delete(new LambdaQueryWrapper<SysUserRoleEntity>().in(SysUserRoleEntity::getUserId,
  780 + userIds))>MagicNumber.ZERO;
  781 + }
  782 + return result;
  783 + }
  784 +
  785 + @Override
  786 + public List<String> findUserIdsByTenantId(String tenantId) {
  787 + List<SysUserEntity> entities = baseMapper.selectList(new LambdaQueryWrapper<SysUserEntity>().
  788 + eq(SysUserEntity::getTenantId,tenantId));
  789 + if(null == entities || entities.isEmpty()){
  790 + return null;
  791 + }
  792 + return entities.stream().map(entity->entity.getId()).collect(Collectors.toList());
  793 + }
  794 +
769 795 private void checkPassword(AccountReqDTO accountReqDTO, SysUserEntity user) {
770 796 if (null == user
771 797 || StringUtils.isEmpty(accountReqDTO.getPassword())
... ...
... ... @@ -142,8 +142,10 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
142 142 menuMapper.deleteTenantMenuMappingByMenuIds(allMenuIds);
143 143 }
144 144 // 4. DELETE USER
145   - userMapper.delete(
146   - new QueryWrapper<SysUserEntity>().lambda().in(SysUserEntity::getTenantId, tenantIds));
  145 + for (String tenantId:tenantIds){
  146 + //查询该租户下有多少用户
  147 + tkUserService.deleteUserAndRoleMapping(tkUserService.findUserIdsByTenantId(tenantId),tenantId);
  148 + }
147 149 // 5. TELL RULE ENGINE TO STOP TENANT
148 150 // 6. DELETE OTHER RESOURCES IF ANY
149 151 // 7. DELETE ORGANIZATION
... ... @@ -184,6 +186,8 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
184 186 baseMapper.deleteBatchIds(ids);
185 187 // 17. DELETE DEVICE_PROFILE
186 188 tkDeviceProfileService.deleteDataByTenantIds(tenantIds);
  189 + // 18. 删除用户与角色的映射表
  190 +
187 191 return Futures.immediateFuture(true);
188 192 },
189 193 MoreExecutors.directExecutor());
... ...
... ... @@ -166,4 +166,18 @@ public interface TkUserService {
166 166 */
167 167 void updateTenantAdminUserCredentials(
168 168 List<UserId> ids, String currentTenantId, boolean userCredentialsEnabled,boolean needUpdateStatus);
  169 +
  170 + /**
  171 + * 通过租户ID删除用户和用户的角色关系表
  172 + * @param userIds 用户IDS
  173 + * @param tenantId 租户ID
  174 + */
  175 + boolean deleteUserAndRoleMapping(List<String> userIds,String tenantId);
  176 +
  177 + /**
  178 + * 根据租户ID,查找所有的用户ID
  179 + * @param tenantId 租户ID
  180 + * @return 用户ID列表
  181 + */
  182 + List<String> findUserIdsByTenantId(String tenantId);
169 183 }
... ...