Commit 9c738debc00378c9df5e6a45847b325e6caf186c
1 parent
ed7c4c12
fix: [DEFECT-1521] 删除租户时,同时删除用户与角色的关系映射
Showing
3 changed files
with
46 additions
and
2 deletions
... | ... | @@ -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 | } | ... | ... |