Commit 6b070a7ff9fd2093fd351573afa9475c10fa2d05
Merge branch '2024-03-13' into 'master_dev'
fix:组织编辑bug See merge request yunteng/thingskit!367
Showing
1 changed file
with
17 additions
and
10 deletions
... | ... | @@ -196,12 +196,16 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
196 | 196 | } else { |
197 | 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 | 209 | return organizationDTO; |
206 | 210 | } |
207 | 211 | |
... | ... | @@ -389,14 +393,17 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
389 | 393 | public void invalidateParentAndMeCacheByTenantIdAndId(String tenantId, boolean isAdd, String sourceParentOrganizationId, |
390 | 394 | String targetOrganizationId) { |
391 | 395 | if(!isAdd && StringUtils.isNotEmpty(sourceParentOrganizationId)){ |
392 | - //原组织缓存 | |
396 | + //原组织缓存 | |
393 | 397 | List<OrganizationDTO> sourceParentOrganizationIds = |
394 | 398 | findOrganizationTreeList(tenantId,OrganizationEnum.UP,List.of(sourceParentOrganizationId)); |
395 | 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 | } | ... | ... |