diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AuthRoleEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AuthRoleEnum.java new file mode 100644 index 000000000..f2507fce6 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AuthRoleEnum.java @@ -0,0 +1,58 @@ +package com.cool.store.enums; + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * describe: + * + * @author zhouyiping + * @date 2020/10/13 + */ +public enum AuthRoleEnum { + /** + * 全企业数据 + */ + ALL("all", "全企业数据"), + + /** + * 所在组织架构包含下级 + */ + INCLUDE_SUBORDINATE("include_subordinate","所在组织架构包含下级"), + + +// /** +// * 所在的组织架构不包含下级 +// */ + NOT_INCLUDE_SUBORDINATE("not_include_subordinate","所在的组织架构不包含下级"), + + /** + * 仅自己的数据 + */ + PERSONAL("personal","仅自己的数据"); + + private String code; + private String msg; + + protected static final Map map = Arrays.stream(values()).collect( + Collectors.toMap(AuthRoleEnum::getCode, Function.identity())); + + AuthRoleEnum(String code, String msg){ + this.code=code; + this.msg=msg; + } + + public String getCode() { + return code; + } + + public String getMsg() { + return msg; + } + public static AuthRoleEnum getByCode(String code) { + return map.get(code); + } + +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserAuthMappingTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserAuthMappingTypeEnum.java new file mode 100644 index 000000000..7623ef611 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserAuthMappingTypeEnum.java @@ -0,0 +1,44 @@ +package com.cool.store.enums; + + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author zyp + */ +public enum UserAuthMappingTypeEnum { + /** + * 区域 + */ + REGION("region","区域"), + /** + * 门店 + */ + STORE("store","门店"); + + private String code; + private String desc; + public static final Map map = Arrays.stream(values()).collect( + Collectors.toMap(UserAuthMappingTypeEnum::getCode, Function.identity())); + + UserAuthMappingTypeEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + public static UserAuthMappingTypeEnum getByCode(String code) { + return map.get(code); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionAreaConfigDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionAreaConfigDao.java index be97e1a12..3758e08bf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionAreaConfigDao.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/RegionAreaConfigDao.java @@ -27,6 +27,13 @@ public class RegionAreaConfigDao { regionAreaConfigMapper.deleteRegionAreaConfigByRegionId(regionId); } + public void deleteByWantShopAreaIds(List wantShopAreaIds) { + if (CollectionUtils.isEmpty(wantShopAreaIds)) { + return; + } + regionAreaConfigMapper.deleteByWantShopAreaIds(wantShopAreaIds); + } + public void batchInsertOrUpdateRegionAreaConfig(List regionAreaConfigList) { if (CollectionUtils.isEmpty(regionAreaConfigList)) { return; @@ -41,6 +48,13 @@ public class RegionAreaConfigDao { return regionAreaConfigMapper.listAreaByRegionId(regionId); } + public List listAreaByRegionIdList(List regionIdList){ + if (CollectionUtils.isEmpty(regionIdList)) { + return Collections.emptyList(); + } + return regionAreaConfigMapper.listAreaByRegionIdList(regionIdList); + } + public Long getByWantShopAreaId(Long wantShopAreaId){ if (wantShopAreaId == null) { return 0L; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionAreaConfigMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionAreaConfigMapper.java index 9c2cee905..003cddacf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionAreaConfigMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/RegionAreaConfigMapper.java @@ -41,10 +41,15 @@ public interface RegionAreaConfigMapper { void deleteRegionAreaConfigByRegionId(@Param("regionId") Long regionId); + void deleteByWantShopAreaIds(@Param("wantShopAreaIds") List wantShopAreaIds); + void batchInsertOrUpdateRegionAreaConfig(@Param("regionAreaConfigList") List regionAreaConfigList); List listAreaByRegionId(@Param("regionId") Long regionId); Long getByWantShopAreaId(@Param("wantShopAreaId") Long wantShopAreaId); + List listAreaByRegionIdList(@Param("regionIdList") List regionIdList); + + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserAuthMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserAuthMappingMapper.java new file mode 100644 index 000000000..bd16eeeef --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/UserAuthMappingMapper.java @@ -0,0 +1,107 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.UserAuthMappingDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 人员权限映射表 + * + * @author zyp + * @Description 人员权限映射 + */ +@Mapper +public interface UserAuthMappingMapper { + + /** + * 根据UserId获取权限 + * @param userId + * @return + */ + List listUserAuthMappingByUserId(@Param("userId") String userId); + + /** + * 根据UserId和权限来源获取权限 + + * @param userId + * @param source + * @return + */ + List listByUserIdAndSource( @Param("userId") String userId, @Param("source") String source); + /** + * 查询用户区域 + + * @param userList + * @return + */ + List listUserAuthMappingByUserIdList(@Param("userList") List userList); + + List listUserAuthMappingByMappingList(@Param("mappingIdList") List mappingIdList, + @Param("type") String type); + + /** + *查询不包含可视化范围的区域人员 + + * @param mappingIdList + * @return + */ + List listUserAuthMappingByAuth(@Param("type") String type, + @Param("mappingIdList") List mappingIdList, + @Param("positionType")String positionType, + @Param("notRoleAuth")String notRoleAuth); + + + List listUserAuthMappingByUserList(@Param("userIdList") List userIdList); + + + List listUserAuthMappingByUserAndType(@Param("userId") String userId, + @Param("type") String type); + /** + * 根据用户id获得权限映射信息主键列表 + + * @param userId + * @return: java.util.List + * @Author: xugangkun + * @Date: 2021/3/25 14:24 + */ + List selectIdsByUserId( @Param("userId") String userId); + + + List selectIdsByUserIds( @Param("userIds") List userIds); + + UserAuthMappingDO getUserAuthByUserIdAndMappingId( + @Param("userId") String userId, + @Param("mappingId") String mappingId, + @Param("type") String type); + + /** + * 分页订正 门店类型的权限 + * @param enterpriseId + * @return + */ + List listStoreAuthByEid(@Param("enterpriseId") String enterpriseId); + + List getAllAuthMapping(@Param("enterpriseId") String enterpriseId); + + List getUserIdsByMappingIds(@Param("mappingIdList") List mappingIdList); + + List getUserAuthByMappingIds(@Param("mappingIdList") List mappingIdList); + + List getMappingIdsByUserId(@Param("userId")String userId); + + + List getRegionIdByUserId(@Param("userId") String userId); + + /** + * 根据UserId和权限来源获取权限 + + * @param userIdList + * @param source + * @return + */ + List listByUserIdListAndSource(@Param("userIdList") List userIdList, @Param("source") String source); + + List getAllByUserIds(@Param("userIdsByRoleIdList") List userIdsByRoleIdList); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/RegionAreaConfigMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/RegionAreaConfigMapper.xml index af198b222..15e75011e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/RegionAreaConfigMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/RegionAreaConfigMapper.xml @@ -4,6 +4,7 @@ + @@ -12,7 +13,7 @@ - id, region_id, want_shop_area_id, create_time, update_time, create_user_id, update_user_id, + id, region_id, region_path, want_shop_area_id, create_time, update_time, create_user_id, update_user_id, deleted + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml new file mode 100644 index 000000000..ded24a4de --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionAreaConfigDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionAreaConfigDO.java index 42a714e70..319f6ce84 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionAreaConfigDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/RegionAreaConfigDO.java @@ -24,6 +24,9 @@ public class RegionAreaConfigDO implements Serializable { @ApiModelProperty("区域ID 战区id") private Long regionId; + @ApiModelProperty("区域路径") + private String regionPath; + @ApiModelProperty("意向开店区域 省市code") private Long wantShopAreaId; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/UserAuthMappingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserAuthMappingDO.java new file mode 100644 index 000000000..6ba2b2d91 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserAuthMappingDO.java @@ -0,0 +1,38 @@ +package com.cool.store.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * describe:人员权限映射表 + * + * @author zhouyiping + * @date 2020/10/10 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class UserAuthMappingDO { + private Long id; + private String userId; + private String mappingId; + private String type; + private String source; + private String createId; + private Long createTime; + private String updateId; + private Long updateTime; + + public UserAuthMappingDO(String userId, String mappingId, String type, String source, String createId, Long createTime) { + this.userId = userId; + this.mappingId = mappingId; + this.type = type; + this.source = source; + this.createId = createId; + this.createTime = createTime; + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/SysRoleService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/SysRoleService.java new file mode 100644 index 000000000..f153785cb --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/SysRoleService.java @@ -0,0 +1,8 @@ +package com.cool.store.service; + +public interface SysRoleService { + + Boolean checkIsAdmin(String userId); + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/UserAuthMappingService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/UserAuthMappingService.java new file mode 100644 index 000000000..69cd90e56 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/UserAuthMappingService.java @@ -0,0 +1,38 @@ +package com.cool.store.service; + +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.UserAuthMappingDO; + +import java.util.List; + +/** + * describe: + * + * @author wxp + * @date 2020/11/11 + */ +public interface UserAuthMappingService { + + /** + * 获取用户权限 + * @param userId + * @return + */ + List listUserAuthMappingByUserId(String userId); + + /** + * 提供 根据职位 意向区域 查 对应人的接口 同时返回人名字 + * @param roleId + * @param wantShopAreaId + * @return + */ + EnterpriseUserDO listUserByRoleIdAndAreaId(Long roleId, Long wantShopAreaId); + + /** + * 根据 人 查 这个人管辖区域 对应的意向区域省市code 团队线索 + * @param userId + * @return + */ + List listWantShopAreaIdByUserId(String userId); + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionAreaConfigServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionAreaConfigServiceImpl.java index 2a11cbc5c..1ee2a9dc4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionAreaConfigServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/RegionAreaConfigServiceImpl.java @@ -2,7 +2,11 @@ package com.cool.store.service.impl; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.RegionAreaConfigDao; +import com.cool.store.dao.RegionDao; import com.cool.store.entity.RegionAreaConfigDO; +import com.cool.store.entity.RegionDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; import com.cool.store.request.RegionAreaConfigAddRequest; import com.cool.store.service.RegionAreaConfigService; import lombok.extern.slf4j.Slf4j; @@ -27,17 +31,25 @@ public class RegionAreaConfigServiceImpl implements RegionAreaConfigService { @Resource private RegionAreaConfigDao regionAreaConfigDao; + @Resource + private RegionDao regionDao; + @Override public Boolean saveOrUpdateRegionAreaConfig(RegionAreaConfigAddRequest regionAreaConfigAddRequest, LoginUserInfo user) { + RegionDO regionDO = regionDao.getRegionById(regionAreaConfigAddRequest.getRegionId()); + if(regionDO == null){ + throw new ServiceException(ErrorCodeEnum.REGION_NOT_EXIST); + } List areaIdList = regionAreaConfigAddRequest.getAreaIdList(); if(CollectionUtils.isEmpty(areaIdList)){ return Boolean.TRUE; } - regionAreaConfigDao.deleteRegionAreaConfigByRegionId(regionAreaConfigAddRequest.getRegionId()); + regionAreaConfigDao.deleteByWantShopAreaIds(areaIdList); List regionAreaConfigList = new ArrayList<>(); for (Long areaId: areaIdList) { RegionAreaConfigDO regionAreaConfigDO = new RegionAreaConfigDO(); regionAreaConfigDO.setRegionId(regionAreaConfigAddRequest.getRegionId()); + regionAreaConfigDO.setRegionPath(regionDO.getFullRegionPath()); regionAreaConfigDO.setWantShopAreaId(areaId); regionAreaConfigDO.setCreateUserId(user.getUserId()); regionAreaConfigDO.setUpdateUserId(user.getUserId()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SysRoleServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SysRoleServiceImpl.java new file mode 100644 index 000000000..5e6dd5d6c --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,37 @@ +package com.cool.store.service.impl; + +import com.cool.store.entity.SysRoleDO; +import com.cool.store.enums.Role; +import com.cool.store.mapper.SysRoleMapper; +import com.cool.store.service.SysRoleService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 角色service + * @author wxp + */ +@Slf4j +@Service +public class SysRoleServiceImpl implements SysRoleService { + + @Resource + private SysRoleMapper sysRoleMapper; + + @Override + public Boolean checkIsAdmin(String userId) { + // 1.取出所有用户角色 + // 2.匹配是否有管理员角色 + List sysRoleDOList = sysRoleMapper.listRoleByUserId(userId); + return ListUtils.emptyIfNull(sysRoleDOList) + .stream() + .anyMatch(role-> StringUtils.equals(Role.MASTER.getRoleEnum(),role.getRoleEnum())); + } + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java new file mode 100644 index 000000000..94a5ff62c --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java @@ -0,0 +1,194 @@ +package com.cool.store.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.RegionAreaConfigDao; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.RegionAreaConfigDO; +import com.cool.store.entity.RegionDO; +import com.cool.store.entity.UserAuthMappingDO; +import com.cool.store.enums.AuthRoleEnum; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.Role; +import com.cool.store.enums.UserAuthMappingTypeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.RegionMapper; +import com.cool.store.mapper.SysRoleMapper; +import com.cool.store.mapper.UserAuthMappingMapper; +import com.cool.store.service.UserAuthMappingService; +import com.cool.store.vo.SysRoleVO; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * describe: + * @author wxp + * @date 2020/11/11 + */ +@Service +@Slf4j +public class UserAuthMappingServiceImpl implements UserAuthMappingService { + + @Resource + private UserAuthMappingMapper userAuthMappingMapper; + + @Resource + private RegionAreaConfigDao regionAreaConfigDao; + + @Resource + private SysRoleMapper sysRoleMapper; + + @Resource + private RegionMapper regionMapper; + + @Resource + private EnterpriseUserDAO enterpriseUserDAO; + + + @Override + public List listUserAuthMappingByUserId(String userId) { + if(StringUtils.isBlank(userId)){ + return Lists.newArrayList(); + } + return userAuthMappingMapper.listUserAuthMappingByUserId(userId); + } + + /** + * 提供 根据职位 意向区域 查 对应人的接口 同时返回人名字 + * @param roleId + * @param wantShopAreaId + * @return + */ + @Override + public EnterpriseUserDO listUserByRoleIdAndAreaId(Long roleId, Long wantShopAreaId) { + if(roleId == null || wantShopAreaId == null){ + return null; + } + Long warRegionId = regionAreaConfigDao.getByWantShopAreaId(wantShopAreaId); + // 查找有战区权限的人 + List authWarRegionUserIdList = authWarRegionUser(warRegionId); + List userIds = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId))); + authWarRegionUserIdList.retainAll(userIds); + List userDOList = enterpriseUserDAO.getUserInfoByUserIds(authWarRegionUserIdList); + // 用redis实现 用户列表轮询返回 + + return userDOList.get(0); + } + + /** + * 根据 人 查 这个人管辖区域 对应的意向区域省市code 团队线索 + * @param userId + * @return + */ + @Override + public List listWantShopAreaIdByUserId(String userId) { + List userAuthList = this.listUserAuthMappingByUserId(userId); + List authRegionIds = ListUtils.emptyIfNull(userAuthList) + .stream().map(UserAuthMappingDO::getMappingId) + .collect(Collectors.toList()); + List authRegionIdList = ListUtils.emptyIfNull(authRegionIds).stream().map(regionId -> Long.valueOf(regionId)).collect(Collectors.toList()); + List regionAreaConfigDOList = regionAreaConfigDao.listAreaByRegionIdList(authRegionIdList); + List wantShopAreaIdList = ListUtils.emptyIfNull(regionAreaConfigDOList) + .stream().map(RegionAreaConfigDO::getWantShopAreaId) + .collect(Collectors.toList()); + return wantShopAreaIdList; + } + + // 查找有战区权限的人 + public List authWarRegionUser(Long warRegionId) { + List result = new ArrayList<>(); + if(Objects.isNull(warRegionId)){ + return result; + } + RegionDO regionDO = regionMapper.getByRegionId(warRegionId); + if(regionDO == null){ + throw new ServiceException(ErrorCodeEnum.REGION_NOT_EXIST); + } + //将拥有管理员角色、角色属性为全企业数据的人查询出来 + List roleUserByRoleId = sysRoleMapper.getRoleUserByRoleEnum(Role.MASTER.getRoleEnum(), null); + List roleUserByRoleAuth = sysRoleMapper.getRoleUserByRoleAuth(AuthRoleEnum.ALL.getCode(), null); + //组合出拥有所有门店信息的人 + List allWarRegionUserIdList = getAllWarRegionAuthUserIdList(roleUserByRoleId, roleUserByRoleAuth); + //查询出有门店权限配置的的人员 + // 1.将门店区域切分出门店所属于的区域ID + // 2.将配置了区域的人 查询出来 + List fullAreaIdList = StrUtil.splitTrim(regionDO.getRegionPath(),"/"); + List lastAreaIdList = Collections.singletonList(String.valueOf(regionDO.getId())); + //除不包含子区域的可视化范围的区域配置。 + List regionUserAuthMappingList = + userAuthMappingMapper.listUserAuthMappingByAuth(UserAuthMappingTypeEnum.REGION.getCode(), fullAreaIdList, null, AuthRoleEnum.NOT_INCLUDE_SUBORDINATE.getCode()); + //不包含子区域的的直属连接门店的区域下的配置(会重复一些选择了上面数据) + List notIncludeRegionUserAuthMappingList = + userAuthMappingMapper.listUserAuthMappingByAuth(UserAuthMappingTypeEnum.REGION.getCode(), lastAreaIdList, null, null); + List authWarRegionUserIdList = mapAuthStoreUserDTO(regionUserAuthMappingList, allWarRegionUserIdList, notIncludeRegionUserAuthMappingList); + return authWarRegionUserIdList; + } + + + private List getAllWarRegionAuthUserIdList(List roleUserByRoleId, List roleUserByRoleAuth) { + List allUserIdList= new ArrayList<>(); + List masterUserList = ListUtils.emptyIfNull(roleUserByRoleId).stream() + .map(SysRoleVO::getEnterpriseDOs) + .flatMap(Collection::stream) + .map(EnterpriseUserDO::getUserId) + .collect(Collectors.toList()); + List roleAllUserList = ListUtils.emptyIfNull(roleUserByRoleAuth).stream() + .map(SysRoleVO::getEnterpriseDOs) + .flatMap(Collection::stream) + .map(EnterpriseUserDO::getUserId) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(masterUserList)) { + allUserIdList.addAll(masterUserList); + } + if (CollectionUtils.isNotEmpty(roleAllUserList)) { + allUserIdList.addAll(roleAllUserList); + } + return ListUtils.emptyIfNull(allUserIdList) + .stream() + .distinct() + .collect(Collectors.toList()); + + } + + + private List mapAuthStoreUserDTO( + List regionUserAuthMappingList, + List allWarRegionUserIdList, + List notIncludeRegionUserAuthMappingList) { + //组装全部的人员信息 + List authUserIdList = new ArrayList<>(); + //组装拥有所有门店信息的人 + if (CollectionUtils.isNotEmpty(allWarRegionUserIdList)) { + authUserIdList.addAll(allWarRegionUserIdList); + } + //组装配置了区域权限的人(除了不包含子区域可视化范围) + List regionUserIdList = ListUtils.emptyIfNull(regionUserAuthMappingList).stream() + .map(UserAuthMappingDO::getUserId) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(regionUserIdList)) { + authUserIdList.addAll(regionUserIdList); + } + //组装配置了区域权限的人(不包含子区域可视化范围) + List notIncludeRegionUserIdList = ListUtils.emptyIfNull(notIncludeRegionUserAuthMappingList).stream() + .map(UserAuthMappingDO::getUserId) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(notIncludeRegionUserIdList)) { + authUserIdList.addAll(notIncludeRegionUserIdList); + } + //去除重复数据 + List distinctUserIdList = ListUtils.emptyIfNull(authUserIdList).stream() + .distinct() + .collect(Collectors.toList()); + return distinctUserIdList; + } + + +}