package ink.wgink.interfaces.position;

import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.dtos.position.PositionSimpleDTO;
import ink.wgink.pojo.dtos.position.PositionUserDTO;
import ink.wgink.pojo.pos.PositionPO;
import ink.wgink.pojo.result.SuccessResultList;

import java.util.List;

/**
 * When you feel like quitting. Think about why you started
 * 当你想要放弃的时候，想想当初你为何开始
 *
 * @ClassName: IPositionUser
 * @Description: 职位用户
 * @Author: WangGeng
 * @Date: 2021/1/24 12:59
 * @Version: 1.0
 **/
public interface IPositionUserBaseService {

    /**
     * 用户ID列表
     *
     * @param positionId 用户组ID
     * @return
     */
    List<String> listUserId(String positionId);

    /**
     * 用户ID列表
     *
     * @param positionIds 用户组ID列表
     * @return
     */
    List<String> listUserId(List<String> positionIds);

    /**
     * 用户ID列表
     *
     * @param positionId
     * @param userIds
     * @return
     */
    List<String> listUserIdByPositionIdAndUserIds(String positionId, List<String> userIds);

    /**
     * 用户ID列表
     *
     * @param positionIds
     * @param userIds
     * @return
     */
    List<String> listUserIdByPositionIdsAndUserIds(List<String> positionIds, List<String> userIds);

    /**
     * 职位ID列表
     *
     * @param userId
     * @return
     */
    List<String> listPositionIdByUserId(String userId);

    /**
     * 职位ID列表
     *
     * @param userIds
     * @return
     */
    List<String> listPositionIdByUserIds(List<String> userIds);


    /**
     * 分页用户组用户
     *
     * @param positionId
     * @param page
     * @return
     */
    SuccessResultList<List<PositionUserDTO>> listPage(String positionId, ListPage page);

    /**
     * 职位列表
     *
     * @param userId 用户ID列表
     * @return
     */
    List<PositionPO> listPositionPOByUserId(String userId);

    /**
     * 职位列表
     *
     * @param userIds
     * @return
     */
    List<PositionPO> listPositionPOByUserIds(List<String> userIds);

    /**
     * 职位列表（简单）
     *
     * @param positionPOs
     * @return
     */
    List<PositionSimpleDTO> listSimple(List<PositionPO> positionPOs);


}
