package com.dxhy.admin.sys.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dxhy.admin.sys.entity.SysUserEntity;
import com.dxhy.admin.sys.model.UserModel;

/**
 * 系统用户
 *
 * @author jiaohongyang
 */
@Mapper
public interface SysUserDao extends BaseMapper<SysUserEntity> {

    /**
     * 查询用户的所有权限
     *
     * @param userId
     *            用户ID
     * @return 返回用户信息
     */
    List<String> queryAllPerms(@Param("userId") Long userId);

    /**
     * 查询用户的所有菜单ID
     *
     * @param userId
     *            用户ID
     * @return 返回用户关联id信息
     */
    List<Long> queryAllMenuId(@Param("userId") Long userId);

    /**
     * 根据登录名和用户id查询用户信息
     *
     * @param loginname
     *            登录名
     * @param userId
     *            用户id
     * @return 返回用户信息
     */

    SysUserEntity queryUserName(@Param("loginname") String loginname, @Param("userId") Long userId);

    /**
     * 根据菜单id 查询用户信息
     *
     * @param menuId
     *            菜单id
     * @return 用户信息
     */

    SysUserEntity queryUserMenu(@Param("menuId") Long menuId);

    /**
     * 根据角色id 查询用户信息
     *
     * @param roleId
     *            角色id
     * @return 用户信息
     */

    SysUserEntity queryUserRole(@Param("roleId") Long roleId);

    /**
     * 根据业务单元编码查询用户信息
     *
     * @param businessId
     *            业务单元编码
     * @return 用户信息
     */

    SysUserEntity queryUserBussiness(@Param("businessId") Long businessId);

    /**
     * 根据集团编码查询用户信息
     *
     * @param company
     *            集团编码
     * @return 用户信息
     */
    List<UserModel> getUserCompanyList(@Param("company") String company);

    /**
     * 根据邮箱获取用户信息
     *
     * @param principal
     *            邮箱地址
     * @return 用户信息
     */
    SysUserEntity queryUserByEmail(@Param("email") String principal);

}
