package com.cool.store.mapper;

import com.cool.store.entity.EnterpriseUserRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface EnterpriseUserRoleMapper {
    /**
     * 主键查询
     */
    EnterpriseUserRole selectByPrimaryKey( @Param("id") String id);

    /**
     * 根据userId查询该用户与钉钉角色、职位的映射关系
     */
    List<EnterpriseUserRole> selectDingRoleMappingByUserId( @Param("userId") String userId);

    List<EnterpriseUserRole> listsUserRoleByUserIdListAndSource( @Param("userIds") List<String> userIds, @Param("source") String source);

    List<EnterpriseUserRole> selectMdtRoleMappingByUserId( @Param("userId") String userId);
    /**
     * 根据角色id查询
     */
    List<EnterpriseUserRole> selectByRoleId( @Param("roleId") String roleId);

    /**
     * 根据userId查询
     */
    List<Long> selectIdsByUserId( @Param("userId") String userId);

    List<Long> selectIdsByUserIds( @Param("userIds") List<String> userIds);

    /**
     * 根据用户id列表查询
     */
    List<EnterpriseUserRole> selectByUserIdList( @Param("userIds") List<String> userIds);

    EnterpriseUserRole selectByUserIdAndRoleId( @Param("userId") String userId, @Param("roleId") String roleId);
    /**
     * 获取某个角色的用户
     *
     * @param userIds
     * @param roleId
     * @return
     */
    List<String> selectUserIdByRoleId( @Param("userIds") List<String> userIds, @Param("roleId") String roleId);
    /**
     * 获取用户有哪些角色
     *
     * @param userId
     * @return
     */
    List<Long> selectRoleIdsByUserId( @Param("userId") String userId);

    /**
     * 获取角色下的用户
     *
     * @param roleId
     * @return
     */
    List<String> selectUserIdsByRoleId( @Param("roleId") String roleId);

    /**
     * 获取角色列表下的用户
     *
     * @param roleIds
     * @return
     */
    List<String> selectUserIdsByRoleIdList( @Param("roleIds") List<Long> roleIds);

    List<String> getUserIdsByRoleIds( @Param("roleIds")List<String> roleIds, @Param("userIds")List<String> userIds);

    List<Long> getUserRoleIds( @Param("userId") String userId);

    List<String> getUserIdsByRoleIdList( @Param("roleIdList")List<Long> roleIdList);

}
