package com.njcn.user.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.user.pojo.dto.UserRoleLogsDTO;
import com.njcn.user.pojo.dto.excel.UserExcel;
import com.njcn.user.pojo.po.User;
import com.njcn.user.pojo.vo.UserVO;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author hongawen
 * @since 2021-12-13
 */
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据部门ids集合查询是否有用户绑定
     *
     * @param ids   部门id集合
     * @param state 用户状态
     * @return 绑定的结果
     */
    List<User> selectDeptsId(@Param("ids") List<String> ids, @Param("state") Integer state);

    /**
     * 分页查询用户数据
     *
     * @param page         分页数据
     * @param queryWrapper 查询条件
     * @param state        用户状态
     * @param type         用户类型
     * @return 用户数据
     */
    Page<UserVO> page(@Param("page") Page<UserVO> page, @Param("ew") QueryWrapper<UserVO> queryWrapper, @Param("state") Integer state, @Param("type") Integer type);

    /**
     * 审核用户列表
     *
     * @param page         分页数据
     * @param queryWrapper 查询条件
     * @return 用户数据
     */
    Page<UserVO> checkPage(@Param("page") Page<UserVO> page, @Param("ew") QueryWrapper<UserVO> queryWrapper);

    /**
     * 查询需要导出的用户数据
     *
     * @param queryWrapper 查询条件
     * @return 查询出的用户数据
     */
    List<UserExcel> queryExportUser(@Param("ew") QueryWrapper<UserExcel> queryWrapper);

    /**
     * 根据用户id获取用户信息列表
     * @param ids 用户id集合
     * @return 用户信息列表
     */
    List<UserVO> getUserVOByIdList(@Param("ids") List<String> ids);

    /**
     * 查询用户角色列表
     */
    List<UserRoleLogsDTO> userRoleList();
}
