Showing
1 changed file
with
17 additions
and
10 deletions
@@ -196,12 +196,16 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -196,12 +196,16 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
196 | } else { | 196 | } else { |
197 | organization.setParentId(null); | 197 | organization.setParentId(null); |
198 | } | 198 | } |
199 | - baseMapper.updateById(organization); | ||
200 | - organization.copyToDTO(organizationDTO); | ||
201 | - //父级组织有变化才更新 | ||
202 | - if(!organizationDTO.getParentId().equals(sourceParentOrganizationId)){ | ||
203 | - invalidateParentAndMeCacheByTenantIdAndId(tenantId,false,organizationDTO.getParentId(),organization.getId()); | 199 | + |
200 | + String parentId = organizationDTO.getParentId(); | ||
201 | + // 只要变更上级id都向上清除原上级以及目标上级缓存 | ||
202 | + if((StringUtils.isEmpty(parentId)&&StringUtils.isNotEmpty(sourceParentOrganizationId))||//顶级变次级 原为null | ||
203 | + (StringUtils.isEmpty(sourceParentOrganizationId)&&StringUtils.isNotEmpty(parentId))||//次级便顶级 目标为null | ||
204 | + (StringUtils.isNotEmpty(parentId)&&!parentId.equals(sourceParentOrganizationId))){//正常变化 | ||
205 | + invalidateParentAndMeCacheByTenantIdAndId(tenantId,false,sourceParentOrganizationId,parentId); | ||
204 | } | 206 | } |
207 | + | ||
208 | + baseMapper.updateById(organization); | ||
205 | return organizationDTO; | 209 | return organizationDTO; |
206 | } | 210 | } |
207 | 211 | ||
@@ -389,14 +393,17 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | @@ -389,14 +393,17 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM | ||
389 | public void invalidateParentAndMeCacheByTenantIdAndId(String tenantId, boolean isAdd, String sourceParentOrganizationId, | 393 | public void invalidateParentAndMeCacheByTenantIdAndId(String tenantId, boolean isAdd, String sourceParentOrganizationId, |
390 | String targetOrganizationId) { | 394 | String targetOrganizationId) { |
391 | if(!isAdd && StringUtils.isNotEmpty(sourceParentOrganizationId)){ | 395 | if(!isAdd && StringUtils.isNotEmpty(sourceParentOrganizationId)){ |
392 | - //原组织缓存 | 396 | + //原组织缓存 |
393 | List<OrganizationDTO> sourceParentOrganizationIds = | 397 | List<OrganizationDTO> sourceParentOrganizationIds = |
394 | findOrganizationTreeList(tenantId,OrganizationEnum.UP,List.of(sourceParentOrganizationId)); | 398 | findOrganizationTreeList(tenantId,OrganizationEnum.UP,List.of(sourceParentOrganizationId)); |
395 | sourceParentOrganizationIds.forEach(org->cacheUtils.invalidate(cacheName,tenantId + "_" + org.getId())); | 399 | sourceParentOrganizationIds.forEach(org->cacheUtils.invalidate(cacheName,tenantId + "_" + org.getId())); |
396 | } | 400 | } |
397 | - //目标组织缓存 | ||
398 | - List<OrganizationDTO> targetOrganizationIds = | ||
399 | - findOrganizationTreeList(tenantId,OrganizationEnum.UP,List.of(targetOrganizationId)); | ||
400 | - targetOrganizationIds.forEach(org->cacheUtils.invalidate(cacheName,tenantId + "_" + org.getId())); | 401 | + if(!isAdd && StringUtils.isNotEmpty(targetOrganizationId)){ |
402 | + //目标组织缓存 | ||
403 | + List<OrganizationDTO> targetOrganizationIds = | ||
404 | + findOrganizationTreeList(tenantId,OrganizationEnum.UP,List.of(targetOrganizationId)); | ||
405 | + targetOrganizationIds.forEach(org->cacheUtils.invalidate(cacheName,tenantId + "_" + org.getId())); | ||
406 | + } | ||
407 | + | ||
401 | } | 408 | } |
402 | } | 409 | } |