package com.qiaoba.module.system.service;

import com.qiaoba.api.system.entity.SysUser;
import com.qiaoba.api.system.entity.param.SysUserParam;
import com.qiaoba.api.system.entity.vo.SysUserVo;
import com.qiaoba.api.system.service.SysUserApiService;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
import com.qiaoba.module.system.templates.SysUserExport;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户管理 服务层
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023-04-23 20:33:37
 */
public interface SysUserService extends SysUserApiService {

    /**
     * 条件查询列表
     *
     * @param sysUserParam 查询参数
     * @return list
     */
    List<SysUser> selectList(SysUserParam sysUserParam);

    /**
     * 条件分页查询列表
     *
     * @param param     查询参数
     * @param pageQuery 分页参数
     * @return list
     */
    TableDataInfo<SysUser> selectPageList(SysUserParam param, PageQuery pageQuery);

    /**
     * 分页查询用户列表
     *
     * @param pageQuery 分页信息
     * @param param     查询条件
     * @return list
     */
    TableDataInfo<SysUserVo> selectVoPageList(SysUserParam param, PageQuery pageQuery);

    /**
     * 分页查询角色已绑定的用户列表
     *
     * @param pageQuery 分页信息
     * @param param     查询条件
     * @return list
     */
    TableDataInfo<SysUserVo> selectAllocatedList(SysUserParam param, PageQuery pageQuery);

    /**
     * 分页查询角色未绑定的用户列表
     *
     * @param pageQuery 分页信息
     * @param param     查询条件
     * @return list
     */
    TableDataInfo selectUnAllocatedList(SysUserParam param, PageQuery pageQuery);


    /**
     * 查询导出数据
     *
     * @param param 查询条件
     * @return list
     */
    List<SysUserExport> selectExportData(@Param("param") SysUserParam param);

}
