package com.ym.mec.auth.service;

import com.ym.mec.auth.api.dto.SysUserInfo;
import com.ym.mec.auth.api.entity.SysUser;
import com.ym.mec.common.entity.ImUserModel;
import com.ym.mec.common.service.BaseService;

public interface SysUserService extends BaseService<Integer, SysUser> {

	/**
	 * 根据用户名查询对象
	 * @param username
	 * @return
	 */
	SysUser queryByUsername(String username);

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

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

	/**
	 * 根据用户名获取系统用户详细信息
	 * @param username
	 * @return
	 */
	SysUserInfo queryUserInfoByUsername(String username);

	/**
	 * 根据手机号获取系统用户详细信息
	 * @param phone
	 * @return
	 */
	SysUserInfo queryUserInfoByPhone(String phone);

	/**
	 * 根据手机号获取系统用户详细信息
	 * @param phone
	 * @return
	 */
	SysUserInfo queryUserInfoByPhoneAndClient(String phone,String client);

	/**
	 * 删除指定用户
	 * @param id
	 * @return
	 */
	boolean deleteById(Integer id);

	/**
	 * 根据用户手机号修改密码
	 * @param mobile
	 * @param password
	 */
	void updatePassword(String mobile, String password);

	/**
	 * 新增用户
	 * @param sysUser
	 * @return
	 */
    Integer add(SysUser sysUser);

	/**
	 * 获取用户基本信息
	 * @param userId
	 * @return
	 */
	ImUserModel getBasic(Integer userId);

	/**
	 * 修改用户基本信息
	 * @param sysUser
	 */
    void updateBaseInfo(SysUser sysUser);

	/**
	 * 获取用户基本信息
	 * @param userId
	 * @return
	 */
	SysUser queryUserInfo(Integer userId);

	/**
	 * 上线时初始化用户数据
	 * @param phone
	 * @param clientId
	 * @return
	 */
	SysUserInfo initUser(String phone,String clientId);

	/**
	 * 刷新token
	 * @param sysUser
	 */
    void refreshImToken(SysUser sysUser);

	/**
	 * 保存student数据
	 * @param userId
	 */
	void saveStudent(Integer userId);
	
	/**
	 * 保存teacher数据
	 * @param userId
	 */
	void saveTeacher(Integer userId);
	
	Integer getLesseeOrganId();
}