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,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 | } |