package com.keao.edu.user.dao;

import com.keao.edu.auth.api.entity.SysUser;
import com.keao.edu.auth.api.enums.UserLockFlag;
import com.keao.edu.common.dal.BaseDAO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface SysUserDao extends BaseDAO<Integer, SysUser> {

	/**
	 * 根据手机号查询对象
	 * @param phone
	 * @return
	 */
	SysUser queryByPhone(String phone);

	Integer lockUser(@Param("userId") Integer userId);

	/**
	 * 根据手机号查询对象
	 * @param phone
	 * @return
	 */
	SysUser queryByPhoneAndClient(@Param("phone") String phone, @Param("client") String client);

	/**
	 * 根据状态查询
	 * @param status
	 * @return
	 */
	List<SysUser> queryByStatus(UserLockFlag status);

	/**
	 * 删除用户角色
	 * @param userId
	 */
	void delEmployeeRole(Integer userId);

	/**
	 * 删除用户角色
	 * @param userIds
	 */
	void batchDelEmployeeRole(@Param("userIds") Set<Integer> userIds);

	/**
	 * 批量新增用户角色
	 * @param id
	 * @param roles
	 */
	void batchAddEmployeeRole(@Param("userId") Integer id, @Param("roles") Integer roles);
	/**
	 * 批量新增用户角色
	 * @param userIds
	 * @param roles
	 */
	void batchAddEmployeeRoles(@Param("userIds") Set<Integer> userIds, @Param("roles") Integer roles);

	/**
	 * 获取用户角色
	 * @param userId
	 * @return
	 */
	Integer queryRoleIds(Integer userId);

	/**
	 * 修改userType
	 * @param userId
	 * @param userType
	 */
	void updateUserType(@Param("userId") Integer userId, @Param("userType") String userType);

	/**
	 * @describe 根据部门获取用户
	 * @author Joburgess
	 * @date 2020.07.16
	 * @param organId:
	 * @return com.keao.edu.auth.api.entity.SysUser
	 */
	SysUser getWithOrgan(@Param("organId") Integer organId);

	/**
	 * @describe 获取手机号对应的用户
	 * @author Joburgess
	 * @date 2020.07.27
	 * @param phones:
	 * @return java.util.List<com.keao.edu.auth.api.entity.SysUser>
	 */
	List<SysUser> getWithPones(@Param("phones") List<String> phones);
}
