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;