package com.cool.store.service;

import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.entity.UserAuthMappingDO;
import com.cool.store.enums.UserRoleEnum;

import java.util.List;
import java.util.Map;

/**
 * describe:
 *
 * @author wxp
 * @date 2020/11/11
 */
public interface UserAuthMappingService {

    /**
     * 获取用户权限
     * @param userId
     * @return
     */
    List<UserAuthMappingDO> listUserAuthMappingByUserId(String userId);

    /**
     * 获取用户授权的所有区域id
     * @param userId
     * @return
     */
    List<String> getAuthRegionIdAndSubRegionIdByUserId(String userId);

    /**
     * 获取用户授权的所有门店id
     * @param userId
     * @return
     */
    List<String> getAuthStoreIdAndSubRegionIdByUserId(String userId);

    /**
     * 提供 根据职位 意向区域  查  对应人的接口  同时返回人名字
     * @param userRoleEnum
     * @param wantShopAreaId
     * @return
     */
    EnterpriseUserDO getUserByRoleEnumAndWantShopAreaId(UserRoleEnum userRoleEnum, Long wantShopAreaId);

    /**
     * 获取有区域权限和职位 的人
     * @param userRoleEnum
     * @param regionId
     * @return
     */
    EnterpriseUserDO getUserByRoleEnumAndRegionId(UserRoleEnum userRoleEnum, Long regionId);

    List<EnterpriseUserDO> getAllUserByRoleEnumAndRegionId(UserRoleEnum userRoleEnum, Long regionId);

    /**
     * 获取有区域权限和职位 所有人
     * @param userRoleEnum
     * @param regionId
     * @return
     */
    List<EnterpriseUserDO> getUserByRoleEnumAndRegionIdList(UserRoleEnum userRoleEnum, Long regionId);
    /**
     * 跟进角色和战区获取用户id
     * @param roleIds
     * @param regionId
     * @return
     */
    Map<String, List<String>> getUserIdByRoleIdAndRegionId(List<String> roleIds, Long regionId);

    /**
     * 根据 人  查 这个人管辖区域  对应的意向区域省市code   团队线索
     * @param userId
     * @return
     */
    List<Long> listWantShopAreaIdByUserId(String userId);

    /**
     * 【铺位1】所属战区没有战区经理、营运经理和大区经理，开店负责人展示【王磊】
     * @return
     */
    String getShopManagerUserId();


    /**
     * 找督导，如果小区没有督导则带入战区经理，没有战区经理则带入大区经理、如果都没有则带入王磊
     * @param supervision
     * @param regionId
     * @return
     */
    EnterpriseUserDO hierarchicalSearch(UserRoleEnum supervision, Long regionId);

}
