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 | 198 | |
199 | 199 | /** |
200 | 200 | * 刷新租户管理员与角色关系 |
201 | + * 1、1个租户1个角色;1个角色多个租户 | |
202 | + * 2、1个角色多个用户(租户管理员) | |
201 | 203 | * |
202 | 204 | * @param tenantIds 租户ID |
203 | 205 | * @param newRoles 新增的角色ID |
204 | 206 | */ |
205 | 207 | private void freshTenantAdminRole(Set<String> tenantIds, List<String> newRoles) { |
206 | - AtomicBoolean notChanged = new AtomicBoolean(false); | |
207 | 208 | LambdaQueryWrapper<TenantRole> roleFilter = new QueryWrapper<TenantRole>().lambda() |
208 | 209 | .in(TenantRole::getTenantId, tenantIds); |
209 | - List<String> oldRoleIds = tenantRoleMapper.selectList(roleFilter).stream() | |
210 | + List<String> deleteIds = tenantRoleMapper.selectList(roleFilter).stream() | |
210 | 211 | .map(i -> i.getRoleId()) |
211 | 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 | 214 | LambdaQueryWrapper<User> userFilter = new QueryWrapper<User>().lambda() |
234 | 215 | .eq(User::getLevel,2) |
235 | 216 | .in(User::getTenantId, tenantIds); |
236 | 217 | List<String> userIds = userMapper.selectList(userFilter).stream() |
237 | 218 | .map(m -> m.getId()) |
238 | 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 | 232 | userIds.forEach(item -> { |
240 | 233 | for (String roleId : newRoles) { |
241 | 234 | UserRole role = new UserRole(); | ... | ... |