package com.yonge.cooleshow.biz.dal.dao;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yonge.cooleshow.biz.dal.dto.search.EmployeeSearch;
import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
import com.yonge.cooleshow.biz.dal.vo.EmployeeVo;
import com.yonge.cooleshow.biz.dal.vo.StudentVo;
import org.apache.ibatis.annotations.Param;

import com.yonge.cooleshow.auth.api.entity.SysRole;
import com.yonge.cooleshow.auth.api.entity.SysUser;
import com.yonge.cooleshow.biz.dal.entity.Employee;
import com.yonge.toolset.mybatis.dal.BaseDAO;

public interface EmployeeDao extends BaseDAO<Long, Employee> {
    /***
     * 平台用户管理查询详情
     * @author liweifan
     * @param: userId
     * @updateTime 2022/3/25 13:36
     * @return: com.yonge.cooleshow.biz.dal.entity.Employee
     */
    EmployeeVo detail(@Param("id") Long id);
    /***
     * 平台用户管理分页查询
     * @author liweifan
     * @param: page
     * @param: employeeSearch
     * @updateTime 2022/4/6 13:58
     * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Employee>
     */
    List<EmployeeVo> selectPage(@Param("page") IPage page, @Param("param") EmployeeSearch employeeSearch);

    /***
     * 插入用户表
     * @author liweifan
     * @param: user
     * @updateTime 2022/3/25 11:30
     * @return: long
     */
    int insertSysUser(SysUser user);

    /***
     * 修改用户表
     * @author liweifan
     * @param: user
     * @updateTime 2022/3/25 11:30
     * @return: long
     */
    int updateSysUser(SysUser user);
    /**
     * 获取用户权限列表
     *
     * @param userId
     * @return
     */
    List<Long> queryUserRole(Long userId);
    /**
     * 批量新增用户角色
     *
     * @param id
     * @param roleIds
     */
    void batchAddEmployeeRole(@Param("userId") Long id, @Param("roleIds") List<Long> roleIds);
    /**
     * 删除用户角色
     *
     * @param userId
     */
    void delEmployeeRole(Long userId);
    /***
     * 通过手机号查询用户
     * @author liweifan
     * @param: phone
     * @updateTime 2022/3/25 14:21
     * @return: com.yonge.cooleshow.auth.api.entity.SysUser
     */
    SysUser querySysUserByPhoneAndLock(@Param("phone") String phone);
    /**
     * 根据手机号查询对象
     *
     * @param phone
     * @return
     */
    SysUser querySysUserByPhone(@Param("phone") String phone);
    /**
     * 根据手机号查询对象
     *
     * @param id
     * @return
     */
    SysUser querySysUserById(@Param("id") Long id);
    /**
     * @Author: Joburgess
     * @Date: 2019/9/25
     * 修改用户离职日期
     */
    int updateUserDemissionDate(@Param("userID") Long userID);





    /**
     * 获取用户信息
     *
     * @param userIds
     * @return
     */
    List<SysUser> getUsers(@Param("userIds") List<Long> userIds);

    /**
     * 批量添加角色和菜单关系
     *
     * @param roleId  角色id
     * @param menuIds 菜单集合
     */
    int batchInsertRoleMenu(@Param("roleId") Long roleId, @Param("menuIds") List<Integer> menuIds);

    /**
     * 根据菜单id删除
     */
    int delRoleMenu(@Param("menuIds") List<Integer> menuIds);

    /**
     * 添加角色信息
     *
     * @param sysRole
     * @return
     */
    int insertSysRole(SysRole sysRole);

}
