package com.platform.modules.sys.dao;

import com.baomidou.mybatisplus.annotations.SqlParser;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.platform.modules.sys.entity.SysUserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统用户
 */
@Mapper
public interface SysUserDao extends BaseMapper<SysUserEntity> {
	
	/**
	 * 查询用户的所有权限
	 * @param userId  用户ID
	 */
	List<String> queryAllPerms(Long userId);
	
	/**
	 * 查询用户的所有菜单ID
	 */
	List<Long> queryAllMenuId(Long userId);
	
	/**
	 * 根据用户名，查询系统用户
	 */
	@SqlParser(filter = true)
	SysUserEntity queryByUserName(String username);

	@SqlParser(filter = true)
	SysUserEntity selectById(Long userId);
	
	/**
	 * 根据手机号，查询系统用户
	 */
	@SqlParser(filter = true)
	SysUserEntity queryByMobile(String mobile);

	/**
	 * 查询用户信息是否存在
	 * @param userId 	用户数据ID
	 * @param username 用户名
	 * @param mobile    手机号
	 * @param email     邮箱
	 * @return
	 */
	List<SysUserEntity> checkExist(@Param("userId") Long userId, @Param("username") String username, @Param
			("mobile") String mobile, @Param("email") String email);

	/**
	 * 用户列表分页查询
	 * @param page page
	 * @param username 用户名
	 * @param tenantId 机构ID
	 * */
	List<SysUserEntity> selectUserPage(Pagination page, @Param("username") String username, @Param("tenantId") Long tenantId);

}
