diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java index fc8cd9f6f..11fd97982 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/UserRegionMappingDAO.java @@ -39,6 +39,14 @@ public class UserRegionMappingDAO { return userRegionMappingMapper.deleteUserRegion(regionId, dataSourceEnum.getCode(), excludeUserIds); } + + public Integer deleteUserRegionByUserId(String userId, DataSourceEnum dataSourceEnum, List excludeRegionIds){ + if(StringUtils.isBlank(userId) || Objects.isNull(dataSourceEnum)){ + return null; + } + return userRegionMappingMapper.deleteUserRegionByExcludeRegionIds(userId, dataSourceEnum.getCode(), excludeRegionIds); + } + public Integer deleteRegionUserByExcludeRegionIds(List excludeRegionIds){ if(CollectionUtils.isEmpty(excludeRegionIds)){ return null; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java index acdcc490b..d12db9cac 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserRegionMappingMapper.java @@ -34,6 +34,15 @@ public interface UserRegionMappingMapper { */ int deleteUserRegion(@Param("regionId") String regionId, @Param("type")Integer type, @Param("excludeUserIds") List excludeUserIds); + /** + * 删除用户不存在的部门 + * @param userId + * @param type + * @param excludeRegionIds + * @return + */ + int deleteUserRegionByExcludeRegionIds(@Param("userId") String userId, @Param("type")Integer type, @Param("excludeRegionIds") List excludeRegionIds); + /** * 删除没有的部门映射关系 * @param excludeRegionIds diff --git a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml index 73df66fb5..b1b3a0835 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml @@ -111,6 +111,13 @@ + + update user_region_mapping set deleted = 1 where user_id = #{userId} and type = #{type} + + and region_id not in #{regionId} + + + update user_region_mapping set deleted = 1 where region_id not in #{regionId} 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 b90cc309a..a5c7912e8 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 @@ -187,6 +187,7 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService { regionPathMap = regionList.stream().collect(Collectors.toMap(k->k.getRegionId(), v->v.getRegionPath())); userRegionMappingDAO.batchInsertOrUpdateUserRegion(UserRegionMappingDO.convertSyncDO(departmentLists, userDetail.getUserId())); } + userRegionMappingDAO.deleteUserRegionByUserId(userDetail.getUserId(), DataSourceEnum.SYNC, departmentLists); String jobTitle = userDetail.getJobTitle(); if(StringUtils.isNotBlank(jobTitle)){ SysRoleDO role = sysRoleDAO.getRoleByName(jobTitle, DataSourceEnum.SYNC);