From f64d9b63549277734e27055635c1157452043fc4 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Mon, 19 Jun 2023 15:59:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=9E=B6=E6=9E=84=E7=9B=91?= =?UTF-8?q?=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/dao/RegionDAO.java | 22 +++++++++++++++++++ .../com/cool/store/mapper/RegionMapper.java | 13 +++++++++++ .../main/resources/mapper/RegionMapper.xml | 8 +++++++ .../store/service/EnterpriseSyncService.java | 3 +++ .../impl/EnterpriseSyncServiceImpl.java | 17 ++++++++++++-- 5 files changed, 61 insertions(+), 2 deletions(-) diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDAO.java index 1318be319..4e0b2b782 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionDAO.java @@ -74,4 +74,26 @@ public class RegionDAO { return regionMapper.getRegionInfoByRegionId(regionId); } + /** + * 判断一个节点是否是叶子节点 + * @param regionId + * @return + */ + public boolean isLeafNode(String regionId){ + Integer subCount = regionMapper.getSubNodeCountByRegionId(regionId); + return subCount <= CommonConstants.ZERO; + } + + /** + * 删除区域 + * @param regionId + * @return + */ + public Integer deleteRegionByRegionId(String regionId){ + if(StringUtils.isBlank(regionId)){ + return CommonConstants.ZERO; + } + return regionMapper.deleteRegionByRegionId(regionId); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java index 6d7e785f2..d3ce3ebd2 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionMapper.java @@ -58,4 +58,17 @@ public interface RegionMapper { * @return */ RegionDO getRegionInfoByRegionId(@Param("regionId") String regionId); + + /** + * 获取区域的子节点个数 + * @return + */ + Integer getSubNodeCountByRegionId(@Param("regionId") String regionId); + + /** + * 删除区域 + * @param regionId + * @return + */ + Integer deleteRegionByRegionId(@Param("regionId") String regionId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml index 95576d52f..c6f5aeb70 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionMapper.xml @@ -196,4 +196,12 @@ where deleted = 0 and region_id= #{regionId} + + + + + update region set deleted = 1 where region_id = #{regionId} + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java index 28bc91c6a..26ad47d82 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/EnterpriseSyncService.java @@ -11,6 +11,9 @@ import com.cool.store.dto.dept.DepartmentEventDTO; */ public interface EnterpriseSyncService { + /** + * 全量同步 + */ void syncAll(); /** diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java index 564dbfe43..450fb20fe 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java @@ -85,7 +85,10 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { } } - + /** + * 同步组织架构 + * @return + */ private Pair, Multimap> syncRegion(){ //同步部门 List departments = isvHttpRequest.getSubDepartments(CommonConstants.ROOT_DEPT_ID_STR, true); @@ -239,13 +242,23 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { dealUserLeaderDept(updateLeaderDeptMap); break; case DEPARTMENT_DELETED: - syncAll(); + boolean leafNode = regionDAO.isLeafNode(departmentDetail.getId()); + if(leafNode){ + //叶子节点的时候会删除部门 + regionDAO.deleteRegionByRegionId(departmentDetail.getId()); + }else{ + syncAll(); + } break; default: return; } } + /** + * 处理用户负责部门信息 + * @param leaderDeptMap + */ public void dealUserLeaderDept(Multimap leaderDeptMap){ if(leaderDeptMap.isEmpty()){ return;