Commit 9c738debc00378c9df5e6a45847b325e6caf186c

Authored by xp.Huang
1 parent ed7c4c12

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

@@ -766,6 +766,32 @@ public class SysUserServiceImpl extends AbstractBaseService<UserMapper, SysUserE @@ -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 private void checkPassword(AccountReqDTO accountReqDTO, SysUserEntity user) { 795 private void checkPassword(AccountReqDTO accountReqDTO, SysUserEntity user) {
770 if (null == user 796 if (null == user
771 || StringUtils.isEmpty(accountReqDTO.getPassword()) 797 || StringUtils.isEmpty(accountReqDTO.getPassword())
@@ -142,8 +142,10 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe @@ -142,8 +142,10 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
142 menuMapper.deleteTenantMenuMappingByMenuIds(allMenuIds); 142 menuMapper.deleteTenantMenuMappingByMenuIds(allMenuIds);
143 } 143 }
144 // 4. DELETE USER 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 // 5. TELL RULE ENGINE TO STOP TENANT 149 // 5. TELL RULE ENGINE TO STOP TENANT
148 // 6. DELETE OTHER RESOURCES IF ANY 150 // 6. DELETE OTHER RESOURCES IF ANY
149 // 7. DELETE ORGANIZATION 151 // 7. DELETE ORGANIZATION
@@ -184,6 +186,8 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe @@ -184,6 +186,8 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
184 baseMapper.deleteBatchIds(ids); 186 baseMapper.deleteBatchIds(ids);
185 // 17. DELETE DEVICE_PROFILE 187 // 17. DELETE DEVICE_PROFILE
186 tkDeviceProfileService.deleteDataByTenantIds(tenantIds); 188 tkDeviceProfileService.deleteDataByTenantIds(tenantIds);
  189 + // 18. 删除用户与角色的映射表
  190 +
187 return Futures.immediateFuture(true); 191 return Futures.immediateFuture(true);
188 }, 192 },
189 MoreExecutors.directExecutor()); 193 MoreExecutors.directExecutor());
@@ -166,4 +166,18 @@ public interface TkUserService { @@ -166,4 +166,18 @@ public interface TkUserService {
166 */ 166 */
167 void updateTenantAdminUserCredentials( 167 void updateTenantAdminUserCredentials(
168 List<UserId> ids, String currentTenantId, boolean userCredentialsEnabled,boolean needUpdateStatus); 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 }