Commit c1535a1730339796c37527007f68e636b7b092db
1 parent
8d764d17
fix(DEFECT-403): 租户编辑或删除影响同角色租户管理员问题修复
Showing
1 changed file
with
15 additions
and
22 deletions
@@ -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(); |