Commit c1535a1730339796c37527007f68e636b7b092db

Authored by 云中非
1 parent 8d764d17

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

... ... @@ -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();
... ...