Commit c1535a1730339796c37527007f68e636b7b092db

Authored by 云中非
1 parent 8d764d17

fix(DEFECT-403): 租户编辑或删除影响同角色租户管理员问题修复

@@ -198,44 +198,37 @@ public class YtTenantServiceImpl extends AbstractBaseService<TenantMapper, Tenan @@ -198,44 +198,37 @@ public class YtTenantServiceImpl extends AbstractBaseService<TenantMapper, Tenan
198 198
199 /** 199 /**
200 * 刷新租户管理员与角色关系 200 * 刷新租户管理员与角色关系
  201 + * 1、1个租户1个角色;1个角色多个租户
  202 + * 2、1个角色多个用户(租户管理员)
201 * 203 *
202 * @param tenantIds 租户ID 204 * @param tenantIds 租户ID
203 * @param newRoles 新增的角色ID 205 * @param newRoles 新增的角色ID
204 */ 206 */
205 private void freshTenantAdminRole(Set<String> tenantIds, List<String> newRoles) { 207 private void freshTenantAdminRole(Set<String> tenantIds, List<String> newRoles) {
206 - AtomicBoolean notChanged = new AtomicBoolean(false);  
207 LambdaQueryWrapper<TenantRole> roleFilter = new QueryWrapper<TenantRole>().lambda() 208 LambdaQueryWrapper<TenantRole> roleFilter = new QueryWrapper<TenantRole>().lambda()
208 .in(TenantRole::getTenantId, tenantIds); 209 .in(TenantRole::getTenantId, tenantIds);
209 - List<String> oldRoleIds = tenantRoleMapper.selectList(roleFilter).stream() 210 + List<String> deleteIds = tenantRoleMapper.selectList(roleFilter).stream()
210 .map(i -> i.getRoleId()) 211 .map(i -> i.getRoleId())
211 .collect(Collectors.toList()); 212 .collect(Collectors.toList());
212 - List<String> deleteIds = oldRoleIds.stream()  
213 - .filter(f -> {  
214 - if(newRoles == null || newRoles.isEmpty()){  
215 - return true;  
216 - }  
217 - if(newRoles.contains(f)){  
218 - notChanged.set(true);  
219 - return false;  
220 - }  
221 - return true;  
222 - })  
223 - .collect(Collectors.toList());  
224 - if(!deleteIds.isEmpty()){  
225 - LambdaQueryWrapper<UserRole> filter = new QueryWrapper<UserRole>().lambda()  
226 - .in(UserRole::getRoleId, deleteIds);  
227 - userRoleMapper.delete(filter);  
228 - }  
229 213
230 - if (notChanged.get() || newRoles == null || newRoles.isEmpty()) {  
231 - return;  
232 - }  
233 LambdaQueryWrapper<User> userFilter = new QueryWrapper<User>().lambda() 214 LambdaQueryWrapper<User> userFilter = new QueryWrapper<User>().lambda()
234 .eq(User::getLevel,2) 215 .eq(User::getLevel,2)
235 .in(User::getTenantId, tenantIds); 216 .in(User::getTenantId, tenantIds);
236 List<String> userIds = userMapper.selectList(userFilter).stream() 217 List<String> userIds = userMapper.selectList(userFilter).stream()
237 .map(m -> m.getId()) 218 .map(m -> m.getId())
238 .collect(Collectors.toList()); 219 .collect(Collectors.toList());
  220 +
  221 + if(!deleteIds.isEmpty() && !userIds.isEmpty()){
  222 + LambdaQueryWrapper<UserRole> filter = new QueryWrapper<UserRole>().lambda()
  223 + .in(UserRole::getRoleId, deleteIds)
  224 + .in(UserRole::getUserId,userIds);
  225 + userRoleMapper.delete(filter);
  226 + }
  227 +
  228 + if (newRoles == null || newRoles.isEmpty()
  229 + || userIds == null || userIds.isEmpty()) {
  230 + return;
  231 + }
239 userIds.forEach(item -> { 232 userIds.forEach(item -> {
240 for (String roleId : newRoles) { 233 for (String roleId : newRoles) {
241 UserRole role = new UserRole(); 234 UserRole role = new UserRole();